回复:用S7-200怎么实现找出数据堆中的最小值和最大值

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2012-07-22 15:08:23

21楼

呵呵,hezk兄弟建议不错!代价是多一次循环,但能简洁一些。这也是反复推敲,精益求精的思想,接受建议,我修改一下代码和注释:

//╬╬╬╬╬╬╬╬╬将V区的VB1000起始地址作为指针,并将第一个数存入LW2,LW4╬╬╬╬╬╬╬╬╬╬
LD SM0.0
MOVD &VB1000, AC1 //将V区的起始地址定义为指针,存入累加器1
MOVW *AC1, LW2 //将指针指向的地址(VW1000)里面的内容,存入LW2
MOVW *AC1, LW4 //将指针指向的地址(VW1000)里面的内容,存入LW4

//╬╬╬╬╬╬将后面的数据分别与LW2、LW4进行比较,小的值存入LW2,大的值存入LW4╬╬╬╬╬╬
FOR LW6, +1, 99 //FOR循环体循环比较99次
+D +2, AC1 //将当前的地址指针加2个字节,存入累加器1
MOVW *AC1, AC2 //将当前指向的地址里面的内容存储到累加器2
LDW< AC2, LW2 //当前地址里面的内容与前面一个数进行小于比较
MOVW AC2, LW2 //如果当前值小于LW2里面的内容,将当前值存入LW2
LDW> AC2, LW4 //当前地址里面的内容与前面一个数进行大于比较
MOVW AC2, LW4 //如果当前值大于LW4里面的内容,将当前值存入LW4
NEXT //当循环99次结束,离开循环体,往下执行

//╬╬╬╬╬╬╬╬╬╬╬循环比较结束,最后将最小值存入MW0,将最大值存入MW2╬╬╬╬╬╬╬╬╬╬╬╬
MOVW LW2, MW0 //输出最小值
MOVW LW4, MW2 //输出最大值
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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