登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

请教一下积各位朋友,MODBUS rtu crc下面代码对吗?

作者:gwsino 栏目:通信技术
请教一下积各位朋友,MODBUS rtu crc下面代码对吗?
procedure ByteCrc(data:byte;var crc:word); //<--这个必须加入
VAR i:BYTE;
BEGIN
FOR i:=0 TO 7 DO
  BEGIN
   IF ((data and $01)XOR(crc AND $0001)<>0) THEN
    BEGIN
     crc:=crc shr 1;
     crc:= crc XOR $A001;
    END
   ELSE crc:=crc shr 1;
   data:=data shr 1; // this LINE is not ELSE and executed anyway.
  END;
END;

按此写出的C语言的代码为以下程序,请各位指正,谢谢
第一数组参数为校验的数据,后一个为要校验数据的大小即数据量
unsigned int cal_crc(unsigned CHAR vdata[],unsigned CHAR len)
{
  unsigned CHAR i,j;
  unsigned int crc=0xffff;
  if(len==0)
    return 0;
  for(i=0;i<len;i++)
   {
      crc^=vdata[i];
      for(j=0;j<8;j++)
       {
         if(crc&0x0001)
           {
            crc>>=1;
            crc^=0xA001;
            }
         else
            crc>>=1;
       }

   }
return  crc;
}
但运行的结果与人家的结果不一样啊,急死我了啊,谢谢



参与讨论
昵称:
讨论内容:
 
 
相关帖子
请哪位高手告诉我
请哪位高手帮忙
问chunyangAT指令中的问题?
求助-有关GPRS发送的问题!!(在线等)
询cx88168的替代IC及其功率
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号