在S7中用STL語言實(shí)現(xiàn)冒泡排序
|
STL語言以其強(qiáng)大的功能,深受資深工程師的喜愛,真正的高手不是用LAD來編程,而是用STL來編寫,當(dāng)然我不是高手,因?yàn)槲乙灿肔AD來編寫程序,,偶爾會用一用STL,當(dāng)然是逼的啦.不過言歸正傳,在S7中,用梯形圖來實(shí)現(xiàn)冒泡排序,幾乎是不可以,也許高手們可以.這個算法用到了指針,學(xué)過單片機(jī)的人都知道指針是什么,用起來不怎么好用,但是,從另一個角度來說,它的功能卻是最強(qiáng)大的.
下面就來講解一下如何實(shí)現(xiàn)冒泡排序(冒泡原理,學(xué)過語言的人都應(yīng)該知道,如果不知道,請上網(wǎng)找一個吧,到處都是):
假定十個數(shù)據(jù),放在DB1中,安放順序如下:
DBD0
DBD4
…
DBD36
下面是西門子的程序
OPN DB 1 /////打開DB1這個數(shù)據(jù)塊
L 10 ////裝載10到MB0中,因?yàn)橛惺畟€數(shù)據(jù),要進(jìn)行十次排序,9次也可以的
LL0: T MB 0
L P#0.0 ////裝載地址指針,這是關(guān)鍵,不要搞錯了
LAR1
L 9
LL1: T MB 2 ////內(nèi)部循環(huán),進(jìn)行9次,直到把最大值排到最后
L DBD [AR1,P#0.0]
L DBD [AR1,P#4.0]
<R
JC LL2 ////比較前后兩個值,如果前面大于后面的,則前后數(shù)據(jù)交換
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 ////指針自動進(jìn)行加4,因?yàn)槭歉↑c(diǎn)數(shù),所以要跳過4個字節(jié)
L MB 2
LOOP LL1 ///這個指令自動的將A寄存器里的值減1
L MB 0
LOOP LL0 |
本文標(biāo)簽:在S7中用STL語言實(shí)現(xiàn)冒泡排序
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報酬未能及時支付,在此深表歉意,請《在S7中用STL語言實(shí)現(xiàn)冒泡排序》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
關(guān)于“在S7中用STL語言實(shí)現(xiàn)冒泡排序”的更多資訊










