MODBUS常用的CRC16校验函数实测可用

MODBUS常用的CRC16校验,多项式A001,代码实测可用。

#include 
//A001
unsigned int CRC16(unsigned char *buf,unsigned char length)//CRC16计算  
{  
  unsigned char i;  
  unsigned int crc=0xFFFF;  
  while(length--)  
    for(crc^=*(buf++),i=0;i<8;i++)  
      crc=(crc&0x0001)?(crc>>1)^0xA001:crc>>1;  
  return crc;  
} 
int main () {
	printf("hello https://tool.lu/\n");
	
	unsigned char a[8]={0xFF,0x17, 00, 00, 00, 01, 00, 00};//待测数组
	
	unsigned int b=0;
	b= CRC16(a,6);
	
	printf("\r\n 本次CRC校验结果是:0x%02x",b);

	return 0;
}

你可能感兴趣的:(MODBUS常用的CRC16校验函数实测可用)