恭喜,你发布的帖子
发布于 2016-04-22 18:55:33
9楼
因为需要处理上位机下发过来的数据,把四个字节的数据整合到一个字里,本人也就会SCL编程,不怎么会STL编程,最近也想到了一个解决办法,就是把按位寻址,就是规定字节的低四位或者高四位数据可以使用,然后再把高四位或者第四位按位寻址,输出到目标字的位,就是比较麻烦而已,而且外设区也不支持 位寻址,需要中间装换,比较麻烦
楼主:按照你的思路,我用STL间接寻址+LOOP大概写了一下,没有测试,有时间你可以测试一下。
//MD20为源数据;DB1.DBW20为目标数据
OPN DB 1 //打开DB1
LAR1 P#20.0 //初始化地址寄存器1
LAR2 P#20.0 //初始化地址寄存器2
L 4 //装载循环次数
NEX2: T LW 20 //存储当前的循环次数
L 4 //装载循环次数
NEX1: T LW 22 //存储当前的循环次数
A M [AR1,P#0.0] //读取当前的位的状态
= DBX [AR2,P#0.0] //将当前位的状态赋给目标位
+AR1 P#0.1 //源地址递增1个位
+AR2 P#0.1 //目标地址递增1个位
L LW 22 //装载当前的循环次数
LOOP NEX1 //循环次数减一,跳转到NEX1标签,当循环次数减至0,往下执行
+AR1 P#1.0 //源地址递增1个字节
+AR2 P#0.4 //目标地址递增4个位
L LW 20 //装载当前的循环次数
LOOP NEX2 //循环次数减一,跳转到NEX2标签,当循环次数减至0往下执行
请填写推广理由:
分享
只看
楼主