CRC校验(100分)

  • 主题发起人 主题发起人 keven
  • 开始时间 开始时间
K

keven

Unregistered / Unconfirmed
GUEST, unregistred user!
我在编写一个485的通讯程序,需在单片机上实现CRC-CCITT16检验(X^16+X^12+X^5+1),
查过一些有关资料(先查一个512个字节的表,再做异或运算),但校验出错,请各位高手
指点。
 
PASCAL码:(我是8005,你照你的种子改就行)
function CRC(var Data: array of byte; ds, dNumber: integer): word;
var uCRC: word;
d0, d1: byte;
i: integer;
begin
uCRC := 0;
d0 := 0;
for i := ds to dNumber - 1 do
begin
d1 := d0;
d0 := Data;
if uCRC and $8000 = 0 then uCRC := uCRC shl 1
else uCRC := uCRC and $7fff shl 1 xor $8005;
uCRC := uCRC xor (d1 shl 8 + d0);
end;
CRC := uCRC;
end;

 
难点是汇编怎么实现?不过还是谢了
 
别开玩笑了,那段PASCAL码你硬是翻不过来?
51的程序我这里也有,不过你要是自己先做一做吧。
 
我用C做了没问题,但是翻成51还是不行。种子是3字节(X^16+X^12+X^5+1)。
 
接受答案了.
 
后退
顶部