|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
请教一下积各位朋友,MODBUS rtu crc下面代码对吗? |
作者:gwsino 栏目:通信技术 |
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; } 但运行的结果与人家的结果不一样啊,急死我了啊,谢谢 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |