⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 update.s43

📁 msp430例程
💻 S43
字号:
;闪灯和TX使能不同单板是不同的。
;
;
#include  "msp430x13x.h"

PUBLIC Update
          org   0f000h
          db  00h,00h,00h,00h,00h,00h,00h,01h,02h,03h,04h,05h,06h,07h,00h,10h,20h,30h
          org   0f018h
          db  00h,01h,02h,03h,04h,05h,06h,06h,06h,06h,06h,06h,06h,06h,07h,07h,07h,07h          
          org   0f030h
          db  00h,0bbh,00h,0ddh,00h,0d6h,00h,0ddh,00h,0d0h,00h,0c2h,00h,0bfh,00h,0c6h,00h,0bbh,00h,0aah
;//const unsigned char P1OUTDATA[18] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x00,0x10,0x20,0x30};
;//const unsigned char P3OUTDATA[18]= {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x07};
          
Update    
Mainloop    ;nop
;********* Read the ID ******************
            mov.w   0f400h,210h           ;和c程序对应
            cmp.b   #055h,0f402h
            jz      idok
            mov.w   #00h,210h
            nop
idok            
;************************************************************            
TX1         nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TX1                     ; Jump is TX buffer not ready     
        ;    bic.b   #40,&P3OUT           ;SET TX_EN LOW 
            mov.b   #75h,&TXBUF0         ; TX -> RXed character               
            
TX2         nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TX2                     ; Jump is TX buffer not ready        
            mov.b   210h,&TXBUF0

TX3         nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TX3                     ; Jump is TX buffer not ready        
            mov.b   211h,&TXBUF0

TX4         nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TX4                     ; Jump is TX buffer not ready        
            mov.b   #0dh,&TXBUF0
;**************************************************************
lop2        nop        
            mov.w   #0f000h,R10             ;初始指针设置为0f000h
RxNextFrame
            nop
            xor.b   #004h,&P5OUT            ; 闪灯          
            mov.b   #00h,r8                 ;将R8清0
            mov.b   #0ffh,r9                ;
            
RX1         nop
            bit.b   #URXIFG0,&IFG1          ;USART0 RX buffer not set?
            MOV     #WDTPW+WDTCNTCL,&WDTCTL              
            jz      RX1                     ;wait
            bic.b   #URXIFG0,&IFG1          ;clear RX flag            
          
            mov.b   &RXBUF0,200H(R8)        ;将串口数据保存到200h开始的数据区
            xor.b   &RXBUF0,r9
            
            inc.b   r8                      ;接收数据个数加一
            cmp.b   #14,r8                  ;比较是否已经接收到14个数据
            jnz     RX1                     ;若没有则继续接收
            
            
            cmp.b   #0aah,200h
            jnz     RxNextFrame   
            cmp.b   210h,201h           ;id号
            jnz     RxNextFrame            
            cmp.b   211h,202h
            jnz     RxNextFrame            
            cmp.b   #0dh,20ch
            jnz     RxNextFrame            
            cmp.b   #00h,r9               ;CRC
            jnz     RxNextFrame
            
            cmp.b   #47h,203h           ;判断是否是擦除指令
            jz      EraseFlash
            cmp.b   #59h,203h           ;判断是否是数据
            jz      ProgramFlash
            cmp.b   #6Ah,203h           ;判断是否是地址
            jz      MoveIndex
            cmp.b   #74h,203h           ;判断是否是重启命令
            jz      Reset
            jmp     RxNextFrame         ;否则,认定此帧无效,等待下一帧
EraseFlash  nop
            mov.w   #0a502h,&FCTL1
            mov.w   #0a500h,&FCTL3
            mov.w   #0ffh,0(R10)
            mov.w   #0a500h,&FCTL1
            mov.w   #0a510h,&FCTL3             
            mov.b   #47h,R11            
            jmp     TX5
;*************--------------***************            
ProgramFlash
            nop
            mov.w   #0a540h,&FCTL1
            mov.w   #0a504h,&FCTL3
            mov.w   204h,0(R10)
            mov.w   206h,2(R10)
            mov.w   208h,4(R10)
            mov.w   20ah,6(R10)
            mov.w   #0a500h,&FCTL1
            mov.w   #0a510h,&FCTL3
            add.w   #08h,R10
            mov.b   #59h,R11
            jmp     TX5
;**************--------------*************
MoveIndex   mov.w   204h,R10            ;将编程指针存入R10
            mov.b   #6Ah,R11            ;R11用于回复中的字节
            jmp     TX5                 ;回复
;****************-------------*************
Reset       MOV     #0000,&WDTCTL 
            jmp     RxNextFrame                        
;*******************************************
TX5         ;WDTCTL = WDTPW + WDTCNTCL;    //clear wdt     
            MOV     #WDTPW+WDTCNTCL,&WDTCTL 
            bis.b   #40,&P3OUT          ;SET TX_EN High Disable TX 
TXLop       nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TXLop                 ; Jump is TX buffer not ready                        

            bic.b   #40,&P3OUT          ;SET TX_EN LOW             
            mov.b   #0aah,&TXBUF0         ; TX -> RXed character               
            
TX6         nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TX6                     ; Jump is TX buffer not ready        
            mov.b   210h,&TXBUF0

TX7         nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TX7                     ; Jump is TX buffer not ready        
            mov.b   211h,&TXBUF0

TX8         nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TX8                     ; Jump is TX buffer not ready        
            mov.b   R11,&TXBUF0          

TX9         nop
            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
            jz      TX9                     ; Jump is TX buffer not ready        
            mov.b   #0dh,&TXBUF0          
            
            jmp     RxNextFrame
;*************************************************                                                
            
;TX10         nop
;            nop
;            bit.b   #TXEPT,&U0TCTL          ; USART0 TX buffer ready?
;            jz      TX10                     ; Jump is TX buffer not ready        
; ;           
;            mov.b   1ffh(R8),&TXBUF0                       
;            
;            dec.b   r8
;            cmp.b   #00h,r8
;            jnz     TX5
;            
;            
;            mov     0ffffh,r5
;            nop
;Pulse       nop
;            nop
;            dec.w   r5                   ; Decrement TOS
;            nop
;            jnz     Pulse                   ; Delay done?
;            nop          
;
;            bis.b   #001h,&P3OUT            ; Set P1.0
;            
;            mov     0ffffh,r5
;            nop
;Pulse1       nop
;            nop
;            dec.w   r5                   ; Decrement TOS
;            nop
;            jnz     Pulse1                   ; Delay done?
;            nop          
;                         
;            jmp     lop2
;       
;          ret;

;org   0f200h     ;自升级功能代码长度请勿超过一个段
;    db  0ffh
          end 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -