发布于 2005-11-14 20:00:37
0楼
1、最好不要在S7200这种的小PLC中做排序,4个8 个的还好说,40个80个就十分的浪费时间了。
2、待排序的数连续存放,相当于数组。比较从最后一个数开始,最小的数冒上来:
Network 1
// 外循环
LD SM0.0
FOR AC0, 1, 3 // N-1 次
MOVD &VB1006, AC1 // AC1指向第一个比较的数
MOVD AC1, AC2
-D +2, AC2 // AC2指向比较的第二个数
Network 2
// 内循环
LD SM0.0
MOVW +4, LW0 // Temp1为临时变量, N=4
-I AC0, LW0
FOR AC3, 1, LW0 // 每次大循环后减1次
Network 3
LDW< *AC1, *AC2 // 第二个数比较大,则交换
MOVW *AC1, LW2 // Temp2为临时变量
MOVW *AC2, *AC1
MOVW LW2, *AC1
Network 4
LD SM0.0
-D 2, AC1
-D 2, AC2 // 指向下一组
Network 5
NEXT
Network 6
NEXT