版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章中斷模塊主要內容:1.中斷模塊相關寄存器;2.中斷執(zhí)行流程;3.中斷服務程序設計。
在CPU和外設交換信息時,存在著快速CPU和慢速外設間的矛盾,機器內部有時也可能出現突發(fā)事件,為此,計算機中通常采用中斷技術。1.中斷:CPU和外設并行工作,當外設數據準備好(或有某種突發(fā)事件發(fā)生)時向CPU提出請求,CPU暫停正在執(zhí)行的程序轉而為該外設服務(或處理緊急事件),處理完畢再回到原斷點繼續(xù)執(zhí)行原程序。2.中斷源:引起中斷的原因或中斷申請的來源,稱為中斷源。
可以是I/O設備、故障、時鐘、調試中人為設置。中斷相關概念:3.中斷優(yōu)先級:當有多個中斷源同時向CPU申請中斷時,CPU優(yōu)先響應最需緊急處理的中斷請求,處理完畢再響應優(yōu)先級別較低的,這種預先安排的響應次序,為中斷優(yōu)先級。4.中斷的嵌套:在中斷系統(tǒng)中,高優(yōu)先級的中斷請求能中斷正在進行的較低級的中斷源處理。5.中斷系統(tǒng):能實現中斷功能并能對中斷進行管理的硬件和軟件,稱為中斷系統(tǒng)。一.中斷控制寄存器TCON----定時控制寄存器,
IE----中斷允許控制寄存器,IP----中斷優(yōu)先級控制寄存器.1、TCON88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0定時器使用位外部中斷使用說明:1.IT0和IT1為外中斷INT0
和INT1中斷觸發(fā)方式選擇,若選下降沿觸發(fā)則相應位置1;若選低電平觸發(fā),IT相應位置0。2.某中斷源有中斷請求,該中斷標志置1,無中斷請求,該中斷標志置03.TR0
和TR1
為定時器T0和T1工作啟動和停止控制。2、
IE中斷允許寄存器A8H
D7D6D5D4D3D2D1D0EAESET1EX1ET0EX00禁止,1允許ET0:定時器T0中斷允許位,ET0=1,允許T1計數溢出中斷;
ET0=0,禁止T0中斷。EX1:外部中斷INT1允許位,
EX1=1,允許INT1中斷;
EX1=0,禁止INT1中斷。EX0:外部中斷INT0允許位,
EX0=1,允許INT0中斷;
EX0=0,禁止INT0中斷。3、IP中斷優(yōu)先級寄存器B8H
D7D6D5D4D3D2D1D0PT2PSPT1PX1PT0PX00低級別,1高級別T0T1串行口
當某幾個中斷源在IP寄存器相應位同為1或同為零時,由內部查詢確定優(yōu)先級,查詢的順序是:CPU優(yōu)先響應先查詢的中斷請求T2INT0INT1五個中斷源的優(yōu)先級別由IP寄存器管理,相應位置1,則該中斷源優(yōu)先級別高,置0的優(yōu)先級別低。中斷系統(tǒng)結構IE0EX0TF0IE1TF1TIESET1EX1ET0RIIP硬件查詢高級中斷請求低級中斷請求中斷源INT0INT1中斷入口地址中斷源10IEPX0PSPT1PX1PT0111111111100000EA1≥1SCON11T0T1RXTXIT0IT100TCON中斷入口地址自然優(yōu)先級自然優(yōu)先級源允許總允許優(yōu)先級二、中斷執(zhí)行流程NNYYYN執(zhí)行指令中斷標志1?(中斷請求?)指令最后一個T周期?EA=1?允許位=1?CPU判別優(yōu)先權,響應優(yōu)先權高的中斷斷點的PC進棧,中斷服務入口地址送PC撤除中斷標志RETI中斷返回,斷點出棧送PC中斷請求中斷響應中斷服務中斷返回中斷服務中斷服務程序按規(guī)定的中斷矢量地址存入,由于五個中斷矢量地址0003H、000BH、0013H、001BH、0023H之間相距很近,往往裝不下一個中斷服務程序,通常將中斷服務程序安排在程序存貯器的其他地址空間,而在矢量地址的單元中安排一條轉移指令。
三、應用實例:中斷程序的設計
例1.在下圖中P1.4~P1.7接有四個發(fā)光二極管,P1.0~P1.3接四個開關,消抖電路產生中斷請求信號,當消抖電路的開關來回拔動一次產生一個下降沿信號,通過INT0向CPU申請中斷。
要求:初時發(fā)光二極管全滅,每中斷一次,P1.0~P1.3所接的開關狀態(tài)反映到發(fā)光二極管上,且要求開關斷開的對應發(fā)光二極管亮
程序:ORG0000HAJMPMAINORG0003H;INT0中斷入口
AJMPSER1;轉中斷服務程序
ORG0030H;主程序
MAIN:MOVP1,#0FH;高4位燈滅,低四位輸入寫1SETBIT0;邊沿觸發(fā)中斷
SETBEX0;允許外中斷0中斷
SETBEA;開中斷開關
SJMP$;等待中斷ORG0050H
SER1:MOVP1,#0FH;P1先寫入“1”且燈滅
MOVA,P1;輸入開關狀態(tài)換到高4位
SWAPA;低4位開關狀態(tài)電平
MOVP1,A;輸出到P1高4位
RETIEND中斷服務例2.AT89S51的P1口接一個共陰極的數碼管,利用消抖開關產生中斷請求信號,每來回拔動一次開關,產生一次中斷,用數碼管顯示中斷的次數(最多15次,十六進制數顯示)?!罰1.189S51P1.0P1.2P1.4P1.3P1.5P1.6&&1K2INT1驅動器+5VagEAORG0000HAJMPMAINORG0013H;INT1中斷入口
AJMPINT1;轉中斷服務程序
ORG0030H;主程序MAIN:SETBIT1;邊沿觸發(fā)中斷
SETBEX1;允許INT1中斷
SETBEA;開中斷開關
MOVR0,#0;計數初值為0MOVA,#3FH;“0”的字形碼送AAL1:MOVP1,A;顯示數碼AL2:CJNER0,#0FH,AL1;沒滿15次循環(huán)顯示
MOVR7,#0FFH;滿15次,顯‘F’
DJNZR7,$
MOVP1,#0;關顯示
CLREA;關中斷
SJMP$;結束INT1:INCR0;中斷次數加1MOVA,R0MOVDPTR,#TAB;DPTR指向字形碼表首址
MOVCA,@A+DPTR;查表
POPDPHPOPDPL;彈出斷點
MOVDPTR,#AL1PUSHDPLPUSHDPH;修改中斷返回點,AL1壓入堆棧
RETI;AL1地址→PC,返主程序AL處
TAB:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H;字形碼表
END
上面程序每中斷一次,執(zhí)行一次中斷服務程序INT1。在中斷服務程序中,累計中斷次數并查字形表,返回到主程序AL1地址執(zhí)行顯示。
將上面程序重排在同一頁:ORG0000HAJMPMAINORG0013HAJMPINT1ORG0030HMAIN:SETBIT1SETBEX1SETBEAMOVR0,#0MOVA,#3FHAL1:MOVP1,AAL2:CJNER0,#0FH,AL1MOVR7,#0FFHDJNZR7,$
MOVP1,#0CLREASJMP$
INT1:INCR0MOVA,R0MOVDPTR,#TABMOVCA,@A+DPTRPOPDPHPOPDPLMOVDPTR,#AL1PUSHDPLPUSHDPHRETI;AL1地址→PCTAB:DB3FH,06H,5BH,…
END
以上中斷在AL1或AL2兩指令處發(fā)生,究竟是哪一指令處中斷是隨機的,為保證返回到AL1顯示‘F’
,這里采用修改中斷返回點的辦法,即先從棧中彈出中斷響應時壓入的斷點彈到DPTR中,修改DPTR為用戶需要的返回點,并將其壓入堆棧,再通過執(zhí)行RETI指令彈出棧中內容到PC、彈出的即為修改后的地址,從而返回到主程序中所希望的地址執(zhí)行。
上例中中斷次數在主程序判斷,目的是了解修改中斷返回點的方法,如果改在中斷服務程序中判斷,編程簡潔些,下面僅介紹和上例中的不同部分的程序。
…
MOVR0,#0;計數初值為0MOVP1,#3FH;顯示‘0’
MOVDPTR,#TAB;指向字形碼表AGA:SJMP$;等待中斷INT1:INCR0;中斷次數加1MOVA,R0MOVCA,@A+DPTR;查字形碼表
MOVP1,A;顯示
CJNER0,#0FH,RE;15次中斷未到轉RECLREA;15次到關中斷
RE:RETI;返回主程序的AGA處
TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HC51使用戶能編寫高效的中斷服務程序,編譯器在規(guī)定的中斷源的矢量地址中放入無條件轉移指令,使CPU響應中斷后自動地從矢量地址跳轉到中斷服務程序的實際地址,而無需用戶去安排。中斷服務程序定義為函數,函數的完整定義如下。
其中interruptn表示將函數聲明為中斷服務函數,n為中斷源編號,可以是0~31間的整數,編譯器從8n+3處產生中斷向量地址。不允許是帶運算符的表達式,n通常取以下值:返回值函數名([參數])interruptn[usingm]C51中斷程序的設計
0外部中斷0;
1定時器/計數器0溢出中斷
2外部中斷1;
3定時器/計數器1溢出中斷
4串行口發(fā)送與接收中斷
Usingm定義函數使用的工作寄存器組,m的取值范圍為0~3,可缺省,它對目標代碼的影響是:函數入口處將當前寄存器保存,使用m指定的寄存器組,函數退出時原寄存器組恢復。選不同的工作寄存器組,可方便實現寄存器組的現場保護。
再入:屬性關鍵字reentrant將函數定義為再入的,在C51中,普通函數(非再入的)不能遞歸調用,只有再入函數才可被遞歸調用。中斷服務函數不允許用于外部函數,它對目標代碼影響如下:①當調用函數時,SFR中的ACC、B、DPH、DPL和PSW(當需要時入棧)。②如果不使用寄存器組切換,中斷函數所需的所有工作寄存器Rn都入棧。③函數退出前,所有工作寄存器出棧。④函數由“RETI”指令終止。
例1:C語言編程#include<reg51.h>int0()interrupt0/*INT0中斷函數*/{P1=0x0f;/*輸入端先置1,燈滅*/P1<<=4;/*讀入開關狀態(tài),并左移四位,}使開關反映在發(fā)光二極管上*/main(){
EA=1;/*開中斷總開關*/EX0=1;/*允許INT0中斷*/IT0=1;/*下降沿產生中斷*/while(1);/*等待中斷*/
}
主函數執(zhí)行while(1);語句進入死循環(huán)等待中斷,當撥動INT0的開關后,進入中斷函數,讀入P1.0~P1.3的開關狀態(tài)并將狀態(tài)數據右移四位到P1.4~P1.7的位置上輸出控制LED亮,執(zhí)行完中斷,返回到等待中斷的while(1)語句,等待下一次的中斷。
法1:在主程序中控制中斷次數
#include<reg51.h>chari;codechartab[16]={0x3f,0x06,0x5b,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};int1()interrupt2{i++;/*計中斷次數*/P1=tab[i];/*查表,次數送顯示*/
}
例2:用C語言編程,可有兩種編程方法。
main()
{
EA=1;EX1=1;IT1=1;ap5:P1=0x3f;/*顯示“0”*/for(i=0;i<16;);/*當I<16等待中斷*/gotoap5;/*當i=16重復下一輪16次中*/
}
法二:在中斷服務程序中控制中斷次數#include<reg51·h>chari;codechartab[16]={0x3f,0x06,0x5b,0x4F0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};int()interrupt2{
i++if(i<16)P1=tab[i];
else{i=0;P1=0x3f;}}
main(){
EA=1;EX1=1;IT1=1;P1=0x3f;
while(1);/*等待中斷*/
}四、
外部設備中斷的接入
在前面的示例中,中斷信號是按鍵動作模擬產生的,如果是某事件或某設備產生,將該事件或該設備轉變成低電平或脈沖下降沿引入INT中斷請求端即可,圖5-5和圖5-6是采用中斷方式輸入、輸出的接口,圖中省去了應答信號。如果外設需要應答信號,可由并行口設定。8XX51
輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨區(qū)域安保協作的模式與機制研究計劃
- 2025年高考物理一輪復習之相互作用
- 行政后勤員工福利政策
- 銀行工作總結務實高效創(chuàng)造價值
- 銀行工作總結協同合作共同發(fā)展
- IT行業(yè)客服工作技巧
- 2024年琵琶行原文
- 2024年美術教案經典(9篇)
- 《宮腔鏡的臨床應用》課件
- 到期不續(xù)合同范本(2篇)
- 期末綜合試卷(含答案)2024-2025學年蘇教版數學四年級上冊
- 2024-2025學年人教版道法八年級上冊 第一學期期末測試卷01
- 人教版數學小學二年級上冊無紙筆測試題
- GA 1809-2022城市供水系統(tǒng)反恐怖防范要求
- 客訴品質異常處理單
- DL∕T 617-2019 氣體絕緣金屬封閉開關設備技術條件
- 班級管理(第3版)教學課件匯總全套電子教案(完整版)
- 新北師大版八年級下冊數學(全冊知識點考點梳理、重點題型分類鞏固練習)(基礎版)(家教、補習、復習用)
- 公司崗位權責劃分表
- 玻璃采光頂施工工藝
- 多聯機空調安裝技術交底記錄大全
評論
0/150
提交評論