User Guide
- 45
–
CRC8 sample code:
unsigned char CalcCRC8(unsigned char *Data)
// calc 8 bit CRC
{
unsigned char LoopCntr;
unsigned char CRC8;
unsigned char A;
unsigned char i;
CRC8 = 0;
// reset CRC8
for (i = 0; i < 8; i++){
// data loop
A = *Data++;
// get first data byte
for (LoopCntr = 0; LoopCntr < 8; L+, A >>= 1){
// 8 bit loop
if ((A ^ CRC8) & 0x01){
// test bit 0 of (OneWire.Data XOR
CRC8)
CRC8 ^= 0x18;
// toggle bits 3 and 4 of CRC8
CRC8 >>= 1;
// rotate right CRC8, 1 time
CRC8 |= 0x80;
// set bit 7 of CRC8
}else
CRC8 >>= 1;
// rotate right CRC8, 1 time
}
}
return CRC8;