crc-16校验子程序,大侠进来看下 点击:486 | 回复:3



真言无忌

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 95回
  • 年度积分:0
  • 历史总积分:236
  • 注册:2003年4月24日
发表于:2008-03-22 07:46:00
楼主
怎么没有人理我啊,在线等啊,我按照变频器说明书提供的算法写的这个子程序,算出来的校验码和变频器说明书上给出校验码不一样,不知道错在哪里。请各位路过的大侠指点一二,现行谢过!
  帮忙看看有没有错。在cts7200上面就是算不出正确的值呢?
VAR_INPUT
pnt:DWORD;
num:BYTE;
END_VAR
VAR_OUTPUT
crco:WORD;
END_VAR
VAR
temp1:INT;
temp2:INT;
temp3:INT;
END_VAR
BEGIN
Network 1 
// 计算crc校验码;
LD     SM0.0
BTI    #num, #temp2
FOR    #temp1, +1, #temp2
LD     SM0.0
XORB   *#pnt, LB13
LD     SM0.0
INCD   #pnt
LD     SM0.0
FOR    #temp3, +1, +8
LD     SM0.0
SRW    LW12, 1
LD     SM1.1
XORW   16#A001, LW12
NEXT
NEXT
LD     SM0.0
SWAP   LW12
MOVW   LW12, #crco 



坤哥

  • 精华:0帖
  • 求助:0帖
  • 帖子:40帖 | 472回
  • 年度积分:0
  • 历史总积分:1123
  • 注册:2005年3月16日
发表于:2008-03-25 00:12:00
1楼
BU  不明白

信徒

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 290回
  • 年度积分:0
  • 历史总积分:328
  • 注册:2007年9月14日
发表于:2008-03-25 14:52:00
2楼
路过.留名

FENG.JEE

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2006年5月06日
发表于:2008-04-02 15:48:00
3楼
留一下C语言的CRC校验程序,可以对照一下

void CRC_CHECK( WORD W, BIT B ) 
{
int i,j,m,n;
unsigned int reg_crc=0xffff,k;

for( i = 0 ; i < W[0] ; i++ )
{
reg_crc^=W[i+1];
  for(j=0;j<8;j++)
{
if(reg_crc&0x01)
         reg_crc=(reg_crc>>1)^0xa001;
  else
        reg_crc=reg_crc>>1;
}
    }

    m=W[0]+1;
    n=W[0]+2;
    k=reg_crc&0xff00;
    W[m] = k>>8;
    W[n]=reg_crc&0xff;
}

热门招聘
相关主题

官方公众号

智造工程师