crc8.a51

来自「8位沉余CRC校验算法,8051汇编语言编写。」· A51 代码 · 共 67 行

A51
67
字号
NAME	CRC8

?PR?_crc8ccitt?CRC8  SEGMENT CODE
	PUBLIC	_crc8ccitt

	RSEG  ?PR?_crc8ccitt?CRC8
_crc8ccitt:
	USING	0
;***********************************************************************
; The following snippet of code was taken from 8052.com (and modified)
;***********************************************************************
;	Calculate CRC-8 Values.  Uses The CCITT-8 Polynomial, Expressed As
;	X^8 + X^5 + X^4 + 1
;  Description:
;	Calculates Value In Acc Into The Running CRC In 'B', Using The 
;	Calculation Method (Slower But Smaller).
;
;  Entry Requirements:
;	Acc Has Value To Add To CRC
;	'B' Contains Running CRC Value
;
;  On Exit:
;	'B' Has Updated CRC Value
;
;  Affected:
;	PSW.CY, B
;
;  Stack:
;	3 Bytes, Not Including Called Routines
;
;  Comments:
;	None
;
		push	acc			; Save Acc
		push	b
		push	0			; Save R0
		push	acc			; Save Value
		mov	r0,#8			; Number Bits In Byte
		mov	b,R7
		mov	a,R5;
lp1:		xrl	a,b			; Calculate CRC
		rrc	a			; Move To Carry
		mov	a,b			; Get The Last CRC Value
		jnc	lp2			; Skip If Data == 0
		xrl	a,#18h			; Update The CRC Value
;
lp2:		rrc	a			; Position The New CRC
		mov	b,a			; Store The New CRC
		pop	acc			; Get The Remaining Bits
		rr	a			; Position The Next Bit
		push	acc			; Save The Remaining Bits
		djnz	r0,lp1			; Repeat For 8 Bits
;
		MOV  	R7,b

		pop	acc			; Clean Up Stack
		pop	0			; Recover R0
		pop	b
		pop	acc			; Recover Acc




?C0001:
	RET  	

	END

⌨️ 快捷键说明

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