技术论坛

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

返回主题列表
作者 主题
ziege
游士

经验值:237
发帖数:14
精华帖:0
楼主    2012-07-17 23:37:43
主题:用S7-200怎么实现找出数据堆中的最小值和最大值
用S7-200怎么实现找出数据堆中的最小值和最大值???
做差???貌似不太对样
n次看你的背影
奇侠

经验值:7974
发帖数:2321
精华帖:73
21楼    2012-07-22 15:08:23
精华帖  主题:回复:用S7-200怎么实现找出数据堆中的最小值和最大值
呵呵,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 //输出最大值
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。