返回> 网站首页 

Modbus CRC 算法

yoours2009-10-28 21:06:41 阅读 1120

简介一边听听音乐,一边写写文章。


转自http://www.cnitblog.com/zfly/archive/2005/12/13/5334.html
 
void CRC16(BYTE *Array, BYTE *Rcvbuf,unsigned int Len)
{
  unsigned int IX,IY,CRC;
  CRC=0xFFFF;//set all 1

  if (Len<=0)
  {
    CRC = 0;
  }else{
    Len--;
    for (IX=0;IX<=Len;IX++)
    {
      CRC=CRC^(unsigned int)(Array[IX]);
      for(IY=0;IY<=7;IY++)
      {
        if ((CRC&1)!=0)
        {
          CRC=(CRC>>1)^0xA001;
        }else{
          CRC=CRC>>1;
        }
      }
    }
  }

 
  Rcvbuf[0] = (CRC & 0xff00)>>8;//高位置
  Rcvbuf[1] = (CRC & 0x00ff);//低位置
}
微信小程序扫码登陆

文章评论

1120人参与,0条评论