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

📄 crc16_29t.asm

📁 用于51单片机的CRC16 校验程序
💻 ASM
字号:
;
        CRCH    DATA  30H
        CRCL    DATA  31H
        CRCT    DATA  32H
        ORG     0H
BEGIN:
        MOV     CRCH,#0H
        MOV     CRCL,#0H
        MOV     R1,#34H
        MOV     34H,#01BH
        MOV     35H,#0E2H
        MOV     36H,#0DBH
        ACALL   CRC1B
        INC     R1
        ACALL   CRC1B
        INC     R1
        ACALL   CRC1B
        SJMP    BEGIN
;;;;;;;;;;;;;;;;;;;;;;;;
;半字节CRC校验程序
;CRC结果 : CRCH CRCL
;数据指针: R1
;占用:B A R0 R2
;;;;;;;;;;;;;;;;;;;;;;;;
CRC1B:
;保存现场
;        PUSH    ACC
;        PUSH    B
;        MOV     A,R0
;        PUSH    ACC
;计算   CRCA = CRCH xor Dat[i]
         MOV  A,@R1
         XRL  CRCH,A           ;CRCH = CRCH xor Dat[i]
;计算   CRCB = (CRCA div 16)  xor (CRCA and $0f0)
         MOV  A,CRCH
         SWAP A
         XRL  A,CRCH
         ANL  A,#0FH
         MOV  CRCT,A
;CrcH:= CrcL xor (CRCT*16) xor (((CRCA and $f0)  xor CRCT )div 8)  ;
         SWAP A
         XRL  A,CRCL
         MOV  B,A               ;B = CrcL xor (CRCT*16);
         MOV  A,CRCH
         ANL  A,#0F0H
         MOV  CRCL,A            ;CRCL=(CRCA and $f0)
         XRL  A,CRCT
         RL   A
         SWAP A
         ANL  A,#1FH            ;DIV 8
         XRL  A,B            ;
         MOV  CRCH,A
;CrcL:= (CRCA and $f0) xor ($21*(CRCB));
         MOV  A,CRCT
         XRL  CRCL,A
         SWAP A
         CLR  C
         RLC  A
         XRL  CRCL,A               ;($21*(TempH))

;恢复现场
;        POP  ACC
;        MOV  R0,A
;        POP  B
;        POP  ACC
        RET

⌨️ 快捷键说明

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