CRC校验程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用法,把需要计算CRC的所有数据存放在一个数组中,比如a[10],a的最后两个元素要保留
比如有10个数据,那就把a定义为12个元素的数组,把10个数据全部存放在a里面,后两个未用.
然后,调用我写的程序
bit Flag=0;
Flag = Crc_Check(a) ; //括号里面写的就是数组名字
这一句执行完后, a的后两个元素就是CRC检验码了,高八位在前,低八位在后
bit Crc_Check(ubyt *RSdata)
/***********功能说明********************************************
*发送时,首先将要发送的三个数据放在一个数组中
*然后调用crc_check(数组名),则crc会自动放入指定数组的后两个单元中
*接收时,将收到的5个数据放在一个数组中
*然后调用crc_check(数组名),若返回1表示校验成功,数据可用
***************************************************************/
{
uint crc; //定义16位的CRC
ubyt i,j;
crc = 0xffff;
for( i=0; i<3; i++ ) //数组前三个元素是真实数据
{
crc ^= *(RSdata+i);
for(j=8;j>0;j--)
{
if(crc & 0x0001) crc = (crc>>1) ^ 0xA001;
else crc >>= 1;
}
}
i=crc>>8;j=crc;
if((i==*(RSdata+3))&&(j==*(RSdata+4)))
return 1; //CRC校验成功,返回1
else //CRC校验失败,将CRC存入数组
{
*(RSdata+3) = i; //存放CRC的高八位;
*(RSdata+4) = j; //CRC低八位
return 0;
}
}