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

📄 crc16_zcynew.asm

📁 用于51单片机的CRC16 校验程序
💻 ASM
字号:
;
        CRCH    DATA  30H
        CRCL    DATA  31H

        ORG     0H
BEGIN:
        MOV     CRCH,#0H
        MOV     CRCL,#0H
        MOV     R1,#32H
        MOV     32H,#01BH
        MOV     33H,#0E2H
        MOV     34H,#0DBH
        ACALL   CRC1B
        mov     R1,#33H
        ACALL   CRC1B
        mov     R1,#34H
        ACALL   CRC1B
        SJMP    BEGIN
;;;;;;;;;;;;;;;;;;;;;;;;
;半字节CRC校验程序
;CRC结果 : CRCH CRCL
;数据指针: R1
;CRC结果指针:R0 = #CRCH
;占用:B A R0
;;;;;;;;;;;;;;;;;;;;;;;;
CRC1B:
;保存现场
;        PUSH    ACC
;        PUSH    B
;        MOV     A,R0
;        PUSH    ACC
;计算   R0 = da = CRCH xor Dat[i]
         MOV  A,@R1
         XRL  A,CRCH
         MOV  R0,A
;计算   R6 = Temp = (db div 16)  xor (db and $0f0)
         MOV  B,A
         SWAP A
         XRL  A,B
         ANL  A,#0FH
         MOV  R6,A
;CrcH:= CrcL xor (Temp*16+Temp div 8) xor ((db and $f0) div 8)
         SWAP A
         MOV  C,ACC.7
         MOV  ACC.0,C           ;Temp*16+Temp div 8
         XRL  A,CRCL
         MOV  CRCH,A            ;CRCH = CrcL xor (Temp*16+Temp div 8);
         MOV  A,R0
         ANL  A,#0F0H
         MOV  CRCL,A            ;CRCL=(db and $f0)
         SWAP A
         CLR  C
         RLC  A                 ;DIV 8
         XRL  CRCH,A            ;
         MOV  A,R6
         MOV  B,A
         SWAP A
         RLC  A
         XRL  A,B               ;($21*(TempH))
         XRL  CRCL,A
;恢复现场
;        POP  ACC
;        MOV  R0,A
;        POP  B
;        POP  ACC
        RET

⌨️ 快捷键说明

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