![《單片機技術(shù)及應用-基于Proteus仿真的C語言程序設計(第2版)》第五模塊 單片機中斷系統(tǒng)項目實訓_第1頁](http://file4.renrendoc.com/view10/M01/39/0D/wKhkGWWki16AZO0BAAEGwU6PyPc829.jpg)
![《單片機技術(shù)及應用-基于Proteus仿真的C語言程序設計(第2版)》第五模塊 單片機中斷系統(tǒng)項目實訓_第2頁](http://file4.renrendoc.com/view10/M01/39/0D/wKhkGWWki16AZO0BAAEGwU6PyPc8292.jpg)
![《單片機技術(shù)及應用-基于Proteus仿真的C語言程序設計(第2版)》第五模塊 單片機中斷系統(tǒng)項目實訓_第3頁](http://file4.renrendoc.com/view10/M01/39/0D/wKhkGWWki16AZO0BAAEGwU6PyPc8293.jpg)
![《單片機技術(shù)及應用-基于Proteus仿真的C語言程序設計(第2版)》第五模塊 單片機中斷系統(tǒng)項目實訓_第4頁](http://file4.renrendoc.com/view10/M01/39/0D/wKhkGWWki16AZO0BAAEGwU6PyPc8294.jpg)
![《單片機技術(shù)及應用-基于Proteus仿真的C語言程序設計(第2版)》第五模塊 單片機中斷系統(tǒng)項目實訓_第5頁](http://file4.renrendoc.com/view10/M01/39/0D/wKhkGWWki16AZO0BAAEGwU6PyPc8295.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第五模塊單片機中斷系統(tǒng)項目實訓
項目10定時/計數(shù)器中斷控制 項目11音樂播放控制 項目12外部中斷源中斷控制項目10定時/計數(shù)器中斷控制
任務5-10-1簡易數(shù)碼秒表設計任務5-10-2使用定時器T0的中斷控制數(shù)碼管倒計數(shù)顯示任務5-10-3使用計數(shù)器T1的中斷控制數(shù)碼管顯示按鍵計數(shù)任務5-10-1簡易數(shù)碼秒表設計一、MCS-51單片機的中斷系統(tǒng)1.MCS-51單片機的中斷結(jié)構(gòu)
MCS-51單片機提供了5個中斷源,兩個中斷優(yōu)先級控制,可實現(xiàn)兩個中斷服務嵌套。當CPU支持中斷屏蔽指令后,可將一部分或所有的中斷關(guān)斷,只有打開相應的中斷控制位后,方可接收相應的中斷請求。程序設置中斷的允許或屏蔽,也可設置中斷的優(yōu)先級。
MCS-51單片機有5個中斷源:外部中斷0、定時/計數(shù)器T0、外部中斷1、定時/計數(shù)器T1、串口中斷TI或RI。有兩個中斷控制寄存器,其中中斷允許寄存器IE控制中斷源的使用與屏蔽。中斷優(yōu)先級寄存器IP實現(xiàn)中斷源的兩個優(yōu)先級控制。MCS-51單片機的中斷結(jié)構(gòu)如圖所示:任務5-10-1簡易數(shù)碼秒表設計一、MCS-51單片機的中斷系統(tǒng)2.MCS-51的中斷源
MCS-51單片機有5個中斷源,它們是兩個外中斷INT0(P3.2)和INT1(P3.3)、兩個片內(nèi)定時/計數(shù)器溢出中斷TF0和TF1,一個片內(nèi)串行口中斷TI或RI,這幾個中斷源由TCON和SCON兩個特殊功能寄存器進行控制。TCON寄存器的結(jié)構(gòu)如下表所示:TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88HTCON寄存器各位控制功能簡要說明如下: (1)TF1:定時/計數(shù)器T1的溢出標志位 (2)TR1:定時/計數(shù)器T1的運行控制位 (3)TF0:定時/計數(shù)器T0的溢出標志位 (4)TR0:定時/計數(shù)器T0的運行控制位 (5)IE1:外部中斷INT1的中斷請求標志位 (6)IT1:外部中斷INT1的觸發(fā)方式控制位 (7)IE0:外部中斷INT0的中斷請求標志位 (8)IT0:外部中斷INT0的觸發(fā)方式控制位任務5-10-1簡易數(shù)碼秒表設計一、MCS-51單片機的中斷系統(tǒng)3.中斷的控制 有四個特殊功能寄存器可以用來進行中斷的控制,它們是TCON、SCON、IE和IP。(1)中斷允許控制寄存器IE:MCS-51單片機對中斷的開放和屏蔽是由中斷允許寄存器IE控制來實現(xiàn)的,IE的結(jié)構(gòu)格式如下表所示:IE寄存器的各控制位功能說明如下: ①EA:中斷總控制位 ②EX0:外中斷INT0的中斷控制位 ③ET0:定時/計數(shù)器T0的中斷控制位 ④EX1:外中斷INT1的中斷控制位 ⑤ET1:定時/計數(shù)器T1的中斷控制位 ⑥ES:串行口中斷控制位IED7D6D5D4D3D2D1D0EA--ESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8H任務5-10-1簡易數(shù)碼秒表設計一、MCS-51單片機的中斷系統(tǒng)(2)中斷優(yōu)先級控制寄存器IP MCS-51單片機對中斷優(yōu)先級的控制是由中斷優(yōu)先級控制寄存器IP來實現(xiàn)的,IP的結(jié)構(gòu)格式如下表所示:IP寄存器的各控制位功能說明如下: ①PX0:外中斷INT0優(yōu)先級控制位 ②PT0:定時/計數(shù)器T0優(yōu)先級控制位 ③PX1:外中斷INT1優(yōu)先級控制位 ④PT1:定時/計數(shù)器T1優(yōu)先級控制位 ⑤PS:串行口中斷口優(yōu)先級控制位IPD7D6D5D4D3D2D1D0---PSPT1Px1PT0PX0位地址BCHBBHBAHB9HB8H任務5-10-1簡易數(shù)碼秒表設計一、MCS-51單片機的中斷系統(tǒng)
MCS-51單片機的5個中斷源由其硬件結(jié)構(gòu)決定的自然優(yōu)先級別排列順序與服務程序入口地址:中斷編號中斷源自然優(yōu)先順序入口地址0外中斷INT0高
低0003H1定時/計數(shù)器T0000BH2外中斷INT10013H3定時/計數(shù)器T1001BH4串行口中斷RI或TI0023H任務5-10-1簡易數(shù)碼秒表設計一、MCS-51單片機的中斷系統(tǒng)4.中斷的響應
MCS-51CPU在每一個機器周期順序檢查每一個中斷源,在機器周期的S6按優(yōu)先級處理所有被激活的中斷請求,此時,如果CPU沒有正在處理更高或相同優(yōu)先級的中斷,或者現(xiàn)在的機器周期不是所執(zhí)行指令的最后一個機器周期,或者CPU不是正在執(zhí)行RETI指令或訪問IE和IP的指令(因為按MCS-51中斷系統(tǒng)的特性規(guī)定,在執(zhí)行完這些指令之后,還要在繼續(xù)執(zhí)行一條指令,才會響應中斷),CPU在下一個機器周期響應激活了的最高級中斷請求。
中斷響應的主要內(nèi)容就是由硬件自動生成一條長調(diào)用LCALLaddr16指令,這里的addr16就是程序存儲器中相應的中斷區(qū)入口地址。
生成LCALL指令后,CPU緊跟著便執(zhí)行之。首先將PC(程序計數(shù)器)的內(nèi)容壓入堆棧保護斷點,然后把中斷入口地址賦予PC,CPU便按新的PC地址(即中斷服務程序入口地址)執(zhí)行程序。
各中斷區(qū)只有8個單元,一般情況下(除非中斷程序非常簡單),都不可能安裝下一個完整的中斷服務程序。因此,通常是在這些入口地址區(qū)放置一條無條件轉(zhuǎn)移指令,使程序按轉(zhuǎn)移的實際地址去執(zhí)行真正的中斷服務程序。二、硬件電路設計三、軟件程序設計任務5-10-1簡易數(shù)碼秒表設計任務5-10-2使用定時器T0的中斷控制數(shù)碼管倒計數(shù)顯示一、MCS-51單片機寄存器組的切換
當單片機正在執(zhí)行一個特定的任務時,可能有更緊急的事情需要CPU來處理。在一個具有優(yōu)先級的系統(tǒng)中,CPU不是等待第一個任務完成,而是假定前一個任務已完成,立即處理新任務。但是若程序流程立即轉(zhuǎn)向新任務,則新任務使用的各寄存器破壞了第一個任務使用的中間信息。當新任務完成后返回來重新執(zhí)行第一個任務時,寄存器的值可引起錯誤發(fā)生。解決的辦法是,在每次發(fā)生任務變化時,執(zhí)行一些必要的現(xiàn)場保護指令,這就叫做上下文切換。 8051是一種基于累加器的單片機,具有8個通用寄存器(R0~R7)。每個寄存器都是一個單字節(jié)的寄存器。這8個通用寄存器可以認為是一組寄存器或者一個寄存器組。8051提供了4個可用的寄存器組。當使用中斷時,多組寄存器將帶來許多方便。典型的8051C程序不需要選擇或切換寄存器組,默認使用寄存器組0。寄存器組1、2或3最好在中斷服務程序中使用,以避免用堆棧保存和恢復寄存器。任務5-10-2使用定時器T0的中斷控制數(shù)碼管倒計數(shù)顯示一、MCS-51單片機寄存器組的切換 8051有4個寄存器組,每組8字節(jié)位于內(nèi)部RAM的起始位置。分配R0~R7對應這8字節(jié),具體位置取決于PSW(程序狀態(tài)字)的兩位(RS0、RS1)設置。這兩位決定給定時間內(nèi)R0~R7對應的HEX地址0~7、8~F、10~17或18~1F。寄存器組使得程序流程有非常快的上下文切換。當中斷發(fā)生時,典型變化包括由一動作移到另一動作。不是推進和彈出堆棧,兩位(RS0、RS1)的改變可保存所有8個寄存器。當運行一個中斷任務時,采用不同的寄存器組。一個任務的8字節(jié)保留,另一個不同的8字節(jié)用在新任務中。
高優(yōu)先級中斷可以中斷正在處理的低優(yōu)先級中斷,因而必須注意寄存器組的分配。最好給每種優(yōu)先級程序分配不同的寄存器組。當前工作寄存器可由PSW中的兩位設置,也可使用using指定,using后的變量為一個0~3的常整數(shù)。任務5-10-2使用定時器T0的中斷控制數(shù)碼管倒計數(shù)顯示一、MCS-51單片機寄存器組的切換 Using不允許用于外部函數(shù)。它對函數(shù)的目標代碼影響如下: ①函數(shù)入口處將當前寄存器組保留; ②使用指定的寄存器組; ③函數(shù)退出前,寄存器組恢復。
中斷服務函數(shù)的完整語法如下: 返回值函數(shù)名([參數(shù)])[模式][重入]interruptn[usingn]
中斷不允許用于外部函數(shù)。它對函數(shù)的目標代碼影響如下: ①當調(diào)用函數(shù)時,SFR中的ACC、B、DPH、DPL和PSW(當需要時)入棧; ②如果不使用寄存器組切換,則甚至中斷函數(shù)所需的所有工作寄存器都入棧; ③函數(shù)退出前,所有的寄存器內(nèi)容出棧; ④函數(shù)由8051的指令RETI終止。二、硬件電路設計三、軟件程序設計任務5-10-2使用定時器T0的中斷控制數(shù)碼管倒計數(shù)顯示任務5-10-3使用計數(shù)器T1的中斷控制數(shù)碼管顯示按鍵計數(shù)一、C語言的編譯預處理
編譯預處理是C語言編譯器的一個組成部分。在C語言中,通過一些預處理命令,可以在很大程度上為C語言本身提供許多功能和符號上的擴充,增強C語言的靈活性和方便性。預處理命令可以在編寫程序時加在需要的地方,但它只在程序編譯時起作用,并且通常是按行進行處理的,因此又稱為編譯控制行。編譯器在對整個程序進行編譯之前,先對程序中的編譯控制進行預處理,然后再將預處理的結(jié)果與整個C語言源程序一起進行編譯,以產(chǎn)生目標代碼。常用的預處理命令有宏定義、文件包含和條件命令。為了與一般的C語言語句區(qū)別,預處理命令由“#”開頭。 1.宏定義
C語言允許用一個標志符來表示一個字符,稱為宏。被定義為宏的標志符為宏名。在編譯預處理時,程序中的所有宏名都用宏定義中的字符串代替,這個過程稱為宏代換。宏定義分為不帶參數(shù)的宏定義和帶參數(shù)的宏定義。
(1)不帶參數(shù)的宏定義的一般形式如下:
#define標志符字符串 示例如下:
#definePI3.1415926任務5-10-3使用計數(shù)器T1的中斷控制數(shù)碼管顯示按鍵計數(shù)一、C語言的編譯預處理
(2)帶參數(shù)的宏定義 帶參數(shù)的宏定義不是進行簡單的字符口串替換,還要進行參數(shù)替換,其一般形式:
#define宏名(參數(shù)表)字符串 字符串中包含在括弧中所指定的參數(shù)。 2.文件包含 文件包含是指一個程序?qū)⒘硪粋€指定的文件的全部內(nèi)容包含進來。文件包含命令的一般格式如下:
#include<文件名>
一條#include命令只能指定一個被包含文件。如果程序中要包含多個文件,則需要使用多個包含命令。當程序中需要調(diào)用C51編譯器提供的各種庫函數(shù)時,必須在程序的開頭使用#include命令將相應的函數(shù)說明文件包含進來。
3.條件編譯 一般情況下,對C語言程序進行編譯時,所有的程序都參加編譯。但有時希望對其中某一部分內(nèi)容只在滿足一定條件下才進行編譯,這就是所謂的條件編譯。條件編譯可以選擇不同的編譯范圍,從而產(chǎn)生不同的代碼。C51編譯器的預處理提供的條件編譯命令可以分為3種形式。任務5-10-3使用計數(shù)器T1的中斷控制數(shù)碼管顯示按鍵計數(shù)一、C語言的編譯預處理
(1)#ifdef標志符 程序段1 #else
程序段2 #endif
如果指定的標志符已被定義,則“程序段1”參加編譯,并產(chǎn)生有效代碼,而忽略掉“程序段2”。否則,“程序段2”參加編譯并產(chǎn)生有效代碼,而忽略掉“程序段1”。
(2)#if常量表達式 程序段1 #else
程序段2 #endif
如果常量表達式為“真”,則;否則編譯“程序段2”。任務5-10-3使用計數(shù)器T1的中斷控制數(shù)碼管顯示按鍵計數(shù)一、C語言的編譯預處理
(3)#ifndef標志符 程序段1 #else
程序段2 #endif
該形式編譯命令的格式與第一種命令格式只有第一行不同,它的作用與第一種編譯命令的作用正好相反。即指定的標志符末被定義,則“程序段1”參加編譯,并產(chǎn)生有效代碼,而忽略掉“程序段2”。否則,“程序段2”參加編譯并產(chǎn)生有效代碼,而忽略掉“程序段1”。二、硬件電路設計三、軟件程序設計任務5-10-3使用計數(shù)器T1的中斷控制數(shù)碼管顯示按鍵計數(shù)
項目11音樂播放控制任務5-11使用定時器T0的中斷實現(xiàn)歌曲的播放任務5-11使用定時器T0的中斷實現(xiàn)歌曲的播放一、單片機的音樂播放控制
1.音調(diào)與頻率的對應關(guān)系 下表列出了C調(diào)的音調(diào)與頻率的對應關(guān)系。音調(diào)低1(低音“dao”)低2低3低4低5低6低7頻率262294330349392440494音調(diào)1(中音“dao”)234567頻率523587659698784880988音調(diào)高1(高音“dao”)高2高3高4高5高6高7頻率1046117513181397156817601967任務5-11使用定時器T0的中斷實現(xiàn)歌曲的播放一、單片機的音樂播放控制
2.音調(diào)(音頻)控制 要讓蜂鳴器發(fā)出某音調(diào)的聲音,只要給蜂鳴器輸送該音調(diào)頻率的電平信號就可以了。由于單片機是數(shù)字電路系統(tǒng),所以輸送給蜂鳴器的音頻信號是方波脈沖,其高低電平轉(zhuǎn)換頻率即為音調(diào)的頻率,每一次高電平或低電平的維持時間為該音頻的半周期。為此需要利用定時器的中斷,讓輸送給蜂鳴器的電平信號按音頻的半周期取反。本書使用的單片機晶振頻率為11.0592MHz,它的一個機器周期為1.085μs。設需要發(fā)出的音調(diào)頻率為f(Hz),則其半周期為1/2f(s),需要的機器周期數(shù)(即定時器的定時常數(shù))為音頻半周期與機器周期之比。用C表示定時器的定時常數(shù),根據(jù)上述分析,定時器的定時常數(shù)C的計算公式為:任務5-11使用定時器T0的中斷實現(xiàn)歌曲的播放一、單片機的音樂播放控制
按照頻率范圍計算,定時常數(shù)C的取值范圍在234——1759之間,所以定時器工作方式應選用方式0(最大計數(shù)值8192)或方式1(最大計數(shù)值65536)。 定時器工作于方式0時,其初值可設定如下(以定時器T0為例):
TH0=(8192-C)/32 //定時器T0高8位賦初值
TL0=(8192-C)%32 //定時器T0低5位賦初值 定時器工作于方式1時,其初值可設定如下(以定時器T0為例):
TH0=(65536-C)/256 //定時器T0高8位賦初值
TL0=(65536-C)%256 //定時器T0低8位賦初值任務5-11使用定時器T0的中斷實現(xiàn)歌曲的播放一、單片機的音樂播放控制
3.節(jié)拍控制 設簡譜的節(jié)拍為每分鐘72拍,則每個節(jié)拍需時間833ms(60s/72)。根據(jù)樂譜知識,各相關(guān)節(jié)拍需時如下:
1拍 833ms 1/2拍 416ms 1/4拍 208ms
根據(jù)上述分析,可以取1/4拍(約200ms)為一個延時單位,若某音調(diào)為1/2拍,則延時2個單位;若某音調(diào)為1拍,則延時4個單位。
4.樂譜的管理 樂譜是由有序的音符(音調(diào)與節(jié)拍)構(gòu)成的。有序的音調(diào)與節(jié)拍可以分別各用一個數(shù)組來管理。將簡譜中所有音調(diào)的頻率及其節(jié)拍數(shù)分別存儲于兩個數(shù)組,樂譜播放時依次從數(shù)組中讀出頻率與節(jié)拍數(shù)。程序根據(jù)頻率和定時器延時常數(shù)計算公式由定時器中斷控制發(fā)出該音符的音頻與節(jié)拍,輸出控制電平,控制蜂鳴器播放樂曲。任務5-11使用定時器T0的中斷實現(xiàn)歌曲的播放一、單片機的音樂播放控制
5.音調(diào)的宏定義 在音調(diào)的存儲中,直接將頻率存入數(shù)組,顯然不如以“dao、re、mi、fa、sao、…”的形式存儲更專業(yè)、易讀。但是單片機并不認識“dao、re、mi、fa、sao、…”這些符號。為了讓單片機認識“dao、re、mi、fa、sao、…”,需要在程序開頭處對各音調(diào)的頻率進行宏定義。以下是C語言中對音調(diào)的頻率進行宏定義的幾個例句:
#definel_dao262 //將“l(fā)_dao”宏定義為低音“1”的頻率262Hz #definere587 將“re”宏定義為中音“2”的頻率587Hz #defineh_mi1318 //將“h_mi”宏定義為高音“3”的頻率1318Hz
有了上述宏定義,只要直接將“dao、re、mi、fa、sao、…”及其節(jié)拍存入數(shù)組,再由單片機讀出處理,就可以播放音樂了。任務5-11使用定時器T0的中斷實現(xiàn)歌曲的播放一、單片機的音樂播放控制6.本項目要播放的樂譜二、硬件電路設計三、軟件程序設計任務5-10-3使用計數(shù)器T1的中斷控制數(shù)碼管顯示按鍵計數(shù)
項目12外部中斷源中斷控制
任務5-12-1使用外中斷對脈沖信號計數(shù),結(jié)果送LED數(shù)碼管顯示任務5-12-2使用外中斷控制數(shù)碼管顯示按鍵計數(shù)任務5-12-3使用數(shù)碼管顯示倒計數(shù)過程穿插中斷控制任務5-12-1使用外中斷對脈沖信號計數(shù),結(jié)果送LED數(shù)碼管顯示一、MCS-51單片機的中斷處理流程
CPU響應中斷請求后,就立即轉(zhuǎn)入執(zhí)行中斷服務程序。不同的中斷源、不同的中斷要求可能有不同的中斷處理具體方法,但中斷處理的一般流程大致如下: ①現(xiàn)場保護和現(xiàn)場恢復 ②中斷打開和中斷關(guān)閉 ③中斷服務程序 ④中斷返回二、硬件電路設計三、軟件程序設計任務5-12-1使用外中斷對脈沖信號計數(shù),結(jié)果送LED數(shù)碼管顯示任務5-12-2使用外中斷控制數(shù)碼管顯示按鍵計數(shù)一、單片機模塊化程序設計基礎知識
1.程序的組成 程序包括數(shù)據(jù)說明(由數(shù)據(jù)定義部分來實現(xiàn))和數(shù)據(jù)操作(由語句來實現(xiàn))兩部分。數(shù)據(jù)說明主要定義數(shù)據(jù)結(jié)構(gòu)(由數(shù)據(jù)類型表示)和數(shù)據(jù)的初值。數(shù)據(jù)操作的任務是對數(shù)據(jù)進行加工處理。從結(jié)構(gòu)化程序設計的角度來說,程序應該分成若干源程序,每個源程序完成特定的功能,源程序中可重復使用的部分由子程序完成。在C語言中,子程序的作用是由函數(shù)來完成的,函數(shù)是C語言最基本的組成單位。C程序的組成如右圖所示。任務5-12-2使用外中斷控制數(shù)碼管顯示按鍵計數(shù)一、單片機模塊化程序設計基礎知識
2.模塊化程序設計相關(guān)的幾個術(shù)語(1)文件 單片機控制的數(shù)據(jù)或程序都是以文件的形式來儲存的,文件是單片機控制技術(shù)中的基本存儲單位。在單片機控制技術(shù)中要用到各種各樣的文件。(2)源程序文件 一個C源程序文件是由一個或多個函數(shù)組成的。(3)目標文件 目標文件包含所要開發(fā)使用的單片機的機器代碼。目標指的是所要用的單片機,目標文件即目標程序文件,是單片機可執(zhí)行的程序文件。(4〕匯編器/編譯器 匯編器是針對匯編語言程序的;編譯器是針對高級語言(如C語言)程序的。它們的作用是把源程序翻譯成單片機可執(zhí)行的目標代碼,產(chǎn)生一個目標文件。一個源程序文件是一個匯編/編譯的單位。任務5-12-2使用外中斷控制數(shù)碼管顯示按鍵計數(shù)一、單片機模塊化程序設計基礎知識(5)段 段和程序存儲器或數(shù)據(jù)存儲器有關(guān),可分為程序段和數(shù)據(jù)段。段可以是重定位的,具有一個段名、類型及其屬性。它們在存儲器中的最終位置留給鏈接器/定位器確定,或由編程者指定絕對地址。一個完整段由各個模塊中具有相同段名的段組合而成。(6)模塊 模塊是包含一個或多個段的文件,由編程者命名。模塊的定義決定局部符號的作用域。通常模塊為顯示、計算或用戶接口相關(guān)的函數(shù)或子程序。(7)庫 庫是包含一個或多個模塊的文件。這些模塊通常是由編譯或匯編得到的可重定位的目標模塊,在鏈接時和其他模塊組合。鏈接器從庫中僅僅選擇與其他模塊相關(guān)的模塊,即由其他模塊調(diào)用的模塊。任務5-12-2使用外中斷控制數(shù)碼管顯示按鍵計數(shù)一、單片機模塊化程序設計基礎知識(8)鏈接器/定位器 鏈接是把各模塊中所有具有相同段名及類型名的段連接起來,生成一個完整程序的過程。鏈接由鏈接器完成。它識別所有的公共符號(變量、函數(shù)和標號名)。定位器是給每個段分配地址的工具。在鏈接時把模塊的同名段放入一整段,定位時重新填入段的絕對地址。所有同類(程序CODE、內(nèi)部數(shù)據(jù)DATA和外部數(shù)據(jù)XDATA等)組合成相應的單一段。KEILC軟件中,鏈接器和定位器合二為一,成為鏈接器/定位器Lx51,如下圖所示。(9)應用程序 應用程序是整個開發(fā)過程的目的,是單一的絕對目標文件。它把全部輸入模塊的所有絕對及可重新定位的段鏈接起來,最后形成單一的絕對模塊。應用程序準備下載到仿真器調(diào)試運行,調(diào)試通過后固化到EPROM中,在用戶目標系統(tǒng)中運行,完成所需的功能。任務5-12-2使用外中斷控制數(shù)碼管顯示按鍵計數(shù)一、單片機模塊化程序設計基礎知識
3.文件命名說明 程序文件有幾個常用的擴展名,需要做一些了解,簡要說明如下: “.ASM”或“.A51”:匯編語言源文件 “.P51”:PL/M語言源文件 “.C51”或“.C”:C語言源文件 “.LST”:包含匯編/編譯的程序和錯誤的列表文件 “.OBJ”:可重定位的目標模塊文件,(最后的絕對目標文件用同名而無擴展名的文件表示) “.HEX”:轉(zhuǎn)換成的Intel目標文件 “.LIB”:庫文件 “.M51”或“.MAP”鏈接/定位后的映像文件 “.LNK”:鏈接器/定位器使用的文件 “.H”:編譯時加入到源文件中的頭文件任務5-12-2使用外中斷控制數(shù)碼管顯示按鍵計數(shù)一、單片機模塊化程序設計基礎知識
4.模塊化程序開發(fā)的優(yōu)點 模塊化程序開發(fā)是一種軟件設計方法,各模塊程序分別編寫、編譯和調(diào)試,最后各模塊一起鏈接/定位。模塊化程序開發(fā)有以下優(yōu)點: (1)模塊化程序開發(fā)使程序開發(fā)更有效。小塊程序更容易理解與調(diào)試。當知道模塊的輸入和所要求的輸出時,就可以相對獨立地直接測試小模塊。 (2)當同類功能的需求較多時,可以把相關(guān)子程序放入庫中以備反復調(diào)用,而不必每次都要重新編寫。 (3)模塊化程序開發(fā)使得要解決的問題與特定模塊分離,很容易找到出錯的模塊,大大簡化了程序的調(diào)試環(huán)節(jié)。任務5-12-2使用外中斷控制數(shù)碼管顯示按鍵計數(shù)一、單片機模塊化程序設計基礎知識
5.模塊化程序開發(fā)過程 如右圖為C語言模塊化程序開發(fā)過程示意圖。因為需要不斷完善,所以這個程序開發(fā)過程經(jīng)常會重復許多遍。優(yōu)秀的系統(tǒng)開發(fā)者會先讓各模塊正常工作起來,然后再把它們集成到最終的軟件當中。
(1)規(guī)劃整個項目,包括使用哪些硬件以及規(guī)劃軟件怎么分工。 (2)編寫程序,并把它輸入到文件中以便編譯。 (3)編譯源程序,可包括把目標模塊放入庫中。 (4)讓目標文件分配到特定的存儲位置,這是定位,通常包括鏈接。對于較為復雜的開發(fā)項目,整個程序通常由幾個源程序構(gòu)成,它們分別編寫,或許也有庫包含在內(nèi)。 (5)讓絕對目標文件傳入單片機進行控制工作。若是由駐留的監(jiān)控程序完成,就是下載;若是把文件寫入EPROM裝入目標單片機中,就是固化。 (6)調(diào)試程序,對可能存在的問題進行分析診斷與修改完善,直
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國緊湊型真空干燥箱行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球高純渦輪分子泵行業(yè)調(diào)研及趨勢分析報告
- 自治物業(yè)管理合同
- 工廠員工勞動合同范本
- 展柜采購合同
- 農(nóng)場承包合同協(xié)議書
- 建筑工程合同的簡述
- 杭州市二手房買賣合同
- 砌體施工勞務合同
- 2025抵押擔保借款合同
- 醫(yī)院課件:《食源性疾病知識培訓》
- 浙教版七年級數(shù)學下冊單元測試題及參考答案
- 華為人才發(fā)展與運營管理
- 卓有成效的管理者讀后感3000字
- 七年級下冊-備戰(zhàn)2024年中考歷史總復習核心考點與重難點練習(統(tǒng)部編版)
- 巖土工程勘察服務投標方案(技術(shù)方案)
- 實驗室儀器設備驗收單
- 新修訂藥品GMP中藥飲片附錄解讀課件
- 蒙特利爾認知評估量表北京版
- 領導干部個人有關(guān)事項報告表(模板)
- GB/T 7631.18-2017潤滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類)的分類第18部分:Y組(其他應用)
評論
0/150
提交評論