📄 crc16_29t.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 + -