CRC校验计算子程序的完整代码

来源:电工天下时间:2019-11-13 13:55:52 作者:老电工手机版>>

CRC校验计算子程序的例子,CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位。

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校验值写入数据区结尾

相关文章
  • plc单脉冲程序的功能说明

    plc单脉冲程序的功能说明

    plc单脉冲程序,从给定信号(X0)的上升沿开始产生一个脉宽一定的脉冲信号(Y1),无论输入X0接通的时间长短怎样,输出Y1的脉宽都等于T1的定时时间2s(plc单脉冲程序)。

    时间:2022-09-19 11:17:08

  • plc查表操作指令的功能说明

    plc查表操作指令的功能说明

    plc查表操作指令的功能说明,表功能指令包括填表、查表、先进先出和后进先出指令,表功能指令实现对数据(只能是字型数据)的存取操作,在查表指令的语句表中,运算符不采用编码形式,而是直接使用。

    时间:2022-09-18 13:08:13

  • 常见的几款PLC指令对比图

    常见的几款PLC指令对比图

    常见的PLC产品,主要包括欧姆龙PLC、三菱FX系列PLC、LG MASTER系列PLC、松下PLC和西门子PLC,以下是这几大PLC产品的指令说明及对比,供大家学习参考。

    时间:2022-07-17 05:26:08

  • 自锁与互锁功能的plc梯形图程序设计实例

    自锁与互锁功能的plc梯形图程序设计实例

    自锁与互锁功能的plc梯形图程序设计,利用自身的常开触点使线圈持续保持通电即“ON”状态的功能称为自锁,利用两个或多个常闭触点来保证线圈不会同时通电的功能成为“互锁”。

    时间:2022-07-11 08:50:34

  • plc梯形图程序与语句表的转换程序

    plc梯形图程序与语句表的转换程序

    有关plc梯形图程序与语句表的转换程序,根据plc梯形图程序写出对应的语句表程序,有完整的实例(图片),感兴趣的朋友参考下。

    时间:2022-07-10 07:15:47

  • 学习PLC必须掌握的13个基本指令

    学习PLC必须掌握的13个基本指令

    有关PLC编程的基础知识,介绍了学习PLC必须掌握的13个基本指令,这些常用的PLC指令为LD、LDI、OUT、AND、ANI、OR、ORI、SET、RST、PLS、PLF、INC和DEC指令,下面来学习下。

    时间:2022-03-18 05:42:16

  • plc功能指令的通用格式与数据结构

    plc功能指令的通用格式与数据结构

    有关plc功能指令的通用格式,包括功能指令编号、助记符、数据长度、操作数等,并介绍了plc功能指令的数据结构,位元件与位元件的组合、字元件的知识等。

    时间:2021-11-29 09:39:33

  • plc自锁控制梯形图与指令表程序的二种方式

    plc自锁控制梯形图与指令表程序的二种方式

    plc自锁控制梯形图与指令表程序的二种方式,包括启动按钮、停止按钮、热保护、运行继电器等,学习下plc自锁控制梯形图与指令表程序的编写方法。

    时间:2021-11-22 09:20:06

推荐文章

Copyright © 2015 - 2022 dgjs123.com All Rights Reserved

电工天下 版权所有