| 作者 | 主题 |
|---|---|
|
风中的云雾茶 侠客 经验值:900 发帖数:414 精华帖:1 |
楼主
主题:用STL新写了个CRC16的校验FC
以前一直用LAD写程序的,两三天前想写个CRC16的FC,发现用LAD不好搞定。查查资料,决定用STL编写。因为以前没用过STL,所以比较费力。现在已经写好了,运算结果与网上下载的CRC16计算器算出的结果一致。各位高手看看那些地方需要改进。如下:
接口: IN: start_add DInt 起始地址 count Int 校验字节数 DB_No Int 数据块号 OUT: CRC_hi Byte 校验结果高字节 CRC_lo Byte 校验结果低字节 TEMP: TEMP1 Int 0.0 DB块地址寄存器 TEMP2 Int 2.0 校验寄存器 TEMP3 Int 4.0 校验字节数计数 TEMP4 DInt 6.0 地址指针寄存器 TEMP5 Int 10.0 校验位计数 程序代码: L #DB_No T #TEMP1 OPN DB [#TEMP1] //打开数据块 L W#16#FFFF T #TEMP2 //初始化校验寄存器 L #start_add SLD 3 T #TEMP4 //地址指针寄存器 L #count //装载校验字节数计数初值 lab1: T #TEMP3 //循环1开始 L DBB [#TEMP4] L LB 3 XOW //低字节异或 T LB 3 L #TEMP4 L P#1.0 +D T #TEMP4 L 8 //装载校验位计数初值 lab2: T #TEMP5 //循环2开始 L #TEMP2 SRW 1 JP x001 //如果移出位为1跳转x001 JU x002 //否则跳转x002 x001: T #TEMP2 L #TEMP2 L W#16#A001 XOW //字异或 x002: T #TEMP2 L #TEMP5 LOOP lab2 //循环2结束 L #TEMP3 LOOP lab1 //循环1结束 L LB 2 T #CRC_hi //校验结果高字节 L LB 3 T #CRC_lo //校验结果低字节 哈哈,献丑了。
面壁思过
|