校验结果高八位出错

[复制链接]
1068|6
手机看帖
扫描二维码
随时随地手机跟帖
dingy|  楼主 | 2021-10-10 11:10 | 显示全部楼层 |阅读模式
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;
校验结果,有时正确,有时高八位加一是怎么了,请教各位了?     

使用特权

评论回复
renyaq| | 2021-10-10 11:12 | 显示全部楼层
CRC16校验有各种写法

使用特权

评论回复
morrisk| | 2021-10-10 11:15 | 显示全部楼层
很难判断你的问题出在哪?

使用特权

评论回复
supernan| | 2021-10-10 11:20 | 显示全部楼层
建议用查表的方法试试

使用特权

评论回复
xxrs| | 2021-10-10 11:23 | 显示全部楼层
感觉不会有时对有时错呀。

使用特权

评论回复
dengdc| | 2021-10-10 11:25 | 显示全部楼层
要对全对,要错全错

使用特权

评论回复
dingy|  楼主 | 2021-10-10 11:27 | 显示全部楼层
其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

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

本版积分规则

745

主题

10920

帖子

6

粉丝