劉英會 岳偉利 張宗彩
摘要
單片機(jī)與我們的生活息息相關(guān),由于其體積小,容易嵌入各種玩具,電器中,受到廣大廠商的歡迎??纱蟛糠质褂谜邔纹瑱C(jī)的工作原理并不清楚,尤其是單片機(jī)的匯編語言與機(jī)器語言的關(guān)系。本文中以信號燈閃爍系統(tǒng)的設(shè)計仿真為例,對其匯編過程進(jìn)行了詳細(xì)的分析。通過本文的闡述,幫助更多的初學(xué)者快速掌握單片機(jī)。
【關(guān)鍵詞】指令系統(tǒng) 閃爍系統(tǒng)
一個完整的單片機(jī)系統(tǒng)除了需要硬件電路的支持,軟件設(shè)計也必不可少。指令是單片機(jī)能夠識別和執(zhí)行的命令,一個單片機(jī)能夠執(zhí)行全部指令的集合稱為這個單片機(jī)的指令系統(tǒng)。由于單片機(jī)的硬件只能識別二進(jìn)制數(shù),因此最初的指令采用二進(jìn)制表示,后來用八進(jìn)制和十六進(jìn)制表示,這些都稱為機(jī)器語言。機(jī)器語言不易理解,編制程序容易出錯,為了便于閱讀和書寫,一些廠商根據(jù)指令功能和操作對象的不同,給出不同指令的英文縮寫符號,稱為助記符。用助記符表示的指令稱為匯編語言指令。
需要注意的是,匯編語言不能直接運(yùn)行,它要匯編為機(jī)器語言指令后才能運(yùn)行。但多數(shù)人對單片機(jī)的匯編過程并不了解,本文以信號燈的閃爍系統(tǒng)設(shè)計及仿真為例,闡述匯編語言編譯為機(jī)器語言的具體過程。
1 MCS-51系列單片機(jī)的指令系統(tǒng)
以數(shù)據(jù)傳送指令為例,單片機(jī)的數(shù)據(jù)傳送指令是編程時使用最多的指令。用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP,根據(jù)這些指令作用的不同,將其分為內(nèi)部數(shù)據(jù)傳送指令、外部數(shù)據(jù)傳送指令、訪問程序存儲器指令、堆棧操作指令和數(shù)據(jù)交換指令5類。如“MOV A,Rn”對應(yīng)的機(jī)器語言“E8?EF”,再如“MOV A,direct”對應(yīng)的機(jī)器語言“E5 direct”。由此可見,匯編語言與機(jī)器語言之間存在一一對應(yīng)關(guān)系,而編譯為機(jī)器語言后占用多大的存儲空間,由字節(jié)數(shù)決定。
2 信號燈閃爍系統(tǒng)設(shè)計與仿真
通過制作一個最簡單的單片機(jī)系統(tǒng)——信號燈閃爍系統(tǒng),闡述匯編語言編譯為機(jī)器語言的過程。在單片機(jī)的P0.0端口上接上一個發(fā)光二極管L1,編制匯編程序使L1不停地一閃一滅,時間間隔為0.2S。
2.1 硬件設(shè)計
本系統(tǒng)采用單片機(jī)為51系列,硬件系統(tǒng)結(jié)構(gòu)由電源電路、時鐘電路、復(fù)位電路和LED信號燈電路。
2.2 軟件設(shè)計
從硬件設(shè)計的電路原理圖可以看出,當(dāng)P0.0端口輸出高電平時,根據(jù)發(fā)光二極管的單向?qū)щ娦钥芍?,L1熄滅,這里可以使用SETBP0.0指令使P0.0端口輸出高電平,當(dāng)P0.0端口輸出低電平時,L1點亮;
由于單片機(jī)指令的執(zhí)行時間很短,屬于微秒級,要求彩燈閃爍時間間隔為0.2秒,相對于微秒來說,相差太大,所以在執(zhí)行彩燈點亮和熄滅指令時,插入延時程序,達(dá)到我們的要求。
2.3 利用keil C51集成開發(fā)軟件編輯、編譯和連接程序
新建工程,選擇51芯片,新建文件編輯匯編源程序,將匯編文件保存為.asm形式,將文件添加進(jìn)工程里,單擊編譯按鈕,對匯編源文件進(jìn)行編譯、鏈接,在保存工程的文件夾中將生產(chǎn).hex文件。
單擊“debug”進(jìn)行程序的調(diào)試,start debug。
在程序由匯編語言轉(zhuǎn)化為機(jī)器語言過程中,編譯后存儲在程序存儲器以0000H為首地址的單元中。
由圖1可知,程序編譯后存儲在程序存儲器以0000H為首的地址單元中,每條匯編語言占用的字節(jié)數(shù)由指令決定,占用1-3字節(jié)不等。而每條匯編語言與機(jī)器語言間的一一對應(yīng)關(guān)系由上表清晰可見。
3 結(jié)論
通過單片機(jī)信號燈閃爍系統(tǒng)的設(shè)計過程可知,雖然在keil編程軟件中我們使用的匯編語言,但實際寫入單片機(jī)的是二進(jìn)制的機(jī)器語言,匯編語言的每一條指令與機(jī)器語言之間存在一一對應(yīng)的關(guān)系。初學(xué)者可以通過查詢相關(guān)資料對單片機(jī)的五類匯編語言的匯編過程有更深入的了解。
參考文獻(xiàn)
[1]曹建樹,代峰燕等.應(yīng)用型工科院校單片機(jī)課程教學(xué)改革與實踐[J].實驗室研究與探索,2012(03):129-131
[2]王愛華.淺談單片機(jī)匯編語言教學(xué)[J].黑龍江科技信息,2009(17):143.
[3]陳龍,張亞君.Proteus仿真軟件在單片機(jī)實驗教學(xué)中的應(yīng)用[J].實驗技術(shù)與管理,2009(08):73-75.
[4]許超,吳新杰,張丹.基于Proteus和Keil的單片機(jī)課程教學(xué)改革[J].遼寧大學(xué)學(xué)報(自然科學(xué)版),2011(01):27-29.