其他分享
首页 > 其他分享> > crc16 modbus校验亲测可用

crc16 modbus校验亲测可用

作者:互联网

unsigned short crc(unsigned char addr)
{
  int i,j;
  unsigned tmp = 0xffff;
  unsigned char buff[6] = {0, 0x03, 0x00, 0x00, 0x00, 0x02};
  buff[0] = addr;

  for(i=0; i<6; i++)
  {
    tmp = buff[i]^tmp;
    for(j=0; j<8; j++)
    {
      if(tmp&0x01)
      {
        tmp = tmp>>1;
        tmp = tmp^0xA001;
      }
      else
      {
        tmp = tmp>>1;
      }
    }
  }
  return tmp;
}

 

返回的是16位的数

校验低八位 :tmp&0xFF;

校验高八位:tmp>>8;

标签:tmp,char,crc16,0x00,unsigned,校验,modbus,buff,亲测
来源: https://www.cnblogs.com/wd520/p/12511199.html