69,371
社区成员
发帖
与我相关
我的任务
分享
unsigned int u16CRC_Reg = 0xffff;
for(int iDataLenght = 0; iDataLenght < 8; iDataLenght++)
{
//Step2:把数据帧中的第一个字节(开始)的8位与CRC寄存器
// 中的低字节进行异或运算,结果存回CRC寄存器
u16CRC_Reg = u16CRC_Reg ^ u8InData[iDataLenght];
u16CRC_Temp = 0x0000;
//Step3:将CRC寄存器向右移一位,最高位填以0,最低位移出并检测
//Step4:如果最低位为0,重复第3步(下一次移位);
// 如果最低位为1,将CRC寄存器与一个预设的固定值(0A001H)进行异或运算
for(int iByte = 0; iByte < 8; iByte++)
{
if(u16CRC_Reg & 0x0001)
{
u16CRC_Reg = (u16CRC_Reg >> 1) ^ CRC_Mul;
}
else
u16CRC_Reg = u16CRC_Reg >> 1;
}
}
cout<<hex<<u16CRC_Reg<<endl;