先是单片机编译器上的C源码
#include <reg52.h>
unsigned char exz[4]={0x31,0x30,0x34,0x32};
unsigned int crc;
unsigned int CRC12(unsigned char *ptr,unsigned char len)
{
unsigned char i;
unsigned char j;
j = 0;
while(len)
{
/*多项式除法*/
if(*ptr & (0x80>>j)) //如果该位为1
crc |= 0x01; //则在余数尾部添1否则添0 |=相当于CRC=CRC或0x01 或算法
if(crc >= 0x1000)
crc ^= 0x180D; //^=是异或
crc <<= 1;
j++;
if(j == 8)
{
j = 0;
ptr++;
len--;
}
}
/*对后面添加的12个0做处理*/
for(i=0; i<12; i++)
{
if(crc >= 0x1000)
crc ^= 0x180D;
crc <<= 1;
}
crc >>= 1;
return(crc);
}
void main(void)
{
unsigned int cc;
cc=CRC12(exz,4);
while(1);
}
CRC12检验DELPHI源码
最新推荐文章于 2023-02-28 15:02:55 发布
本文介绍了一个基于单片机编译器的C源码示例,该示例展示了如何实现CRC12校验码的计算。通过使用位操作和循环结构,此算法能够对输入的数据进行校验码计算,并提供了完整的主函数来验证CRC12的正确性。
4513

被折叠的 条评论
为什么被折叠?



