crc16_zcynew4.asm
来自「用于51单片机的CRC16 校验程序」· 汇编 代码 · 共 50 行
ASM
50 行
;
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 + -
显示快捷键?