crc16_r024.asm

来自「用于51单片机的CRC16 校验程序」· 汇编 代码 · 共 50 行

ASM
50
字号
;占用R0 B A 但超高速,24i
        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=DATS 
;占用:A B  @R0=CRCH  
;;;;;;;;;;;;;;;;;;;;;;;;
CRC1B:
;计算   CRCA = CRCH xor Dat[i]
         MOV  A,@R1
         XRL  A,CRCH
         MOV  B,A           ;CRCH = CRCH xor Dat[i]
;计算   CRCB = (CRCA div 16)  xor (CRCA and $0f0)
         SWAP A
         XRL  A,B
         MOV  CRCH,A
;CrcH:= CrcL xor (CRCT*16+CRCT div 8) xor ((CRCA and $f0) div 8);
         MOV  R0,#CRCH
         ANL  A,#0F0H
         RL   A
         XCHD A,@R0             ;A=$21*T  CRCT= T*16+T div 8
         XCH  A,@R0
         XRL  A,CRCL
         XCH  A,@R0             ;A= $21*T       CRCH= CrcL xor (CRCT*16+CRCT div 8) 
         MOV  CRCL,A
         MOV  A,B
         ANL  A,#0F0H
         XRL  CRCL,A            ;CrcL:= (CRCA and $f0) xor ($21*(CRCB));
         SWAP A
         RL   A
         XRL  CRCH,A
         RET  

⌨️ 快捷键说明

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