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

📄 crc1.s43

📁 采用msp430中汇编语言编写的
💻 S43
字号:
#include          "msp430x14x.h" 
#define		TAB_FLASH	0300h

;******************************************************************************
            RSEG    CSTACK                  ; System stack
            DS      0   
;------------------------------------------------------------------------------
            RSEG    CODE                    ; Program code
;------------------------------------------------------------------------------
RESET       mov.w   #SFE(CSTACK),SP         ; Initialize stackpointer
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop WDT
	    
;将表项添入flash中	                                                ;													  
	    CALL    #SET_TAB
Mainloop    mov	    #0500h,R15
	    mov	    #1,R4
	    mov.b   #49,0(R15)
	;    mov.b   #2,1(R15)
	;    mov.b   #3,2(R15)
	;    mov.b   #6,3(R15)
	    CALL    #TRANSMIT_CRC
	    NOP
            jmp	    Mainloop
	    

;------------------------------------------------------------------------------
SET_TAB
;------------------------------------------------------------------------------
	     ;首先将表格存入RAM中
	     mov    #0300h,R15
	     ;0--64
	     mov    #00000h,0(R15)
	     mov    #01021h,2(R15)
	     mov    #02042h,4(R15)
	     mov    #03063h,6(R15)
	     mov    #04084h,8(R15)
	     mov    #050A5h,10(R15)
	     mov    #060C6h,12(R15)
	     mov    #070E7h,14(R15)
	     mov    #08108h,16(R15)
	     mov    #09129h,18(R15)
	     mov    #0A14Ah,20(R15)
	     mov    #0B16Bh,22(R15)
	     mov    #0C18Ch,24(R15)
	     mov    #0D1ADh,26(R15)
	     mov    #0E1CEh,28(R15)
	     mov    #0F1EFh,30(R15)
	     mov    #01231h,32(R15)
	     mov    #00210h,34(R15)
	     mov    #03273h,36(R15)
	     mov    #02252h,38(R15)
	     mov    #052B5h,40(R15)
	     mov    #04294h,42(R15)
	     mov    #072F7h,44(R15)
	     mov    #062D6h,46(R15)
	     mov    #09339h,48(R15)
	     mov    #08318h,50(R15)
	     mov    #0B37Bh,52(R15)
	     mov    #0A35Ah,54(R15)
	     mov    #0D3BDh,56(R15)
	     mov    #0C39Ch,58(R15)
	     mov    #0F3FFh,60(R15)
	     mov    #0E3DEh,62(R15)
	     	add	#64,R15
	     ;65--128
	     mov    #02462h,0(R15)
	     mov    #03443h,2(R15)
	     mov    #00420h,4(R15)
	     mov    #01401h,6(R15)
	     mov    #064E6h,8(R15)
	     mov    #074C7h,10(R15)
	     mov    #044A4h,12(R15)
	     mov    #05485h,14(R15)
	     mov    #0A56Ah,16(R15)
	     mov    #0B54Bh,18(R15)
	     mov    #08528h,20(R15)
	     mov    #09509h,22(R15)
	     mov    #0E5EEh,24(R15)
	     mov    #0F5CFh,26(R15)
	     mov    #0C5ACh,28(R15)
	     mov    #0D58Dh,30(R15)
	     mov    #03653h,32(R15)
	     mov    #02672h,34(R15)
	     mov    #01611h,36(R15)
	     mov    #00630h,38(R15)
	     mov    #076D7h,40(R15)
	     mov    #066F6h,42(R15)
	     mov    #05695h,44(R15)
	     mov    #046B4h,46(R15)
	     mov    #0B75Bh,48(R15)
	     mov    #0A77Ah,50(R15)
	     mov    #09719h,52(R15)
	     mov    #08738h,54(R15)
	     mov    #0F7DFh,56(R15)
	     mov    #0E7FEh,58(R15)
	     mov    #0D79Dh,60(R15)
	     mov    #0C7BCh,62(R15)
	     	add	#64,R15
	     ;129--192
	     mov    #048C4h,0(R15)
	     mov    #058E5h,2(R15)
	     mov    #06886h,4(R15)
	     mov    #078A7h,6(R15)
	     mov    #00840h,8(R15)
	     mov    #01861h,10(R15)
	     mov    #02802h,12(R15)
	     mov    #03823h,14(R15)
	     mov    #0C9CCh,16(R15)
	     mov    #0D9EDh,18(R15)
	     mov    #0E98Eh,20(R15)
	     mov    #0F9AFh,22(R15)
	     mov    #08948h,24(R15)
	     mov    #09969h,26(R15)
	     mov    #0A90Ah,28(R15)
	     mov    #0B92Bh,30(R15)
	     mov    #05AF5h,32(R15)
	     mov    #04AD4h,34(R15)
	     mov    #07AB7h,36(R15)
	     mov    #06A96h,38(R15)
	     mov    #01A71h,40(R15)
	     mov    #00A50h,42(R15)
	     mov    #03A33h,44(R15)
	     mov    #02A12h,46(R15)
	     mov    #0DBFDh,48(R15)
	     mov    #0CBDCh,50(R15)
	     mov    #0FBBFh,52(R15)
	     mov    #0EB9Eh,54(R15)
	     mov    #09B79h,56(R15)
	     mov    #08B58h,58(R15)
	     mov    #0BB3Bh,60(R15)
	     mov    #0AB1Ah,62(R15)
	     	add	#64,R15
	     ;193--256
	     mov    #06CA6h,0(R15)
	     mov    #07C87h,2(R15)
	     mov    #04CE4h,4(R15)
	     mov    #05CC5h,6(R15)
	     mov    #02C22h,8(R15)
	     mov    #03C03h,10(R15)
	     mov    #00C60h,12(R15)
	     mov    #01C41h,14(R15)
	     mov    #0EDAEh,16(R15)
	     mov    #0FD8Fh,18(R15)
	     mov    #0CDECh,20(R15)
	     mov    #0DDCDh,22(R15)
	     mov    #0AD2Ah,24(R15)
	     mov    #0BD0Bh,26(R15)
	     mov    #08D68h,28(R15)
	     mov    #09D49h,30(R15)
	     mov    #07E97h,32(R15)
	     mov    #06EB6h,34(R15)
	     mov    #05ED5h,36(R15)
	     mov    #04EF4h,38(R15)
	     mov    #03E13h,40(R15)
	     mov    #02E32h,42(R15)
	     mov    #01E51h,44(R15)
	     mov    #00E70h,46(R15)
	     mov    #0FF9Fh,48(R15)
	     mov    #0EFBEh,50(R15)
	     mov    #0DFDDh,52(R15)
	     mov    #0CFFCh,54(R15)
	     mov    #0BF1Bh,56(R15)
	     mov    #0AF3Ah,58(R15)
	     mov    #09F59h,60(R15)
	     mov    #08F78h,62(R15)
	     	add	#64,R15
	     ;257--320
	     mov    #09188h,0(R15)
	     mov    #081A9h,2(R15)
	     mov    #0B1CAh,4(R15)
	     mov    #0A1EBh,6(R15)
	     mov    #0D10Ch,8(R15)
	     mov    #0C12Dh,10(R15)
	     mov    #0F14Eh,12(R15)
	     mov    #0E16Fh,14(R15)
	     mov    #01080h,16(R15)
	     mov    #000A1h,18(R15)
	     mov    #030C2h,20(R15)
	     mov    #020E3h,22(R15)
	     mov    #05004h,24(R15)
	     mov    #04025h,26(R15)
	     mov    #07046h,28(R15)
	     mov    #06067h,30(R15)
	     mov    #083B9h,32(R15)
	     mov    #09398h,34(R15)
	     mov    #0A3FBh,36(R15)
	     mov    #0B3DAh,38(R15)
	     mov    #0C33Dh,40(R15)
	     mov    #0D31Ch,42(R15)
	     mov    #0E37Fh,44(R15)
	     mov    #0F35Eh,46(R15)
	     mov    #002B1h,48(R15)
	     mov    #01290h,50(R15)
	     mov    #022F3h,52(R15)
	     mov    #032D2h,54(R15)
	     mov    #04235h,56(R15)
	     mov    #05214h,58(R15)
	     mov    #06277h,60(R15)
	     mov    #07256h,62(R15)
	     	add	#64,R15
	     ;321--384
	     mov    #0B5EAh,0(R15)
	     mov    #0A5CBh,2(R15)
	     mov    #095A8h,4(R15)
	     mov    #08589h,6(R15)
	     mov    #0F56Eh,8(R15)
	     mov    #0E54Fh,10(R15)
	     mov    #0D52Ch,12(R15)
	     mov    #0C50Dh,14(R15)
	     mov    #034E2h,16(R15)
	     mov    #024C3h,18(R15)
	     mov    #014A0h,20(R15)
	     mov    #00481h,22(R15)
	     mov    #07466h,24(R15)
	     mov    #06447h,26(R15)
	     mov    #05424h,28(R15)
	     mov    #04405h,30(R15)
	     mov    #0A7DBh,32(R15)
	     mov    #0B7FAh,34(R15)
	     mov    #08799h,36(R15)
	     mov    #097B8h,38(R15)
	     mov    #0E75Fh,40(R15)
	     mov    #0F77Eh,42(R15)
	     mov    #0C71Dh,44(R15)
	     mov    #0D73Ch,46(R15)
	     mov    #026D3h,48(R15)
	     mov    #036F2h,50(R15)
	     mov    #00691h,52(R15)
	     mov    #016B0h,54(R15)
	     mov    #06657h,56(R15)
	     mov    #07676h,58(R15)
	     mov    #04615h,60(R15)
	     mov    #05634h,62(R15)
	     	add	#64,R15
	     ;385--448
	     mov    #0D94Ch,0(R15)
	     mov    #0C96Dh,2(R15)
	     mov    #0F90Eh,4(R15)
	     mov    #0E92Fh,6(R15)
	     mov    #099C8h,8(R15)
	     mov    #089E9h,10(R15)
	     mov    #0B98Ah,12(R15)
	     mov    #0A9ABh,14(R15)
	     mov    #05844h,16(R15)
	     mov    #04865h,18(R15)
	     mov    #07806h,20(R15)
	     mov    #06827h,22(R15)
	     mov    #018C0h,24(R15)
	     mov    #008E1h,26(R15)
	     mov    #03882h,28(R15)
	     mov    #028A3h,30(R15)
	     mov    #0CB7Dh,32(R15)
	     mov    #0DB5Ch,34(R15)
	     mov    #0EB3Fh,36(R15)
	     mov    #0FB1Eh,38(R15)
	     mov    #08BF9h,40(R15)
	     mov    #09BD8h,42(R15)
	     mov    #0ABBBh,44(R15)
	     mov    #0BB9Ah,46(R15)
	     mov    #04A75h,48(R15)
	     mov    #05A54h,50(R15)
	     mov    #06A37h,52(R15)
	     mov    #07A16h,54(R15)
	     mov    #00AF1h,56(R15)
	     mov    #01AD0h,58(R15)
	     mov    #02AB3h,60(R15)
	     mov    #03A92h,62(R15)
	     	add	#64,R15
	     ;449--512
	     mov    #0FD2Eh,0(R15)
	     mov    #0ED0Fh,2(R15)
	     mov    #0DD6Ch,4(R15)
	     mov    #0CD4Dh,6(R15)
	     mov    #0BDAAh,8(R15)
	     mov    #0AD8Bh,10(R15)
	     mov    #09DE8h,12(R15)
	     mov    #08DC9h,14(R15)
	     mov    #07C26h,16(R15)
	     mov    #06C07h,18(R15)
	     mov    #05C64h,20(R15)
	     mov    #04C45h,22(R15)
	     mov    #03CA2h,24(R15)
	     mov    #02C83h,26(R15)
	     mov    #01CE0h,28(R15)
	     mov    #00CC1h,30(R15)
	     mov    #0EF1Fh,32(R15)
	     mov    #0FF3Eh,34(R15)
	     mov    #0CF5Dh,36(R15)
	     mov    #0DF7Ch,38(R15)
	     mov    #0AF9Bh,40(R15)
	     mov    #0BFBAh,42(R15)
	     mov    #08FD9h,44(R15)
	     mov    #09FF8h,46(R15)
	     mov    #06E17h,48(R15)
	     mov    #07E36h,50(R15)
	     mov    #04E55h,52(R15)
	     mov    #05E74h,54(R15)
	     mov    #02E93h,56(R15)
	     mov    #03EB2h,58(R15)
	     mov    #00ED1h,60(R15)
	     mov    #01EF0h,62(R15)
	
	     jmp   FW_END
             ;put the segment data into flash
             ;first:clear flash
             DINT
             mov     #WDTPW+WDTHOLD,&WDTCTL
             push   R15
             push   R9
             mov    #TAB_FLASH,R15         ;segment n-1 start address
             mov    #0A502h,&FCTL1             ;Erase=1
             mov    #0A500h,&FCTL3             ;Lock=enable
             mov    #0,0(R15)                 ;erase flash segment
wait_bf      bit    #1,&FCTL3                ;wait for busy flag
             JNZ    wait_bf
             mov    #0A510h,&FCTL3             ;Lock=unable
             mov    #0A500h,&FCTL1             ;Erase=0
             
             ;write data
             mov    #0300h,R9
write_loop   mov    #0A500h,&FCTL3            ;Lock=enable
             mov    #0A540h,&FCTL1            ;WRT=1
             mov    0(R9),0(R15)
             INCD   R9
             INCD   R15
             cmp    #0500h,R9                
             JLO    write_loop
             mov    #0A510h,&FCTL3             ;Lock=unable
             mov    #0A500h,&FCTL1             ;Erase=0,WRT=0
             pop    R9
             pop    R15
FW_END       RET
;-----------------------------------------------------------------------------
	    
;------------------------------------------------------------------------------
TRANSMIT_CRC    ;计算相应数据的CRC码
;------------------------------------------------------------------------------
	;假设已知待发射数据的首地址为R15,数据长度为R4
	;余式高位字节存于R14的高位字节,低位字节位于R14的低位字节
	mov	#0200h,R14
	mov.b	1(R15),1(R14)
	mov.b	2(R15),0(R14)
	mov.b	0(R15),R5
	mov	R15,R6
	add	R4,R6
	clr.b	0(R6)
	clr.b	1(R6)
T_CRC_LOOP
	bic	#0FF00h,R5
	RLA	R5
	add	#TAB_FLASH,R5
	xor.b	0(R5),0(R14)
	xor.b	1(R5),1(R14)
	mov.b	1(R14),R5
	inc	R15
	cmp	R6,R15
	jhs	T_CRC_END
	mov.b	0(R14),1(R14)
	mov.b	2(R15),0(R14)
	jmp	T_CRC_LOOP

T_CRC_END	
	mov.b	1(R14),0(R15)
	mov.b	0(R14),1(R15)
	incd	R4
	RET	
;------------------------------------------------------------------------------

;------------------------------------------------------------------------------
            COMMON  INTVEC                  ; Interrupt vectors
;------------------------------------------------------------------------------
            ORG     RESET_VECTOR            ;
            DW      RESET                   ; 
            END                             ;     

⌨️ 快捷键说明

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