




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第五章
中斷系統(tǒng)5-1
中斷技術(shù)的概述
5-2
MCS-51中斷系統(tǒng)中斷系統(tǒng)是計算機的重要指標(biāo)之一。
一、
中斷概念某人看書 執(zhí)行主程序 日常事務(wù)電話鈴響 中斷信號INT=0 中斷請求暫停看書
暫停執(zhí)行主程序中斷響應(yīng)書中作記號當(dāng)前PC入棧 保護(hù)斷點電話談話 執(zhí)行I/O程序 中斷服務(wù)繼續(xù)看書 返回主程序 中斷返回日常事務(wù)程序中斷服務(wù)程序5-1
中斷技術(shù)的概述
三、中斷優(yōu)先權(quán)1.當(dāng)同時有多個中斷請求信號,先響應(yīng)優(yōu)先級別高的中斷請求。2.高優(yōu)先級中斷請求信號可中斷低優(yōu)先級中斷服務(wù)。四、中斷源能發(fā)出中斷請求信號的各種事件。如I/O設(shè)備、定時時鐘、系統(tǒng)故障、軟件設(shè)定等。單片機中也有一些可以引起中斷的事件,8031中一共有5個:兩個外部中斷,兩個計數(shù)/定時器中斷,一個串行口中斷。
日常事務(wù)程序中斷服務(wù)程序1中斷服務(wù)程序2二、中斷過程中斷系統(tǒng)工作可由中斷請求、中斷響應(yīng)、中斷服務(wù)、中斷返回四個階段組成。5-2 MCS-51中斷系統(tǒng)
中斷系統(tǒng)內(nèi)部結(jié)構(gòu)一.中斷源信號二.中斷允許控制2個外部中斷源信號:INT0、INT12個定時器T0、T1溢出中斷請求:TF0、TF11個串行口數(shù)據(jù)發(fā)送、接收結(jié)束中斷請求:TI、RI。三.2級中斷優(yōu)先級控制優(yōu)先級選擇開關(guān):PS、PT1、PX1、PT0、PX0總允許開關(guān):EA源允許開關(guān):ES、ET1、EX1、ET0、EX0如圖所示,MCS-51中斷系統(tǒng)由與中斷有關(guān)的特殊功能寄存器、中斷入口、順序查詢邏輯電路等組成,包括5個中斷請求源,4個用于中斷控制的寄存器IE、IP、ECON和SCON來控制中斷類弄、中斷的開、關(guān)和各種中斷源的優(yōu)先級確定。在MCS-51中斷系統(tǒng)中,中斷的允許或禁止是由片內(nèi)可進(jìn)行位尋址的8位中斷允許寄存器IE來控制的。見下表EAXXESET1EX1ET0EX0其中EA是總開關(guān),如果它等于0,則所有中斷都不允許。ES-串行口中斷允許ET1-定時器1中斷允許EX1-外中斷1中斷允許。ET0-定時器0中斷允許EX0-外中斷0中斷允許。例:如果我們要設(shè)置允許外中斷1,定時器1中斷允許,其它不允許,則IE可以是EAXXESET1EX1ET0EX010001100即8CH,當(dāng)然,我們也可以用位操作指令SETBEA
SETBET1SETBEX1來實現(xiàn)它。2、中斷允許寄存器IE大家應(yīng)當(dāng)明白,為什么前面有一些程序一始我們這樣寫:ORG0000HLJMPSTARTORG0030HSTART:。。。3、五個中斷源的中斷服務(wù)入口地址外中斷0:0003H定時器0:000BH外中斷1:0013H定時器1:001BH串口:0023H這樣寫的目的,就是為了讓出中斷源所占用的向量地址。當(dāng)然,在程序中沒用中斷時,直接從0000H開始寫程序,在原理上并沒有錯,但在實際工作中最好不這樣做。中斷服務(wù)入口地址它們的自然優(yōu)先級由高到低排列。單片機采用了自然優(yōu)先級和人工設(shè)置高、低優(yōu)先級的策略,即可以由程序員設(shè)定那些中斷是高優(yōu)先級、哪些中斷是低優(yōu)先級,由于只有兩級,必有一些中斷處于同一級別,處于同一級別的,就由自然優(yōu)先級確定。4、優(yōu)先級:開機時,每個中斷都處于低優(yōu)先級,我們可以用指令對優(yōu)先級進(jìn)行設(shè)置??幢?中斷優(yōu)先級中由中斷優(yōu)先級寄存器IP來高置的,IP中某位設(shè)為1,相應(yīng)的中斷就是高優(yōu)先級,否則就是低優(yōu)先級。XXXPSPT1PX1PT0PX0例:設(shè)有如下要求,將T0、外中斷1設(shè)為高優(yōu)先級,其它為低優(yōu)先級,求IP的值。IP的首3位沒用,可任意取值,設(shè)為000,后面根據(jù)要求寫就可以了例:在上例中,如果5個中斷請求同時發(fā)生,求中斷響應(yīng)的次序。響應(yīng)次序為:定時器0->外中斷1->外中斷0->實時器1->串行中斷。XXXPSPT1PX1PT0PX000000110因此,最終,IP的值就是06H中斷系統(tǒng)控制---中斷控制寄存器 1.中斷標(biāo)志位:
TF1、TF0、IE1、IE0、RI、TI登記各中斷源請求信號:=1,有中斷請求;=0,無中斷請求。CPU響應(yīng)中斷后,該中斷標(biāo)志自動清零。TI,RI標(biāo)志必須軟件清零。 2.外部中斷觸發(fā)方式選擇位:IT0、IT1=1:負(fù)邊沿觸發(fā)中斷請求;=0:低電平觸發(fā)中斷請求。 3.中斷允許控制位:EA、ES、ET1、EX1、ET0、EX0=1開中斷;=0關(guān)中斷。 例:允許CPU響應(yīng)INT0的中斷請求
SETBEX0 SETBEA
4.中斷優(yōu)先級控制位:PS、PT1、PX1、PT0、PX02級優(yōu)先級:=1為高優(yōu)先級,=0為低優(yōu)先級。 同一優(yōu)先級別按內(nèi)部查詢順序排列優(yōu)先級:
高INT0、T0、INT1、T1、SIO
低。
4.中斷優(yōu)先級控制位:PS、PT1、PX1、PT0、PX02級優(yōu)先級:=1為高優(yōu)先級,=0為低優(yōu)先級。 同一優(yōu)先級別按內(nèi)部查詢順序排列優(yōu)先級:
高INT0、T0、INT1、T1、SIO低。 1.中斷標(biāo)志位:
TF1、TF0、IE1、IE0、RI、TI登記各中斷源請求信號:=1,有中斷請求;=0,無中斷請求。CPU響應(yīng)中斷后,該中斷標(biāo)志自動清零。TI,RI標(biāo)志必須軟件清零。 2.外部中斷觸發(fā)方式選擇位:IT0、IT1=1:負(fù)邊沿觸發(fā)中斷請求;=0:低電平觸發(fā)中斷請求。 3.中斷允許控制位:EA、ES、ET1、EX1、ET0、EX0=1開中斷;=0關(guān)中斷。 例:允許CPU響應(yīng)INT0的中斷請求
SETBEX0 SETBEA 5-4中斷響應(yīng)和中斷返回1、中斷響應(yīng)的條件:我們?nèi)丝梢皂憫?yīng)外界的事件,是因為我們有多種“傳感器“――眼、耳可以接受不同的信息,計算機是如何做到這點的呢?MCS51工作時,在每個機器周期中都會去查詢一下各個中斷標(biāo)記,看他們是否是“1“,如果是1,就說明有中斷請求了,所以所謂中斷,其實也是查詢,不過是每個周期都查一下而已。這要換成人來說,就相當(dāng)于你在看書的時候,每一秒鐘都會抬起頭來看一看,查問一下,是不是有人按門鈴,是否有電話。。。。在下列三種情況之一時,CPU將封鎖對中斷的響應(yīng):ACPU正在處理一個同級或更高級別的中斷請求。B
現(xiàn)行的機器周期不是當(dāng)前正執(zhí)行指令的最后一個周期。我們知道,單片機有單周期、雙周期、三周期指令,當(dāng)前執(zhí)行指令是單字節(jié)沒有關(guān)系,如果是雙字節(jié)或四字節(jié)的,就要等整條指令都執(zhí)行完了,才能響應(yīng)中斷(因為中斷查詢是在每個機器周期都可能查到的)。
C
當(dāng)前正執(zhí)行的指令是返回批令(RETI)或訪問IP、IE寄存器的指令,則CPU至少再執(zhí)行一條指令才應(yīng)中斷。這些都是與中斷有關(guān)的,如果正訪問IP、IE則可能會開、關(guān)中斷或改變中斷的優(yōu)先級,而中斷返回指令則說明本次中斷還沒有處理完,所以都要等本指令處理結(jié)束,再執(zhí)行一條指令才可以響應(yīng)中斷。MCS-51的中斷響應(yīng)過程:2、中斷響應(yīng)過程這些工作都是由硬件來完成的,不必我們?nèi)タ紤]。這里還有個問題,大家是否注意到,每個中斷向量地址只間隔了8個單元,如0003-000B,在如此少的空間中如何完成中斷程序呢?很簡單,你在中斷處安排一個LJMP指令,不就可以把中斷程序跳轉(zhuǎn)到任何地方了嗎?一個完整的主程序看起來應(yīng)該是這樣的:ORG0000HLJMPSTARTORG0003HLJMPINT0;轉(zhuǎn)外中斷0ORG000BHRETI;沒有用定時器0中斷,在此放一條RETI,萬一“不小心“產(chǎn)生了中斷,也不會有太大的后果。CPU響應(yīng)中斷時,首先把當(dāng)前指令的下一條指令(就是中斷返回后將要執(zhí)行的指令)的地址送入堆棧,然后根據(jù)中斷標(biāo)記,將相應(yīng)的中斷入口地址送入PC,PC是程序指針,CPU取指令就根據(jù)PC中的值,PC中是什么值,就會到什么地方去取指令,所以程序就會轉(zhuǎn)到中斷入口處繼續(xù)執(zhí)行。3.中斷返回
4中斷響應(yīng)時間正常中斷響應(yīng)時間至少為3~8個機器周期,如果有同級或高級中斷服務(wù),將延長中斷響應(yīng)時間。中斷程序完成后,一定要執(zhí)行一條RETI指令,執(zhí)行這條指令后,CPU將會把堆棧中保存著的地址取出,送回PC,那么程序就會從主程序的中斷處繼續(xù)往下執(zhí)行了。注意:CPU所做的保護(hù)工作是很有限的,只保護(hù)了一個地址,而其它的所有東西都不保護(hù),所以如果你在主程序中用到了如A、PSW等,在中斷程序中又要用它們,還要保證回到主程序后這里面的數(shù)據(jù)還是沒執(zhí)行中斷以前的數(shù)據(jù),就得自己保護(hù)起來。中斷返回指令:
RETI=RET指令+通知CPU中斷服務(wù)已結(jié)束。
5-5中斷系統(tǒng)應(yīng)用舉例要求每次按動按鍵,使外接發(fā)光二極管LED改變一次亮滅狀態(tài)。解:INT0輸入按鍵信號,P1.0輸出改變LED狀態(tài)。1.跳變觸發(fā):每次跳變引起一次中斷請求。
ORG 0000H;復(fù)位入口 AJMPMAIN ORG 0003H ;中斷入口 AJMP PINT0 ORG 0100H ;主程序MAIN:MOVSP,#40H;設(shè)棧底
SETB EA ;開總允許開關(guān)
SETB EX0 ;開INT0中斷
SETB IT0 ;負(fù)跳變觸發(fā)中斷H: SJMP H ;執(zhí)行其它任務(wù)
ORG 0200H ;中斷服務(wù)程序PINT0:CPLP1.0 ;改變LED
RETI ;返回主程序單片機INT0P1.01+5V處理外部中斷
ORG 0000H;復(fù)位入口 AJMPMAIN ORG 0003H ;中斷入口 AJMP PINT0 ORG 0100H ;主程序MAIN:MOVSP,#40H;設(shè)棧底
SETB EA ;開總允許開關(guān)
SETB EX0 ;開INT0中斷
CLR IT0 ;低電平觸發(fā)中斷H: SJMP H ;執(zhí)行其它任務(wù)
ORG 0200H ;中斷服務(wù)程序PINT0:CPLP1.0 ;改變LEDWAIT:JNB P3.2,WAIT;等按鍵釋放
RETI ;返回主程序1.軟件等待按鍵釋放。2.硬件清除中斷信號。2.電平觸發(fā):避免一次按鍵引起多次中斷響應(yīng)。單片機INT0P1.01+5V例5—1圖5-3所示為一檢測報警電路,圖中檢測電路為無鎖按鈕開關(guān),P1.0、P1.1分別驅(qū)動聲、光報警電路。P1.0、P1.1端線輸出“1”時報警電路工作。試設(shè)計一程序,每當(dāng)按鍵按下一次后,P1.0,P1.1輸出報警信號10秒鐘,并使內(nèi)部RAM55H單元數(shù)據(jù)加1,10秒鐘延時子程序為DELLAY10。解:參考程序如下:
ORG0000HLJMPMAIN;上電或復(fù)位后自動轉(zhuǎn)向主程序。
ORG0003H LJMPBJ;外中斷0入口地址為0003H。
ORG0030H MAIN:MOV55H,#00H;計數(shù)器清零。
CLRP1.0;關(guān)報警。
CLRP1.1 MOVSP,#30H;設(shè)置堆棧指針。
SETBIT0;選擇邊沿觸發(fā)中斷方式。
SETBEA;允許總中斷。
SETBEX0;允許INT0申請中斷。HERE:SJMPHERE;等待中斷。以下為中斷服務(wù)子程序:
ORG00A0HBJ:PUSHACC;保護(hù)現(xiàn)場。
MOVA,#03H MOVP1,A;P1.0,P1.1置1,;即發(fā)出聲光報警。
LCALLDELAY10;延時10S。
MOVA,#00H MOVP1,A;清報警。
INC55H;計數(shù)器加1。
POPACC;現(xiàn)場恢復(fù)。
RETI;中斷返回。例5—2如圖5—4所示,當(dāng)按鍵AN1或AN2按下時,會產(chǎn)生中斷。試編程將INT0設(shè)為低優(yōu)先級,INT1設(shè)為高優(yōu)先級,主程序執(zhí)行時循序點亮LED;當(dāng)INT0產(chǎn)生中斷后,執(zhí)行中斷子程序1,此時8只LED全亮然后全暗,如此16次后,返回主程序;當(dāng)INT1產(chǎn)生中斷后,執(zhí)行中斷子程序2,此時8只LED則為一次亮4只,然后亮另外4只,如此16次后,返回主程序。解:參考程序如下:ORG0000HAJMPMAINORG0003HAJMPINT0ORG0013HAJMPINT1ORG0030HMAIN:MOVSP,#30H;設(shè)堆棧指針。SETBPX1;設(shè)外部中斷1優(yōu)先級為高。CLRPX0;設(shè)外部中斷0優(yōu)先級為低。MOVTCON,#05H;設(shè)邊沿觸發(fā)。SETBEA;允許總中斷。SETBEX0;允許INT0中斷。SETBEX1;允許INT1中斷。MOVA,#01H;從P1.7至P1.0循序亮一只。TOR1:RRAMOVP1,AACALLDELAY;延遲。AJMPTOR1INT0中斷子程序:ORG0100HINT0:PUSHPSW;保護(hù)現(xiàn)場。PUSHACCMOVR0,#10H;循環(huán)16次。LOOP1:MOVA,#00H;全亮。
MOVP1,AACALLDELAY;延遲。
MOVA,#0FFH;全暗。
MOVP1,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 唐朝女裝服飾講解
- 汽車火災(zāi)發(fā)生的原因、撲救、逃生
- 信息技術(shù)垃圾分類實施路徑
- 吸入一氧化氮治療在急危重癥中的臨床應(yīng)用專家共識
- 小學(xué)語文關(guān)聯(lián)詞基礎(chǔ)知識講解
- 砌體技術(shù)質(zhì)量交底
- 項目跟蹤結(jié)果匯報
- 糯山藥種植技術(shù)
- 項目工作完成匯報
- 現(xiàn)代辦公樓地面維修施工方案
- 國企總經(jīng)理競聘面試題8套和專業(yè)題22問及答案
- 亞洲合作資金管理辦法
- 低空經(jīng)濟相關(guān)政策文件
- 五年級語文上冊快樂讀書吧閱讀記錄卡《中國民間故事》
- 2025年社區(qū)專職干部招聘考試真題及答案
- 高等學(xué)??茖W(xué)技術(shù)學(xué)術(shù)規(guī)范指南講解
- 新課標(biāo)培訓(xùn)課件2022
- 咖啡相關(guān)知識培訓(xùn)課件
- 新職工保密培訓(xùn)課件
- 核電經(jīng)驗反饋管理制度
- 2025-2030年中國滑雪板設(shè)備行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
評論
0/150
提交評論