恭喜,你发布的帖子
发布于 2017-03-31 23:26:25
16楼
参与这个题目的,小车在两点间来回行走,编程没问题吧。
我觉得亮灯还有点搞,试着讲一下本人的思路:
1、区分第一遍亮灯,和后续的亮灯。因为第一遍灯若点不全,直接没有灯输出;若是后续的灯点不全,则从第一遍亮灯重新开始。
2、如是第一遍亮灯。准备输入数据。复制一份亮灯开关输入,IB0-->MB0
3、清亮灯输出QB0
4、从M0.0开始找,有闭合的开关,就把该位对应的灯点亮,同时清掉开关输入状态;
如果没找到闭合的开关,表示一个灯都不亮,清第一遍亮灯完成标记,选灯结束。
如果找到,且只亮一个灯,置第一遍亮灯完成标记,选灯结束;否则继续找下一个。
6、再从M0.0开始找,有闭合的开关,就把该位对应的灯点亮,同时清掉开关输入状态;
如果没找到闭合的开关,表示第二个灯点不亮,清第一遍亮灯完成标记,选灯结束。
如果找到,且只亮二个灯,置第一遍亮灯完成标记,选灯结束;否则继续找下一个。
7、再从M0.0开始找,有闭合的开关,就把该位对应的灯点亮,同时清掉开关输入状态;
如果没找到闭合的开关,表示第三个灯点不亮,清第一遍亮灯完成标记,选灯结束。
如果找到,置第一遍亮灯完成标记,选灯结束。
8、如果上面程序下来,第一遍亮灯完成标记没有置位,表示没有点亮足够的灯,则再清亮灯输出QB0,并且2-7重走一遍。
数开关和点灯,请参考编解码指令 ENCO 、DECO。ENCO/DECO是16位操作,使用时请调整字节顺序,以适合本案的情况。
可以for/next做,也可以使用jump。
请填写推广理由:
分享
只看
楼主