三九宝宝网宝宝百科宝宝知识

用S7200的编程软件怎么写CRC校验程序

02月10日 编辑 39baobao.com

[编程入门的问题]编程 这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语...+阅读

整理一个CRC校验计算的子程序

TITLE=子程序注释

// CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB),移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码(16#A001)进行 异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。

// 下面为CRC的计算过程:

// 1.设置CRC寄存器,并给其赋值FFFF(hex)。

// 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。

// 3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。

// 4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。

// 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。

// 6.重复第2至第5步直到所有数据全部处理完成。

// 7.最终CRC寄存器的内容即为CRC值。

//

// 输入参数:

// 待校验数据区指针,第一个字节为数据长度

// LD0 DataBuff IN DWORD

Network 1

LD SM0.0

MOVW 16#FFFF, AC0 //初始化CRC寄存器

BTI *LD0, LW4 //数据缓冲区第一个字节为数据长度

MOVD LD0, LD6

INCD LD6 //指针指向第一个待处理字节

Network 2

LD SM0.0

FOR AC2, +1, LW4 //开始循环处理每一个字节

Network 3

LD SM0.0

XORB *LD6, AC0 //字节首先与CRC寄存器低位进行异或

Network 4

LD SM0.0

FOR AC1, +1, +8 //移位处理循环,处理一个字节的8位

Network 5

LD SM0.0

SRW AC0, 1 //CRC寄存器右移一位

Network 6

LD SM1.1 //如果移出位为0,则进入下一次循环

XORW 16#A001, AC0 //如果移出位为1,CRC寄存器与多项式16#A001异或

Network 7

NEXT

Network 8

LD SM0.0

INCD LD6 //指针加1指向下一个字节

Network 9

NEXT

Network 10

LD SM0.0

SWAP AC0 //交换CRC寄存器高低字节

MOVW AC0, *LD6 //CRC校验值写入数据区结尾

以下为关联文档:

如何验证MD5校验MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。任何一个文件,无论是可执行程序、图像文件、临时文件或者其...

Md5是什么?MD5怎么校验Windows 平台上,可以 md5 ,下载工具进行验证;如果是 Win10,可以到应用商店里找;如果是 Ubuntu,它自带 md5sum 工具。 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为...

如何进行MD5校验载好MD5校验工具之后,安装一下。当然有的校验工具是绿色版本的不需要安装的, 安装好之后,运行MD5校验工具。点击”浏览”选项,可以浏览添加你需要校验的软件,镜像或视频文件等等...

请教一下数控车床ug软件的编程流程谢谢先画好回转零件,可以同时将毛坯零件一起画好,定好加工坐标系(跟车床的坐标系对应方向) 在坐标系下面新建加工几何体workpiece,里面选好part和blank实体。 然后在workpiece下面新...

如何快速学习UG数控编程1、学习UG数控编程,先学会CAD,有了这个基础,会让你学起UG健步如飞。 2、学会编程简单,要编好程序难,建议你先学习《数控加工技术》里的数控加工工艺,然后学习数控铣、加工中心编程...

如何学习UG数控编程1、学习UG数控编程,先学会CAD,有了这个基础,会让你学起UG健步如飞。 2、学会编程简单,要编好程序难,建议你先学习《数控加工技术》里的数控加工工艺,然后学习数控铣、加工中心编程...

我想学编程请问该怎么入门我的建议是首先学习C语言和VB,这是两种不同风格的基础知识。然后可以根据自身的兴趣和发展方向来选择各种编程语言。如C++,C#,JAVA等等。当你学习的时候你自然会发现算法和数...

一个实例搞定MATLAB界面编程 pjimage m学习中遇到的问题 ??%x=xlsread('C:\Documents and Settings\Administrator\桌面\2.xls'); time1=1980:2009; plot(time1,x,'m'); [lin,col]=size(x); years=lin; %将原始数据转化为增长率数据,...

jquery校验输入框是不是有值以及控制其长度input长度ul{ clear:both}li{float:left; width:120px; padding:0; margin:0;}$(document).ready(function(e) { $(".font_size_info").keyup(function () { //得到长度 var le...

推荐阅读
图文推荐