200自由口通讯的CRC效验? 点击:1101 | 回复:18



一秋

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 233回
  • 年度积分:0
  • 历史总积分:365
  • 注册:2005年3月07日
发表于:2008-03-18 15:48:00
楼主
请问那些做过200自由口通讯的CRC效验的?该怎么计算,拜托了,能否给我发个例子程序。dengyuhaiaaa@163.com,QQ:49863696



一秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 233回
  • 年度积分:0
  • 历史总积分:365
  • 注册:2005年3月07日
发表于:2008-03-18 16:13:00
1楼
是不是可以这样计算,我在网上找了一下资料。
● CRC码的计算方法是:
1.预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;
2.把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低
8位相异或,把结果放于CRC寄存器;
3.把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;
4.如果移出位为0:重复第3步(再次右移一位);
如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
7.将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低
字节进行交换;
8.最后得到的CRC寄存器内容即为:CRC码。

一秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 233回
  • 年度积分:0
  • 历史总积分:365
  • 注册:2005年3月07日
发表于:2008-03-18 17:01:00
2楼
高手些呢,怎么都不回答一下啊。拒绝广告

皓月

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2008-03-19 02:24:00
3楼
上面的crc校验非常正确,放心用好了

一秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 233回
  • 年度积分:0
  • 历史总积分:365
  • 注册:2005年3月07日
发表于:2008-03-19 11:00:00
4楼
lmhx:
上面说的CRC效验好象只能效验2个字节,但我要把我发送的数据都进行效验的话就不只2字节,可能是一串字符串就很长了,我该怎么进行运算呢?

一秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 233回
  • 年度积分:0
  • 历史总积分:365
  • 注册:2005年3月07日
发表于:2008-03-19 11:02:00
5楼
是不是我要把这一帧的所有字节数都要重复上面的步骤来进行效验

一秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 233回
  • 年度积分:0
  • 历史总积分:365
  • 注册:2005年3月07日
发表于:2008-03-19 11:04:00
6楼
当我效验接受的数据时CRC该怎么计算?

皓月

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2008-03-19 22:20:00
7楼
需要做内外两个循环。
接收数据和要发送数据的crc校验的算法都是一样的

真言无忌

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 95回
  • 年度积分:0
  • 历史总积分:236
  • 注册:2003年4月24日
发表于:2008-03-26 20:07:00
8楼
hehe,下面是我写的子程序。可以参考以下。
SUBROUTINE_BLOCK CRC:SBR24
TITLE=
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
MOVW   16#FFFF, LW16

Network 2 
LD     SM0.0
BTI    LB4, LW9
FOR    LW7, +1, LW9

Network 3 
LD     SM0.0
XORB   *LD0, LB17

Network 4 
LD     SM0.0
INCD   LD0

Network 5 
LD     SM0.0
FOR    LW11, +1, +8

Network 6 
LD     SM0.0
SRW    LW16, 1

Network 7 
LD     SM1.1
XORW   16#A001, LW16

Network 8 
NEXT
Network 9 
NEXT
Network 10 
LD     SM0.0
SWAP   LW16
MOVW   LW16, LW5

END_SUBROUTINE_BLOCK 

皓月

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2008-03-26 22:53:00
9楼
可行

一秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 233回
  • 年度积分:0
  • 历史总积分:365
  • 注册:2005年3月07日
发表于:2008-03-28 10:20:00
10楼
谢谢楼上的兄弟,但我没搞清楚*LD0是什么意思,我下载程序后监视程序时*LD0为红色,证明这条语句有问题,而却我变化要效验数据的值时,效验的结果都是一样的数据.

真言无忌

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 95回
  • 年度积分:0
  • 历史总积分:236
  • 注册:2003年4月24日
发表于:2008-03-28 16:32:00
11楼
上面是编译过后用来仿真时候用的。

真言无忌

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 95回
  • 年度积分:0
  • 历史总积分:236
  • 注册:2003年4月24日
发表于:2008-03-28 16:33:00
12楼
源程序如下:

真言无忌

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 95回
  • 年度积分:0
  • 历史总积分:236
  • 注册:2003年4月24日
发表于:2008-03-28 16:35:00
13楼
LD     SM0.0
MOVW   16#FFFF, LW16
LD     SM0.0
BTI    #num, #temp2
FOR    #temp1, +1, #temp2
LD     SM0.0
XORB   *#pnt, LB17
LD     SM0.0
INCD   #pnt
LD     SM0.0
FOR    #temp3, +1, +8
LD     SM0.0
SRW    LW16, 1
LD     SM1.1
XORW   16#A001, LW16
NEXT
NEXT
LD     SM0.0
SWAP   LW16
MOVW   LW16, #crco

真言无忌

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 95回
  • 年度积分:0
  • 历史总积分:236
  • 注册:2003年4月24日
发表于:2008-03-28 16:38:00
14楼
下面是需要定义的变量。*代表指针。#代表局部变量。请查阅基本手册。
SUBROUTINE_BLOCK CRC:SBR24
TITLE=
VAR_INPUT
pnt:DWORD;
num:BYTE;
END_VAR
VAR_OUTPUT
crco:WORD;
END_VAR
VAR
temp1:INT;
temp2:INT;
temp3:INT;
END_VAR
BEGIN

真言无忌

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 95回
  • 年度积分:0
  • 历史总积分:236
  • 注册:2003年4月24日
发表于:2008-03-28 16:39:00
15楼
乐于助人是我的品德。

ady

  • 精华:3帖
  • 求助:0帖
  • 帖子:37帖 | 248回
  • 年度积分:0
  • 历史总积分:472
  • 注册:2005年4月18日
发表于:2008-03-28 16:46:00
16楼
学习了,谢谢,等回去后一定好好试试

米勒

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:26
  • 注册:2008年3月26日
发表于:2008-03-29 10:36:00
17楼

米勒

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:26
  • 注册:2008年3月26日
发表于:2008-03-29 10:37:00
18楼
我有一个 程序 我 的 qq 77383418

热门招聘
相关主题

官方公众号

智造工程师