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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM