打印

请问大家CRC算法还是用以前网上流传的那种吗?

[复制链接]
1584|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mbutterfly|  楼主 | 2010-4-15 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
typedef   
unsigned char   
uchar;
typedef   
unsigned int     
uint;


code uchar crcbuff [] = { 0x00,0x00,0x00,0x00,0x06,0x0d,0xd2,0xe3}; //
待发送数据
uint crc;                  
// CRC 码
void main(void)
{

uchar *ptr;

crc = 0;               
// CRC
初值

ptr = crcbuff;              
//
指向待发送数据

crc = crc16l(ptr,8);            


while(1);
}
uint crc16l(uchar *ptr,uchar len)      
// ptr
为数据指针,len 为数据长度
{

uchar i;

while(len--)

{
      
for(i=0x80; i!=0; i>>=1)
   
{
        
if((crc&0x8000)!=0)

{


crc<<=1;

crc^=0x1021;

}        
//1-1  

         
else

{

crc<<=1;                  
   
//1-2

}


     
if((*ptr&i)!=0)


{

crc^=0x1021;      
//1-3  


}   


}
   
ptr++;

}

return(crc);
}



还是用除法来做呢?

相关帖子

沙发
zc3909| | 2010-4-16 09:17 | 只看该作者
我一般是查表

使用特权

评论回复
板凳
mbutterfly|  楼主 | 2010-4-16 16:05 | 只看该作者
谢谢,我也打算用查表的方式来做了,好像除了移位异或和查表之外没有其他途径的了

使用特权

评论回复
地板
chunyang| | 2010-4-16 17:49 | 只看该作者
去看本栏目的相关老帖以及侃单片机栏目的相关老帖。

使用特权

评论回复
5
mbutterfly|  楼主 | 2010-4-20 08:29 | 只看该作者
恩,谢谢chunyang老师。

使用特权

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

本版积分规则

个人签名:想接点活,本人熟练使用各种型号单片机,熟悉各种频率RFID协议。

67

主题

4888

帖子

10

粉丝