发表于:2003-08-25 08:41:00
楼主
在as下编辑一个crc校验的程序如下:请问为什么得不到正确的结果:
变量定义:
pData DINT var_input
CRC16LO USINT var
CRC16HI USINT var
CL USINT var
CH USINT var
Temp USINT[255] var_dynamic
nLen USINT var
n1 USINT var
n2 USINT var
TempCRC INT var
CRCResult INT var_output
程序:
;CRC16 caculate
Temp access pData
CRC16LO=$ff
CRC16HI=$ff
CL=$01
CH=$A0
loop n1=0 to nLen-1 do
CRC16LO=CRC16LO xor Temp[n1]
CRCResult=CRC16HI
CRCResult=shl(CRCResult,8)
CRCResult=CRCResult+CRC16LO
loop n2=0 to 7 do
CRCResult=CRC16HI
CRCResult=shl(CRCResult,8)
CRCResult=CRCResult+CRC16LO
TempCRC=CRCResult
CRCResult=shr(CRCResult,1)
CRC16HI=byte(CRCResult)
CRC16HI=byte(shr(CRCResult,8))
if ((TempCRC and $0001)=1) then
CRC16HI=CRC16HI xor CH
CRC16LO=CRC16LO xor CL
endif
endloop
endloop
CRCResult=CRC16HI
CRCResult=shl(CRCResult,8)
CRCResult=CRCResult+CRC16LO
;end block
请指正里面的错误: