为什么没有满足比较条件跳转jc的rlo也为1

编制一个数据块数值比较的小程序,db2中为字符型的20个变量,这20个变量中只要有与mw104相同的就把qo.1输出高电平。但是无法实现循环,而且即使数值不相等jc b1的rlo也为1,请问问题出在哪里?谢谢。
    l 0
   t mw200
    t md 300
    opn db 2
l 20
a1: t mw 200
      l dbw[md300]
      l mw 104
      ==i
      jc b1
       l md 300
       l p#2.0
       +d
       t md 300
       l mw 200
 loop a1
b1: = q0.1

最佳答案

l 0
   t mw200
    t md 300
    opn db 2
l 20
a1: t mw 200
      l dbw[md300]
      l mw 104
      ==i
      jcb b1      //这里要改成jcb,这样才能把rlo保存到br
       l md 300
       l p#2.0
       +d
       t md 300
       l mw 200
 loop a1
b1: a   br     //这里要先读br,这里的br和跳转时的rlo是一致的
 = q    0.1
     你的程序不是没有循环,而是没有正确的使用状态字中的rlo和br,你可以监控一下rlo,在执行==i时如果不相等,rlo为0,在执行跳转时rlo就为1了,然后后面的程序都没有影响rlo的语句,你的q0.1又是读的rlo的状态,所以最后q0.1始终为1。我解释得可能不是很清楚,建议楼主看看论坛里关于状态字的精华帖。

图片说明:

为什么没有满足比较条件跳转jc的rlo也为1  

提问者对于答案的评价:
非常感谢!!还有楼下的也很感谢!2种方法都可以,学习了!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc225770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午1:08
下一篇 2018年12月1日

相关推荐