恭喜,你发布的帖子
发布于 2017-04-01 17:44:03
22楼
感觉不难啊。因为已经有3种循环方式的开关在了。可以把8个灯的开关输入对应到8个位上,还要有个可以计算开了几盏灯开关的算法。然后,根据开的是哪种模式,在一个循环里,同时把亮灯状态位导通给8个灯,利用扫描周期,在亮的时候,把算出来的灯总数,减去响应模式下的灯,然后,剩下的总数如果还大于或等于当前模式的灯,则在下次碰到限位开关的时候,依然可以导通,直到相减出来的数小于当前模式的灯或者是等于0的时候,才停止。这里就解决了如何分组的问题,另外要让灯根据要求亮,则是我前面说到的总数的问题,首先是,八盏灯利用一个字节,这样编排上就有高低之分了,然后,使用移位指令,利用循环指令,读取8次,比如要是2位的模式,那么就在读取到2个1的时候,把相应位清0,可以提前退出循环,并且在退出后直接在后边把灯亮起,碰到限位后,重新进入循环,因为刚才已经把亮起的灯清0,所以这一次要接下去读取高编号的1了,同样的道理直到结束。这里就解决了开哪个灯的问题。
以上是本人刚刚看完楼主的内容后产生的想法,可能中间有不严谨的地方,细节需要优化,但总体思路应该没有问题。希望大家提出意见与建议。
请填写推广理由:
分享
只看
楼主