| 作者 | 主题 |
|---|---|
|
ziege 游士 经验值:237 发帖数:14 精华帖:0 |
楼主
主题:用S7-200怎么实现找出数据堆中的最小值和最大值
用S7-200怎么实现找出数据堆中的最小值和最大值???
做差???貌似不太对样 |
|
n次看你的背影 奇侠 经验值:7974 发帖数:2321 精华帖:73 |
21楼
主题:回复:用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 //输出最大值
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
|