请教一个crc校验的问题 点击:730 | 回复:1



jimmyd

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2003年7月16日
发表于: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 请指正里面的错误:



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-08-25 08:41:00
1楼
我这里有一个应用成熟的例子,您可以比较一下. pData:UDINT;address of USINT array dataLen:USINT;length of array ;========================================= dData access pData CRC=$FFFF loop dataIndex = 0 to dataLen-1 do CRC = CRC xor dData[dataIndex] loop index = 0 to 7 do flag = CRC and $0001 CRC = LSR(CRC,1) if flag = $0001 then CRC = CRC xor $A001 endif endloop endloop

热门招聘
相关主题

官方公众号

智造工程师