[an error occurred while processing this directive]
|
uint8_t crcbuf_hi, crcbuf_lo;void upd_crc(uint8_t b) {
uint8_t carry = crcbuf_hi ^ b;
carry = carry ^ (uint8_t) (carry >> 4);
crcbuf_hi = crcbuf_lo ^ (uint8_t) (carry << 4) ^ (uint8_t) (carry >> 3);
crcbuf_lo = carry ^ (uint8_t) (carry << 5);
}
upd_crc:
lds r25,crcbuf_hi
eor r25,r24
mov r24,r25
swap r24
andi r24,0x0f
eor r25,r24
mov r24,r25
swap r24
andi r24,0xf0
lds r18,crcbuf_lo
eor r24,r18
mov r18,r25
lsr r18
lsr r18
lsr r18
eor r24,r18
sts crcbuf_hi,r24
mov r24,r25
swap r24
lsl r24
andi r24,0xe0
eor r24,r25
sts crcbuf_lo,r24
ret
E-mail: info@telesys.ru