單片機仿真與制作(基于Proteus ISIS)課件 任務10.用二個外部中斷控制數碼管加減計數_第1頁
單片機仿真與制作(基于Proteus ISIS)課件 任務10.用二個外部中斷控制數碼管加減計數_第2頁
單片機仿真與制作(基于Proteus ISIS)課件 任務10.用二個外部中斷控制數碼管加減計數_第3頁
單片機仿真與制作(基于Proteus ISIS)課件 任務10.用二個外部中斷控制數碼管加減計數_第4頁
單片機仿真與制作(基于Proteus ISIS)課件 任務10.用二個外部中斷控制數碼管加減計數_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄【任務要求】【學習目標】【知識鏈接】1.中斷優先級-IP寄存器2.中斷嵌套【任務實施】【任務小結】【復習思考】

任務要求制作一個單片機最小系統電路板要求同時使用兩個外部中斷INT0和INT1,初始時7段數碼管顯示“-”。外部中斷INT0控制7段數碼管從0加到9,之后恢復原來的顯示“-”,外部中斷INT1控制7段數碼管從9減到0,之后恢復原來的顯示“-”,并且要求INT1的優先等級比INT0高,即:在INT0中斷從0加到9的過程中,INT1可以打斷,變成從9減到0,之后恢復到原來的INT0的現場(原來從哪個數字打斷就回到哪個數字)。學習目標進一步掌握單片機的外部中斷INT0、INT1;掌握中斷控制寄存器IP的設置方法;理解中斷優先級和中斷嵌套。知識鏈接-1.中斷優先級-IP寄存器為什么要有中斷優先級?這是因為CPU同一時間只能響應一個中斷請求。若同時來了兩個或兩個以上中斷請求,就必須有先后順序。為此將MCS-51單片機的5個中斷源分成高、低兩個級別,高級優先,由IP寄存器控制。MCS-51單片機有2個優先級:“0”和“1”,可通過IP寄存器進行設置。

IP寄存器各位與IE寄存器的各位是相對應的知識鏈接-1.中斷優先級-IP寄存器例如,單片機系統使用了INT0和INT1中斷,現在要求INT1比INT0的優先等級高,可用如下語句實現:

IP=0x04; //00000100,設置INT1為高優先級,其它為低優先級其中0x04就是二進制00000100,相當于把IP寄存器中的PX1設置為1,等同于如下語句:PX1=1; //設置INT1為高優先級知識鏈接-1.中斷優先級-IP寄存器若同一級(同為高級或同為低級)中的5個中斷源同時向CPU申請中斷,它們的優先順序遵循中斷的自然優先等級,它們的順序與在IP寄存器中的位置是相對應的,IP.0為最高等級,IP.6是最低等級。在實際應用中,很少能夠用到自然優先級,因為兩個中斷信號完全同時向CPU發出中斷請求的幾率非常小。

中斷的自然優先等級

中斷優先原則可以概括為四句話:①低級不打斷高級;②高級不理睬低級;③同級不能打斷;④同級同時中斷按自然優先級。知識鏈接-2.中斷嵌套中斷嵌套是指中斷系統正在執行一個中斷服務時,有另一個優先級更高的中斷提出中斷請求,這時會暫時終止當前正在執行的級別較低的中斷源的服務程序,去處理級別更高的中斷源,待處理完畢,再返回到被中斷了的中斷服務程序繼續執行,這個過程就是中斷嵌套。其實就是更高一級的中斷的“插隊”,處理器正在執行著中斷,又接受了更急的另一件“急件”,轉而處理更高一級的中斷的行為。

知識鏈接-2.中斷嵌套

中斷子程序(一)優先等級高于(或同級)中斷子程序(二)的執行流程

中斷子程序(一)優先等級高于(或同級)中斷子程序(二)的時候,只有等先申請中斷的子程序(一)執行完了之后才會響應后申請中斷的子程序(二)。知識鏈接-2.中斷嵌套

中斷子程序(一)優先等級低于中斷子程序(二)的執行流程

中斷子程序(一)優先等級低于中斷子程序(二)的時候,在先申請中斷的子程序(一)執行過程中,也會優先會響應后申請中斷的子程序(二),等子程序(二)執行完了之后再回到子程序(一),子程序(一)執行完了之后再回到主程序。任務實施1)準備元器件序號種類標號參數序號種類標號參數1電阻R110k6電容C310uF2電阻R210k7單片機U1STC89C523電阻R310k8排阻RN12204電容C130pF9晶振X111.0592M5電容C230pF任務實施2)搭建硬件電路仿真電路圖與配套實驗板對應的按鍵電路相同。該電路圖可用于仿真和手工制作,前述任務已經將本次任務的電路制作完畢,本次任務無需另外再制作。任務實施3)程序設計主程序正常執行時,只需要讓數碼管靜態顯示一個減號“-”即可。只需要在初始化時讓7段數碼管顯示“-”。其它不需要任何動作。外部中斷INT0控制7段數碼管從0加到9,用一個for循環,循環10次即可滿足要求。同樣,外部中斷INT1控制7段數碼管從9減到0,也可以用for循環實現。要求INT1的優先等級比INT0高給IP寄存器賦值00000100,即十六進制0x04即可。要在中斷之后恢復現場,還需要執行中斷動作前保存P0口原來的狀態,這時需要一個中間變量saveSEG7,這樣就能實現:從哪個數字打斷就回到哪個數字了。任務實施3)程序設計用二個外部中斷控制數碼管加減計數程序流程任務實施3)程序設計用二個外部中斷控制數碼管加減計數主程序清單main()//主程序開始{P2=0xf7;//P2.3為0,讓最右邊數碼管顯示IE=0x85;//打開外部中斷INT0和INT1IP=0x04;//設置INT1優先級高于INT0SEG7=0xbf;//數碼管初始時顯示“-while(1);//無窮等待,主程序無任何動作}//主程序結束任務實施4)使用Proteus仿真將“任務10.hex”加載(相同于實際單片機程序的下載)到仿真電路圖的單片機中,在仿真中,我們將看到:仿真開始時7段數碼管顯示“-”。任何時候按一下外部中斷INT0的按鍵,7段數碼管就從0加到9,之后恢復原來的顯示“-”。任何時候按一下外部中斷INT1的按鍵,7段數碼管就從9減到0,之后恢復原來的顯示“-”。在中斷程序顯示從0加到9的過程中,可以被INT1打斷,變成從9減到0,之后恢復到原來被打斷的那個數字直到加到9之后又顯示“-”。詳細仿真演示可直接打開“任務10.用二個外部中斷控制數碼管加減計數.DSN”任務實施5)使用配套實驗板調試所編寫的程序將程序文件“任務10.hex”下載到單片機中,給實驗板上電后,將看到與仿真中一樣的現象。任務10詳細的演示錄像見隨書光盤中的視頻文件“\演示錄像\任務10.用2個外部中斷控制數碼管加減計數.RMVB”和“\演示錄像\任務10.用2個外部中斷控制數碼管加減計數-雙面PCB板.RMVB”。任務小結通過單片機2個外部中斷INT0和INT1的實驗,讓讀者掌握了中斷控制寄存器IP的設置方法,并加深了讀者對中斷優先級和中斷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論