打印

crc16的问题

[复制链接]
1597|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chuandaoxy|  楼主 | 2012-2-7 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在使用超声波液位计对他的校验甚是不解,函数有厂家提供如下,我得出的校验值和厂家老不一致?
厂家数据01 03 0000 0002 c40b   c40b是校验值,高低互换
我算出来是dbcd

#include <reg51.h>
#include <math.h>

#define uchar unsigned char
#define uint unsigned int

#define POLYNOME 0xA001
uint crc;
k[]={0x01,0x03,0x00,0x00,0x00,0x02};

uint  crc_ws(uchar *command, int len )
    {
        int i,j;

        crc=0xffff;
        for(j=0;j<len;j++)
        {
             crc=crc^command[j];
     
             for(i=0;i<8;i++)
        {   
            if((crc&0x0001)==1){
             crc=crc>>1;
             crc=crc^POLYNOME;
             }else{
             crc=crc>>1;
             }
          }
        }
     return(crc);
    }

main()
{ uint t;

   t=crc_ws(k,6);

   while(1)
   {}
}

相关帖子

沙发
icecut| | 2012-2-7 09:20 | 只看该作者
crc16这么简单?我没用过
你找个crc计算器算算

使用特权

评论回复
板凳
iwant| | 2012-2-7 10:36 | 只看该作者
************************************************************************************************************

嵌入式软件设计人员:2名
岗位要求:
1、电子、通信、自动控制等相关专业毕业,1年以上相关工作经验,通讯行业者优先;应届毕生生,有潜力者亦可考虑;
2、具备模拟电路,数字电路,C/C++语言,嵌入式系统,数据结构,软件工程等相关基础知识,熟悉基本仪器仪表设备的使用;
3、具有较强编程能力。精通C/C++语言,熟悉VC++2008开发环境;精通HCS12嵌入式系统编程、精通GBIP仪表自动化控制编程;
4、具有良好的英语能力,能熟练阅读本专业相关资料文档;
5、工作严谨,能吃苦耐劳,责任感强,有较的强团队合作精神;

*************************************************************************************************************

工作地点:武汉 联系:izhaopin@qq.com

使用特权

评论回复
地板
ningling_21| | 2012-2-7 14:20 | 只看该作者
LZ程序好像不对...

使用特权

评论回复
5
小嘿| | 2012-2-7 17:53 | 只看该作者
#define POLYNOME 0xA001  厂家是不是这个poly?
再一个注意数据大小端。。

使用特权

评论回复
6
海川先生| | 2013-3-7 20:12 | 只看该作者
c40b  keil中验证

使用特权

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

本版积分规则

855

主题

1044

帖子

4

粉丝