crc16的问题

[复制链接]
 楼主| 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程序好像不对...
小嘿 发表于 2012-2-7 17:53 | 显示全部楼层
#define POLYNOME 0xA001  厂家是不是这个poly?
再一个注意数据大小端。。
海川先生 发表于 2013-3-7 20:12 | 显示全部楼层
c40b  keil中验证
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

1044

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部

855

主题

1044

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部