打印

modebus crc校验结果高八位出错是什么情况

[复制链接]
1146|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cjb326|  楼主 | 2018-5-22 08:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
          shuzu=fashu;
           fashu[0]=add;
          fashu[1]=0x03;
          fashu[2]=add1/256;          //起始地址高8位
          fashu[3]=add1%256;
          fashu[4]=0x00;                  //数据长度高8位
          fashu[5]=sjlong;                  //数据长度低8位
          ty=6;
          crc=crc_chk(shuzu,ty);
          fashu[6]=crc%256;
          fashu[7]=crc/256;
          for(ty=0;ty<8;ty++)
          {
           S2BUF=fashu[ty];
           while(busy2==0);
           busy2=0;
          }







unsigned int crc_chk(unsigned char*shuzu1, unsigned char cd)
{
int j ;
unsigned int reg=0xffff;
while(cd--)
{
  reg^=*shuzu1++;
  for(j=0;j<8;j++)
  {
   if(reg&0x01)
   {
    reg=(reg>>0x01)^0xa001;
   }
   else
   {
    reg=reg>>0x01;
   }
  }
}
return reg;
校验结果,有时正确,有时高八位加一是怎么了,请教各位了?                       

沙发
兰天白云| | 2018-6-4 13:53 | 只看该作者
CRC16校验有各种写法,很难判断你的问题出在哪?建议用查表的方法试试

使用特权

评论回复
板凳
Cjy_JDxy| | 2018-6-4 14:24 | 只看该作者
感觉不会有时对有时错呀。要对全对,要错全错

使用特权

评论回复
地板
hotpower| | 2018-12-30 00:10 | 只看该作者
本帖最后由 hotpower 于 2018-12-30 00:41 编辑

http://www.hotpage.com.cn/hotcrc

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝