日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機的“語言”規(guī)范

          單片機的“語言”規(guī)范

          作者: 時間:2013-01-26 來源:網絡 收藏
          "說話"也有

            上面的程序,我們經過編譯,下載,運行,完全能實現預計的功能。但是我們要說這種程序就是沒有的程序寫法。

            這就像我們寫文章,這只能算是一份草稿,雖然意思講清楚了,但是有些句法還不符合,結構層次也不清楚,所以還不能算是一篇合格的文章。那么,規(guī)范的寫法又有怎樣的要求呢?下面我們對照著規(guī)范寫法的三部分內容來看一下。

            規(guī)范寫法的第一部分是"預定義",預定義部分就是要求我們在使用管腳接口的時候先要給接口定義一個名稱,而不要直接使用接口名。如我們在程序中不要直接使用p0.0之類的。另外,我們在使用RAM中的存儲單元的時候,也不要直接使用單元地址,也要在預定義部分給它定義一個單元名稱。如我們要把一個計數值存儲在30h存儲單元里,我們就可以在預定義部分寫上"counter equ 30h"語句,以后在程序中,我們直接使用"counter"這個名字就可以了。這樣寫的好處就是以后如果電路中的管腳接口有所變動,或是存儲單元需要修改,我們只需在預定義部分改動一下,而程序部分則一點也不需要動。這就是預定義的方便之處。

            "主程序"與"子程序"的區(qū)分則更加重要??梢赃@樣說吧,在編寫程序時,能夠實現某些具體功能的程序段,我們最好不要把它放在主程序里面,而要把它寫成子程序。如上面的程序示例中,延時1s程序寫成子程序,這樣很好,但是讓LED燈亮滅的這些功能程序段也應當寫成子程序,這樣就會更好。那有朋友問了,你都寫成了子程序,那主程序部分干什么?問得好,其實編寫程序,主程序部分我們盡量讓它不去做具體的事情,因為它還有更重要的事情去做。我們把具體的事情放給子程序去做,而主程序,我們是讓它扮演指揮,協(xié)調,檢查子程序的工作。看到了嗎,主程序和子程序就是這樣的關系,主程序是我們的大腦,而子程序則是我們的手和腳,它們是指揮和被指揮的關系。那么,主程序如何"指揮"子程序呢,具體的說,就是"調用".

            從開始寫程序,我們的腦海里就應該建立起"預定義""主程序""子程序"這三個模塊,在具體寫程序的時候,我們就是向這三個模塊里填充內容,而這就是我們所說的規(guī)范寫法。

            基于這樣的思想,上面示例一的程序,要怎樣寫才是符合規(guī)范的呢,請看下面的程序示例二。

            //程序功能:三個LED燈依次各亮滅1s,(用規(guī)范的寫法改寫)

            //第一部分:預定義

            led_light1 bit p0.0 //定義管腳

            led_light2 bit p0.1

            led_light3 bit p0.2

            org 0000h //程序開始

            ljmp main

            org 0030h

            //第二部分:主程序

            main:

            acall led1 //調用led1子程序

            acall led2 //調用led2子程序

            acall led3 //調用led3子程序

            ajmp $ //待機狀態(tài)

            //第三部分:子程序

            led1: //led1子程序

            clr led_light1 //點亮第一個LED燈

            acall delay1s

            setb led_light1 //熄滅第一個LED燈

            acall delay1s

            ret

            led2: //led2子程序

            clr led_light2 //點亮第二個LED燈

            acall delay1s

            setb led_light2 //熄滅第二個LED燈

            acall delay1s

            ret

            led3: //led3子程序

            clr led_light3 //點亮第三個LED燈

            acall delay1s

            setb led_light3 //熄滅第三個LED燈

            acall delay1s

            ret

            delay1s: //延時1s子程序

            (中間內容略)

            ret

            end //程序結束

            請注意預定義部分除了"定義管腳",我們使用了偽指令"org"定義了"程序開始",這樣是為了避開5個中斷服務子程序的入口地址部分,使程序從0030h開始。而"main"程序里只有三條調用指令,就完成了指揮的功能。只有這樣寫程序,主程序部分才能夠發(fā)揮它應有的作用。而所有的具體功能的實現,我們都放到了子程序里,這樣的程序結構看起來就清楚多了。

            當然,這個程序因為簡單,我們沒有感覺到這種規(guī)范的寫法有什么好處,反而覺得它比第一種方法還要復雜。實際上,隨著電路的功能越來越多,程序的內容也會跟著越來越多,那個時候,你就會越來越發(fā)現我們這種規(guī)范寫法的優(yōu)越性來了。

            因為電路的主要功能,我們可以到主程序部分去查找,而具體的實現功能的方法,我們則可以到子程序部分去查找,這樣的程序結構讓寫程序的人覺得有章可循,循序漸進;讓看程序的人也覺得層次清晰,一目了然。

            果真是這樣嗎?下面我們改變一下這個電路的功能,讓這三個燈的亮滅循環(huán)進行下去,那么這個程序應當怎樣寫呢?其實很簡單,我們只要在示例程序二的主程序(main)里稍微改動一下就可以。請看改動過的main程序:

            main:

            loop: acall led1

            acall led2

            acall led3

            ajmp loop //循環(huán)

            當然,這種改動過于簡單,在這里只是想讓大家看看,main程序其實只有兩種工作狀態(tài),一種是待機狀態(tài),一種就是循環(huán)狀態(tài)。



          評論


          相關推薦

          技術專區(qū)

          關閉