回复:老板说不会做就滚蛋,这么简单的程序傻子都会!

一世天蓝

  • 帖子

    215
  • 精华

    0
  • 被关注

    24

论坛等级:侠士

注册时间:2015-01-15

普通 普通 如何晋级?

发布于 2017-04-01 17:44:03

22楼

感觉不难啊。因为已经有3种循环方式的开关在了。可以把8个灯的开关输入对应到8个位上,还要有个可以计算开了几盏灯开关的算法。然后,根据开的是哪种模式,在一个循环里,同时把亮灯状态位导通给8个灯,利用扫描周期,在亮的时候,把算出来的灯总数,减去响应模式下的灯,然后,剩下的总数如果还大于或等于当前模式的灯,则在下次碰到限位开关的时候,依然可以导通,直到相减出来的数小于当前模式的灯或者是等于0的时候,才停止。这里就解决了如何分组的问题,另外要让灯根据要求亮,则是我前面说到的总数的问题,首先是,八盏灯利用一个字节,这样编排上就有高低之分了,然后,使用移位指令,利用循环指令,读取8次,比如要是2位的模式,那么就在读取到2个1的时候,把相应位清0,可以提前退出循环,并且在退出后直接在后边把灯亮起,碰到限位后,重新进入循环,因为刚才已经把亮起的灯清0,所以这一次要接下去读取高编号的1了,同样的道理直到结束。这里就解决了开哪个灯的问题。

以上是本人刚刚看完楼主的内容后产生的想法,可能中间有不严谨的地方,细节需要优化,但总体思路应该没有问题。希望大家提出意见与建议。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33307条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。