打印
[uCOS/RTOS]

crc-8校验c算法

[复制链接]
978|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lgygary|  楼主 | 2015-8-4 16:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么下面的程序要异或的值是0x18?
这里我用网上下载的CRC计算软件设置为LSB得到的结果和下面的程序计算是一致的,
MSB和LSB的具体算法是怎样的?如果改为MSB那异或的值应该是多少了?

相关帖子

沙发
lgygary|  楼主 | 2015-8-4 16:33 | 只看该作者
/*g(x)=x8+x5+x4+1 100110001 数据反转LSB first*/
unsigned char calcrc_1byte(unsigned char abyte)
{
  unsigned char i,crc_1byte;
  crc_1byte=0;                /*设定crc_1byte初值为0*/
  for(i = 0; i < 8; i++)
{
         if(((crc_1byte^abyte)&0x01))
          {
                  crc_1byte^=0x18;
                         crc_1byte>>=1;
                         crc_1byte|=0x80;
          }
        else
          crc_1byte>>=1;
         
        abyte>>=1;
}
return crc_1byte;
}

使用特权

评论回复
板凳
lgygary|  楼主 | 2015-8-4 16:35 | 只看该作者
例如 0x55 计算的结果是0xe4

使用特权

评论回复
地板
mini1986| | 2015-8-6 09:36 | 只看该作者
还真没有详细看过crc的算法,都是直接拷过来用的......惭愧啊......

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝