主页 |技术支持 |        C语言计算CRC-16示例
搜索技术文档
技术小组
联系电话 023-68925251
技术咨询/销售联系人
李廷18983235529
定制与样品服务联系人
李廷18983235529
C语言计算CRC-16示例
2023-09-27 11:09:18
//本实验在8位单片机环境中测试通过,其它平台可能需要稍加修改
//调用方法:calculate_crc(DATA,8);
//预先在DATA数组里存入数据,8代表有8个字节要计算
//Modbus通常只算前面6个字节,即:calculate_crc(DATA,6);

//CRC-16计算,下面为全部代码

//*z_p指向发送缓冲区的首字节,z_message_length是要计算的字节数。
void calculate_crc(unsigned char*z_p, unsigned char z_message_length)
{
unsigned int CRC=0xffff ;
unsigned int next;
unsigned int carry;
unsigned int ncrc;
while (z_message_length--)
{
next=(unsigned short)*z_p;
CRC^=next;
for (ncrc = 0; ncrc < 8; ncrc++)
{
carry = CRC&1;
CRC>>= 1;
if (carry)
{
CRC^=0xA001;
}
}
z_p++;
}
CRCH=CRC/256;  //返回值高位
CRCL=CRC%256;  //返回值低位
}

//代码示例结束

与我们取得联系?

专业研制、生产各类高精度、高速率位移传感器、运动姿态传感器、空间定位系统
关于诺柏恩 了解更多 >
重庆诺柏恩自动化技术有限公司成立于2011年7月,生产场地位于巴南区界石镇宁辉工业园2栋6-7,面积800m2,研发部门位于云水苑数字产业园A310。专业研制、生产各类高精度、高速率位移传感器、运动姿态传感器、空间定位系统。广泛应用于自动化系统、工业机床、自动化产品、检测和科研设备。
Copyright @ 重庆诺柏恩自动化技术有限公司 2023. All rights reserved. 备案号:渝ICP备2023007840号
技术支持:诺比信