[转帖]在S7中用STL语言实现冒泡排序

[复制链接]
查看2374 | 回复0 | 2006-9-23 08:56:00 | 显示全部楼层 |阅读模式

STL语言以其强大的功能,深受资深工程师的喜爱,真正的高手不是用LAD来编程,而是用STL来编写,当然我不是高手,因为我也用LAD来编写程序,,偶尔会用一用STL,当然是逼的啦.不过言归正传,S7,用梯形图来实现冒泡排序,几乎是不可以,也许高手们可以.这个算法用到了指针,学过单片机的人都知道指针是什么,用起来不怎么好用,但是,从另一个角度来说,它的功能却是最强大的.

下面就来讲解一下如何实现冒泡排序(冒泡原理,学过语言的人都应该知道,如果不知道,请上网找一个吧,到处都是):

假定十个数据,放在DB1,安放顺序如下:

DBD0

DBD4

DBD36

下面是西门子的程序

OPN DB 1 /////打开DB1这个数据块

L 10 ////装载10MB0,因为有十个数据,要进行十次排序,9次也可以的

LL0: T MB 0

L P#0.0 ////装载地址指针,这是关键,不要搞错了

LAR1

L 9

LL1: T MB 2 ////内部循环,进行9,直到把最大值排到最后

L DBD [AR1,P#0.0]

L DBD [AR1,P#4.0]

<R

JC LL2 ////比较前后两个值,如果前面大于后面的,则前后数据交换

L DBD [AR1,P#0.0]

T #m_temp

L DBD [AR1,P#4.0]

T DBD [AR1,P#0.0]

L #m_temp

T DBD [AR1,P#4.0]

LL2: +AR1 P#4.0 ////指针自动进行加4,因为是浮点数,所以要跳过4个字节

L MB 2

LOOP LL1 ///这个指令自动的将A寄存器里的值减1

L MB 0

LOOP LL0

有兴趣的朋友,可以一起探讨西门子编程。

dajiang1688@sina.com

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则