17 lines
509 B
C
17 lines
509 B
C
static __inline__ uint8_t
|
|
_crc8_ccitt_update(uint8_t __crc, uint8_t __data)
|
|
{
|
|
uint8_t __i, __pattern;
|
|
__asm__ __volatile__ (
|
|
" eor %0, %4" "\n\t"
|
|
" ldi %1, 8" "\n\t"
|
|
" ldi %2, 0x07" "\n\t"
|
|
"1: lsl %0" "\n\t"
|
|
" brcc 2f" "\n\t"
|
|
" eor %0, %2" "\n\t"
|
|
"2: dec %1" "\n\t"
|
|
" brne 1b" "\n\t"
|
|
: "=r" (__crc), "=d" (__i), "=d" (__pattern)
|
|
: "0" (__crc), "r" (__data));
|
|
return __crc;
|
|
}
|