68 lines
1.8 KiB
NASM
68 lines
1.8 KiB
NASM
;------------------------------------------------------------------------------
|
|
; CRC8 computing functions
|
|
; based on Application Note 27 from Dallas Semiconductor
|
|
; http://avr-mcu.dxp.pl
|
|
; e-mail: radek@dxp.pl
|
|
; (c) Radoslaw Kwiecien
|
|
;------------------------------------------------------------------------------
|
|
|
|
;------------------------------------------------------------------------------
|
|
; Data segment
|
|
;------------------------------------------------------------------------------
|
|
.dseg
|
|
_crc : .byte 1
|
|
;------------------------------------------------------------------------------
|
|
; Code segment
|
|
;------------------------------------------------------------------------------
|
|
.cseg
|
|
;------------------------------------------------------------------------------
|
|
; Update crc value
|
|
;------------------------------------------------------------------------------
|
|
CRC8Update:
|
|
push r16
|
|
push r17
|
|
push r18
|
|
push r16
|
|
|
|
ldi r17, 8
|
|
CRC8L:
|
|
lds r18, _crc
|
|
eor r16, r18
|
|
ror r16
|
|
lds r16, _crc
|
|
brcc CRC8zero
|
|
ldi r18, 0x18
|
|
eor r16, r18
|
|
|
|
CRC8zero:
|
|
ror r16
|
|
sts _crc, r16
|
|
pop r16
|
|
lsr r16
|
|
push r16
|
|
dec r17
|
|
brne CRC8L
|
|
pop r16
|
|
pop r18
|
|
pop r17
|
|
pop r16
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
; Clear crc value
|
|
;------------------------------------------------------------------------------
|
|
CRC8Init:
|
|
push r16
|
|
ldi r16,0
|
|
sts _crc, r16
|
|
pop r16
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
; Copy crc value to r16
|
|
;------------------------------------------------------------------------------
|
|
GetCRC8:
|
|
lds r16, _crc
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
; End of crc8.asm file
|
|
;------------------------------------------------------------------------------
|