在CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算。
CRC计算方法是:
1、 预置1个16位的寄存器为十六进制FFFF(全1),此寄存器为CRC寄存器
unsigned short wcrc = 0xFFFF;	//16位CRC寄存器预置
2、 把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的低八位相异或,把结果存放于CRC寄存器。
temp = *buffer & 0x00FF;	//将八位数据与crc寄存器亦或 buffer++;	//指针地址增加,指向下个数据 wcrc ^= temp;	//将数据存入crc寄存器
3、 把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检测右移后的移出位。
4、 如果移出位为零,则重复第三步(再次右移一位);如果移出位为1,CRC寄存器与多项式A001进行异或。
5、 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。
for (j = 0; j