冗余循环码(CRC)包含2个字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。
Rcvbuf[1]=(CRC&0x00ff); //低位置
①预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器。
{
计算CRC码的步骤为:
⑤重复步骤③和④,直到右移8次,这样整个8位数据全部进行了处理。
双子座行动攻略-GeminiRue(双子座行动)1.1 中文最新版
CRC=CRC>>1; //
unsignedint IX,IY,CRC;
⑥重复步骤②到⑤,进行下个8位数据的处理。
④如果最低位为0:重复第3步,再次右移一位;如果最低位为1:CRC寄存器与多项式A001(1010000000000001)进行异或运算。
CRC=0;
{
else
for(IX=0;IX<=Len;IX++)
CRC=(CRC>>1)^0xA001;
if((CRC&1)!=0)
}
CRC+=Rcvbuf[1];
unsignedshortcrc_16(unsignedchar*Array,unsignedchar*Rcvbuf,unsignedintLen)
{
⑦最后得到的CRC寄存器的值即为CRC码。
CRC=Rcvbuf[0]<<8;
Len--;
if(Len<=0)
CRC=0xFFFF;//setall1
for(IY=0;IY<=7;IY++)
Rcvbuf[0]=(CRC&0xff00)>>8;//高位置
CRC=CRC^(unsignedint)(Array[IX]);
}
③把寄存器的内容右移一位,用0填补最高位,检查最低位。
⑧将CRC码分成高8位和低8位,按低位在先,高位在后,将它们加到传送数据之后。
{
else
}
returnCRC;
}
②把第一个8位数据与16位CRC寄存器的低位相异或运算,把结果放于CRC寄存器。
在进行CRC码计算时只用8位数据位。起始位、停止位、奇偶校验位都不参与CRC码计算。
CRC-16(循环冗余错误校验)
直接法生成代码:
展开

不推广日赚100方法 信誉网赚
苹果手机打字录入赚钱
深圳代驾司机兼职
干啥兼职多
蛙来哒加盟利润高吗
兼职做游戏主播
金亚洲买彩票能赚钱吗
万利棋牌送38彩金
兼职会计求职怎么写
投币洗衣机怎么赚钱
赚钱是你的猪照片
连云港兼职招聘
手机网络兼职有没有
100玩比特币杠杆能赚多少
赚钱的手工艺品
赚钱项目?
注册就送钱微信提现的
带娃兼职赚钱吗
28游戏赚钱攻略
棋牌游戏救助金3元