发一个CRC校验的程序

已锁定

学生在此

  • 帖子

    651
  • 精华

    4
  • 被关注

    2

论坛等级:侠客

注册时间:2003-06-06

普通 普通 如何晋级?

发一个CRC校验的程序

1312

7

2004-06-23 19:55:41

俺最近做一个工程,用一块CP340与多个可变信息标志(俺叫他情报板)进行通信,该通信需要用到CRC校验,生成多项式为:g(x)=xe16+xe12+xe5+1,俺在网络上找啊找,希望找到一个现成的,谁知道没有,只好作一个了,现在发上来,兴许有的朋友会用着:
FUNCTION_BLOCK "WCRC_FB"
TITLE =
VERSION : 0.1


VAR_INPUT
in_db_no : INT ;
in_dbb_no : INT ;
byte_len : INT ;
END_VAR
VAR_OUTPUT
wcrc : WORD ;
END_VAR
VAR
old_wcrc : WORD ;
c : CHAR ;
treat : CHAR ;
bcrc : CHAR ;
i : INT ;
j : INT ;
END_VAR
VAR_TEMP
db_no : INT ;
sr8_wcrc : WORD ;
END_VAR
BEGIN
NETWORK
TITLE =

L W#16#0;
T #old_wcrc;
///
L #in_db_no;
T #db_no;
OPN DB [#db_no];
///
L #in_dbb_no;
SLW 3;
LAR1 ;
///
loop: L #byte_len;
L 0;
<=I ;
JC end;
///
L DBB [AR1,P#0.0];
T #c;
///
L 0;
T #j;
///
a: L #j;
L 8;
>=I ;
JC b;
///
L #c;
L B#16#80;
AW ;
T #treat;
///
L #c;
SLW 1;
T #c;
///
L #old_wcrc;
SRW 8;
T #sr8_wcrc;
///
L B#16#80;
L #sr8_wcrc;
AW ;
T #bcrc;
///
L #old_wcrc;
SLW 1;
T #old_wcrc;
////
L #treat;
L #bcrc;
==I ;
JC c;
L #old_wcrc;
L W#16#1021;
XOW ;
T #old_wcrc;
c: NOP 0;
L 1;
L #j;
+I ;
T #j;
JU a;
b: L -1;
L #byte_len;
+I ;
T #byte_len;
///
+AR1 P#1.0;
///
JU loop;
end: L #old_wcrc;
T #wcrc;
BE ;


END_FUNCTION_BLOCK

发一个CRC校验的程序 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54755条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。