各位大侠,我想写一个在DB块循环采数的程序,要求是在一个db块里有100个双整数的数值,一个脉冲触发,将第一个数值传到md100里,再来一个脉冲触发,将第二个数值写到md100里,如此类推,传到第100个以后,又回到第一个数值,一直循环。
现在写了一半,不知道如何写下去
L L#0 初始化计数器
T MD10
opn db100 打开数据块
L P#0.0 数据块的初始地址
lar1
l dbd[ar1,p#0.0]
t md100 写入目标中间变量
-
-
wangchen 发表于 2016/1/8 19:29:10
这个程序我做过,一开始是用循环来做的但是老失败,问题就是在初始化的问题上,所以我直接用中间变量MD310,只要没有用到那么肯定是为0的,以下是程序:
OPN DB 100
A M 309.0 触发的按钮
FP M 309.1
JCN B005
L DBW [MD 310] //MD310是存放指针用的,要保证取一个没有用过的
T MD 100 //取出的数放在的位置
L MD 310
L 3168 //(100-1)*32
<D //将指针的值进行比较是否超过了100个双整数,
JCN B006
L MD 310
INC 32
T MD 310 //地址自加
JU B007
B006: L 0
T MD 310
B005: NOP 0
B007: NOP 0
引用 wangchen 2016/1/8 19:29:10 发表于2楼的内容
-
-
wuwei01 发表于 2016/1/9 15:45:33
用库啊,库里有双截棍!记得库里有add tab(大概是fc84?)和FIFO(fc95?不是太记得),填表和先进先出指令库,这是把数据当作数组。还有就是可以用sfc20blockmove把数据当作一个块。
自己编的话就用指针,个人觉得存储器指针更灵活一些,指针可加可减,而寄存器指针只能加。脉冲到来,指针偏移两个字
引用 wuwei01 2016/1/9 15:45:33 发表于3楼的内容
-
-
xuwenbin 发表于 2016/1/10 19:21:00
用库啊,库里有双截棍!记得库里有add tab(大概是fc84?)和FIFO(fc95?不是太记得),填表和先进先出指令库,这是把数据当作数组。还有就是可以用sfc20blockmove把数据当作一个块。
自己编的话就用指针,个人觉得存储器指针更灵活一些,指针可加可减,而寄存器指针只能加。脉冲到来,指针偏移两个字
引用 xuwenbin 2016/1/10 19:21:00 发表于4楼的内容