資源描述:
《單片機匯編語言的模塊化編程方法舉例》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、制作天地HANDSONPROJECTS編者按:單片機的匯編語言是學(xué)習(xí)單片機的基礎(chǔ),而匯編語言的最大不足就是程序的結(jié)構(gòu)不清晰和易讀性差,而模塊化編程能在一定程序上彌補這一缺陷。作者結(jié)合其教學(xué)經(jīng)驗,提出的匯編語言的模塊化編程的理念,值得從事單片機編程的技術(shù)員借鑒,特別是對初學(xué)單片機的人,更是有必要。作者李冰濤徐州技師學(xué)院單片機匯編語言的模塊化編程方法舉例單片機的工作機理就是按照順序一條一條地當(dāng)運用這種思想方法去實現(xiàn)它。執(zhí)行人們給它排列好的指令,完成某項任務(wù)。所然而子程序化、模塊化的編程方法,并不是謂程序,就是一些指令的有序排列。單片機執(zhí)行把已有的功能子程序
2、簡單地堆放在一起就可以實這些指令后,就會完成人們想讓它做的某些事情,現(xiàn)的,而是要把這些子程序進行有機的整合才行。而這些事情,我們往往稱之為“任務(wù)”。那么,在整合的過程中會遇到哪些問題?要注意我們讓單片機單獨地完成某項簡單的任務(wù)并哪些問題?下面我們以一個交通燈項目為例,運不困難。比如我們可以操作單片機的I/O口,讓用子程序化、模塊化的編程方法進行編程,并把連接在其上的發(fā)光二極管隨意的亮與滅,或者讓編程的過程做一個完整的講述,希望讀者對這種連接在其上的數(shù)碼管隨意的顯示數(shù)字,甚或可以編程方法有一個具體的認(rèn)識。讓連接在其上的LED顯示屏顯示出漢字來,我們還可以
3、連接上按鍵作為輸入設(shè)備來控制輸出設(shè)一、交通燈項目的任務(wù)分析備。然而,一個單片機應(yīng)用系統(tǒng)——我們常把它稱之為“項目”的,往往是由幾個簡單的任務(wù)一假設(shè)一個十字路口為東西南北走向,各設(shè)置起來完成的。紅、黃、綠3種信號燈,南北方向由P1.0~P1.2在進行項目教學(xué)時我們發(fā)現(xiàn),同學(xué)們也知道口控制,其中P1.0口為紅燈,P1.1口為黃燈,這個項目需要哪幾個任務(wù)來完成,他們也知道每P1.2口為綠燈。東西方向由P1.3~P1.5口控制,個任務(wù)應(yīng)該怎樣實現(xiàn),然而如何把這些任務(wù)弄到其中P1.3口為紅燈,P1.4口為黃燈,P1.5口為一起去完成項目所要求的設(shè)計目標(biāo),成了一個
4、教綠燈。學(xué)難點。當(dāng)然方法可以多種多樣,聰明的學(xué)生可本交通燈控制系統(tǒng)由三項任務(wù)組成:以想出一些奇特的方法實現(xiàn),但那些畢竟不是正1.交通燈正常情況途,不是一般的方法。有沒有一種有章可循的方①南北綠燈,東西紅燈,20s。法呢?有,這就是子程序化、模塊化的編程方法。②南北黃燈,東西紅燈,3s。它的思路是:我們把一個項目目標(biāo)分解成若③東西綠燈,南北紅燈,10s。干個子功能模塊,每個子功能模塊對應(yīng)一個子任④東西黃燈,南北紅燈,3s。然后循環(huán)。務(wù),每項子任務(wù)用單片機的子程序?qū)崿F(xiàn)。最后,我們在主程序里只要調(diào)用這些子程序,就可以完2.數(shù)碼管倒計時顯示成項目所要求的目標(biāo)。
5、注意,這是一種非常重要交通燈亮?xí)r,數(shù)碼管顯示亮燈時間。數(shù)碼管的思想方法,復(fù)雜的單片機應(yīng)用項目,我們都應(yīng)采用動態(tài)顯示,P0口連接數(shù)碼管的段碼,P2口17制作天地HANDSONPROJECTS連接數(shù)碼管的位碼。四種亮燈情況順序完成,然后就是循環(huán)。2.數(shù)碼管倒計時顯示3.交通燈緊急情況一般情況下,通行時間不超過100s,所以當(dāng)有救護車、消防車等特殊車輛通過時,用用兩位數(shù)碼管顯示計時時間足夠了。單獨寫數(shù)碼按鍵控制兩個方向均亮紅燈,同時蜂鳴器發(fā)出報管倒計時程序也不困難,下面是一個倒計時60s警聲。等救護車和消防車通過后,交通燈再恢復(fù)的程序思路:正常情況。按鍵接P
6、3.2口,蜂鳴器接P3.3口。60秒倒計時,循環(huán)計數(shù)。用定時器中斷產(chǎn)交通燈外圍器件與單片機I/O口的連接如圖生秒信號。1所示。這個程序大體由三部分組成,如圖3所示。VCC1kΩ×8889S5189S5111kkΩ×88a東西紅東西紅P1.0P1.0P0.0P0.0b東西東西黃黃P1.1P1.1P0.1P0.1c東東西綠西綠P1.2P1.2P0.2P0.2d南南北紅北紅P1.3P1.3P0.3P0.3e南北南北黃黃P1.4P1.4P0.4P0.4f南北南北綠綠P1.5P1.5P0.5P0.5gP0.6P0.6P1.6P1.6dpP0.7P0.7P1.7P
7、1.7圖3KKP3.2P3.210k10kΩGNDGNDGNDGNDP2.1P2.1V1V1V2V2首先定義一個秒存SPKSPK10k10kΩ儲單元:MIAOEQU10k10kΩP2.0P2.0V3V330H。程序開始時給它P3.3P3.3VCCVCC賦初值:MOVMIAO,VCCVCC#60。然后,我們在1s定時中斷子程序中加入圖1交通燈外圍器件與單片機I/O口的連接電路圖一個減1指令,再進行判斷,語句如下:DECMIAO二、三項任務(wù)的獨立編程MOVR1,MIAOCJNER1,#00,FANHUI;與0比較,到0再從60循環(huán)1.交通燈正常情況MOVM
8、IAO,#60這個任務(wù)最簡單,通行時間可以通過調(diào)用延FANHUI:RETI時程序?qū)崿F(xiàn)。程序流程