调用程序: sum == CalcCRC8( &temp_string[1],(len-1) )
子程序:
/////////////////////按位校验 循环冗余校验
uint8_t CalcCRC8(uint8_t *ptr,uint8_t len) // ptr 为数据指针 len 为数据长度
{
uint8_t i;
uint8_t crc=0;
while(len--)
{
///////////////////////////////////////
i=0x80;
while(i!=0)
{
if(((crc&0x80)!= 0) && ((*ptr)&i)!= 0) //CRC最高位为1且校验bit为1
{
crc <<= 1;
}
else if(((crc&0x80)!= 0) && ((*ptr)&i) == 0) //CRC最高位为1且校验bit为0
{
crc <<= 1;
crc ^= 0x31;
}
else if(((crc&0x80) == 0) && ((*ptr)&i)!= 0) //CRC最高位为0且校验bit为1
{
crc <<= 1;
crc ^= 0x31;
}
else if(((crc&0x80) == 0) && ((*ptr)&i) == 0) //CRC最高位为0且校验bit为0
{
crc <<= 1;
}
i >>= 1;
}
ptr++;
}
return(crc);
}
眼眸繁星
泛舟湖上清波郎朗
随时随地看视频慕课网APP
相关分类