盛賢君單片機原理及應(yīng)用第3章中斷_第1頁
盛賢君單片機原理及應(yīng)用第3章中斷_第2頁
盛賢君單片機原理及應(yīng)用第3章中斷_第3頁
盛賢君單片機原理及應(yīng)用第3章中斷_第4頁
盛賢君單片機原理及應(yīng)用第3章中斷_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第3章

MCS-51的中斷系統(tǒng)及應(yīng)用3.1

中斷的基本概念3.2MCS-51的中斷源3.3

中斷的控制3.4

中斷查詢與響應(yīng)3.5

外部中斷3.6

中斷請求的撤除3.7

中斷響應(yīng)時間3.8

外部中斷編程練習(xí)中斷:CPU執(zhí)行正常程序時,系統(tǒng)中出現(xiàn)特殊請求(中斷申請),CPU暫時中止當前的程序,轉(zhuǎn)去處理更緊急的事件(執(zhí)行中斷服務(wù)程序),處理完畢后,CPU自動返回原程序(中斷返回)的過程。3.1中斷的基本概念執(zhí)行主程序繼續(xù)執(zhí)行主程序斷點中斷請求中斷響應(yīng)執(zhí)行中斷處理程序中斷返回中斷的作用提高CPU的工作效率;可使多項任務(wù)共享一個資源(CPU);可及時處理突發(fā)事件,實現(xiàn)分時操作、實時處理;解決CPU與外設(shè)之間的速度矛盾,使CPU高效率地對多個外部設(shè)備進行管理。3.1中斷的基本概念中斷應(yīng)用舉例:打印機操作狀態(tài)好?送一個字符NYCPU采用查詢方式為打印機服務(wù)中斷服務(wù)程序送一個字符中斷返回CPU采用中斷方式為打印機服務(wù)做某一工作主程序中斷響應(yīng)中斷返回斷點1斷點2斷點33.1中斷的基本概念

3.2.1MCS-51的中斷系統(tǒng)結(jié)構(gòu)MCS-51有5個中斷源:外部中斷(2個)、定時器中斷(2個)

和串行口中斷。中斷標志寄存器中斷允許寄存器IE/int0T0/int1T1ES中斷源標識符高優(yōu)先級中斷請求中斷矢量中斷源標識符低優(yōu)先級中斷請求中斷矢量源允許總允許EA中斷優(yōu)先級寄存器IP3.2MCS-51的中斷源返回T1的請求標志T0的請求標志/INT0的請求標志3.2.2中斷標志寄存器TF1TR1TF0TR0IE1IT1IE0IT01、控制寄存器TCON

(SFR地址:88H)2、串行口控制寄存器SCON(SFR地址:98H)SM0SM1SM2RENTB8RB8TIRI3.2MCS-51的中斷源/INT1的請求標志串行口接收請求標志串行口發(fā)送請求標志返回3.3.1中斷的開放和關(guān)閉控制EA:總允許位(一級控制)ES:串行口中斷允許位(二級控制)

ES=1時,允許RI、TI引發(fā)中斷,否則禁止串口中斷。ET1、ET0:定時器T1、T0允許位(二級控制)EX1、EX0:外中斷/int1、/int0允許位(二級控制)

“1”——允許;“0”——禁止中斷。EAXXESET1EX1ET0EX03.3中斷的控制由中斷允許寄存器IE實現(xiàn)兩級控制(SFR地址:0A8H)返回結(jié)構(gòu)圖例如,要允許外部中斷INT0開放,則可用下列指令:

SETBEASETBEX0或movIE,#81HPS:串行口中斷優(yōu)先級設(shè)定位;PT1、PT0:定時器T1、T0中斷優(yōu)先級設(shè)定位;PX1、PX0:外中斷int1、0中斷優(yōu)先級設(shè)定位;

=1:高優(yōu)先級,=0:為低優(yōu)先級。XXXPSPT1PX1PT0PX03.3.2中斷的優(yōu)先級控制由中斷優(yōu)先級寄存器IP實現(xiàn)兩級控制(SFR地址:0B8H)3.3中斷的控制返回結(jié)構(gòu)圖由于IP寄存器的設(shè)定,將5個中斷源分為兩個級別。對同時發(fā)生多個中斷申請時,中斷優(yōu)先級的處理將遵循下面基本原則:3.3.3中斷的優(yōu)先級排隊?不同優(yōu)先級的中斷同時申請(很難遇到)

——先高后低?相同優(yōu)先級的中斷同時申請(很難遇到)——按序執(zhí)行(見圖)?正處理低優(yōu)先級中斷又接到高級別中斷

——高打斷低?正處理高優(yōu)先級中斷又接到低級別中斷

——高不理低3.3中斷的控制舉例:如何改變中斷源的優(yōu)先級順序從中斷系統(tǒng)的硬件結(jié)構(gòu)圖可以清楚地看出同一級別中5個中斷源的查詢順序。很明顯,要改變這種順序只能通過IP的設(shè)置。例如:要想將串行口的級別設(shè)為最高時,將IP中的PS置1。

setbip.4

或mov0b8h,#10hIP寄存器3.3中斷的控制XXXPSPT1PX1PT0PX03.4中斷查詢與響應(yīng)在每個機器周期中,所有的中斷源都要按照其順序檢查一遍。到S6狀態(tài)時,就查找到所有被激活的中斷申請并排好優(yōu)先權(quán)。在下一個機器周期的S1狀態(tài),只要不受阻斷,就開始響應(yīng)高級中斷。如果發(fā)生下列情況,中斷將被阻止:

1、同級或高級中斷正在執(zhí)行時;

2、當前的機器周期不是指令的最后一個機器周期;

3、CPU正在執(zhí)行的指令是RETI或訪問IE、IP寄存器時,CPU是不會響應(yīng)中斷,而且要等到該指令的下一條指令執(zhí)行完后中斷才能響應(yīng)。3.4.1中斷的查詢返回當滿足中斷條件時——CPU查詢到某一中斷源后,使相應(yīng)的“優(yōu)先級激活觸發(fā)器”置位用以阻斷同級或低級中斷。在硬件控制下,自動將當時PC的內(nèi)容(斷點地址)進棧,以備返回;然后將相應(yīng)的中斷矢量裝入PC,使CPU轉(zhuǎn)向?qū)?yīng)的中斷服務(wù)程序。中斷服務(wù)程序最后一條指令是RETI,它將清除“優(yōu)先級激活觸發(fā)器”,從堆棧中彈出斷點地址并裝入PC中,使CPU回到原來主程序斷點處繼續(xù)運行。3.4中斷查詢與響應(yīng)(上電啟動地址)(INT0中斷入口)(T0中斷入口)(INT1中斷入口)(T1中斷入口)(串口中斷入口)0000H0003H000BH0013H001BH0023H3.4.2中斷的響應(yīng)過程3.5外部中斷在MCS-51引腳上有/INT0、/INT1兩個外部的中斷輸入。作為外部事件的觸發(fā)信號,其信號必須滿足一定的要求,否則將不能正確地引發(fā)中斷。MCS-51/INT0

/INT1/INT0觸發(fā)方式選擇TF1TR1TF0TR0IE1IT1IE0IT0TCON

(SFR地址:88H)CPU在每個機器周期的S5P2期間對它們進行一次檢測。系統(tǒng)設(shè)定了兩種觸發(fā)方式:下降沿觸發(fā)、低電平觸發(fā),由控制寄存器TCON中的IT0、IT1位來確定。/INT1觸發(fā)方式選擇IT=1時,下降沿觸發(fā);IT=0時,低電平觸發(fā)。返回

1、邊沿觸發(fā)方式:在相鄰的兩個機器周期,如果第一次采集是高電平,第二次采集是低電平時,則TCON中的標志IE0或IE1置位。所以,在邊沿觸發(fā)方式時:外部設(shè)備發(fā)出的邊沿信號(高電平和低電平)的時間應(yīng)大于一個機器周期,否則信號將可能漏檢。

2、電平觸發(fā)方式:CPU在每個機器周期的S5P2期間采集到INT0或INT1的引腳為低電平時將激活標志IE0或IE1。所以在這種觸發(fā)方式中,外部的低電平至少應(yīng)保留一個機器周期。MCS51對外部中斷觸發(fā)信號的要求3.5外部中斷如果外電路的信號不能滿足要求,可使用觸發(fā)器等硬件電路解決。3.6中斷請求的撤除以外中斷電平觸發(fā)為例:當CPU響應(yīng)該中斷進入到服務(wù)程序后,在執(zhí)行RETI指令返回主程序前,必須將外部的低電平撤掉,否則當CPU返回主程序后,會因為外部過長的低電平信號而使其再次進入中斷,這樣不僅造成一次多余的錯誤操作,而且使主程序無法正常運行。同理,其它中斷源也存在類似的問題。所以在使用中斷時必須清楚在返回主程序前時,其中斷請求(標志)是否要撤除、如何撤除等問題。一種解決外部電平請求信號過長的硬件方案外設(shè)(CP)觸發(fā)器QP1.0此電路還可以解決外部脈沖過窄,不能正確引發(fā)中斷的情況。中斷服務(wù)程序

MCS-51INTXP1.0DQCPS外部設(shè)備中服程序中完成撤消“1”“1”申請ANLP1,#FEHORLP1,#01HRETI服務(wù)程序主體CLRIE03.6中斷請求的撤除解決外部中斷信號過長的軟件方案在中斷處理程序的最后、返回主程序之前,對外中斷信號進行判斷、等待,只有當外信號消失后再返回主程序;軟件方案的一優(yōu)點:簡化硬件電路;缺點:降低了程序的運行速度,同時不能解決外部中斷信號過窄的問題。具體問題具體對待,選用哪種方案要根據(jù)具體情況綜合考慮。中斷服務(wù)程序RETI中斷處理程序外信號撤出?NY3.6中斷請求的撤除MCS-51的中斷請求的撤除方法中斷源中斷標志說明撤除方法INT0、INT1IE0、IE1外部邊沿觸發(fā)無影響INT0、INT1IE0、IE1外部電平觸發(fā)電路、軟件撤除T0、T1TF0、TF1定時計數(shù)器中斷自動清除標志ESRI、TI串行口中斷軟件清除標志注:此表指使用中斷服務(wù)程序來處理中斷事件時的情況。如果采用查詢的方法來處理事件時,都需要軟件來清除標志。3.6中斷請求的撤除3.7中斷響應(yīng)時間(以INTx為例)每個機器周期的S5P2時刻,INTx引腳的電平被鎖存到內(nèi)部寄存器中,待下一個周期查詢。

1、最短時間:中斷請求有效,查詢后在下一個周期便開始執(zhí)行一條硬件的子程序的調(diào)用(時間是兩個周期),然后開始執(zhí)行服務(wù)程序的第一條指令。這樣從鎖存電平的周期到執(zhí)行中斷服務(wù)程序,中間相隔3個機器周期。C1C2C3C4C5返回前一次中斷響應(yīng)時間:從中斷請求有效(外部中斷請求標志置1)到轉(zhuǎn)向中斷入口地址所需要的響應(yīng)時間執(zhí)行入口地址中的指令電平鎖存中斷查詢長調(diào)用,轉(zhuǎn)向入口地址

2、最長時間:如果中斷信號發(fā)生在前面所說的3種情況時,響應(yīng)時間就要變長:(1)響應(yīng)時間取決于正在執(zhí)行的同級或高級中斷的執(zhí)行時間;(2)指當前CPU執(zhí)行的指令是多周期指令,如乘除法指令(4個周期),最壞情況,還要等3個周期。這樣響應(yīng)周期變?yōu)?+3=6個周期;(3)CPU當前執(zhí)行的指令是RETI或訪問IE、IP寄存器時,本指令(1個周期)沒有響應(yīng),且下一條指令執(zhí)行完后才能響應(yīng),這樣附加的等待時間最長不會超過5個周期(1+4)。整個響應(yīng)為5+3=8個周期。這樣,如果不考慮第1種情況,整個中斷響應(yīng)的時間范圍應(yīng)當是:3~8個機器周期。3.7中斷響應(yīng)時間(以INTx為例)

3.8外部中斷編程練習(xí)

【例】電路如圖。要求編程實現(xiàn):主程序?qū)1口的8個LED從上到下循環(huán)顯示(間隔時間約1S),中斷時(INT0)使8個LED同時閃爍5次(間隔時間約1S,設(shè)單片機晶振為6MHz)。

+5VINT0P1.0MCS-51P1.1P1.2P1.3P1.4P1.5P1.6P1.774LS245R×8(1)主程序

ORG0000HLJMPSTARTSTART:MOVIE,#10000001B;允許INT0中斷

MOVIP,#00000001B;INT0中斷優(yōu)先

MOVTCON,#01H;INT0邊沿觸發(fā)方式

MOVSP,#70HMOVA,#80H;左移初值LOOP1:RLAMOVP1,ACALLDELAY;延時1sAJMPLOOP1程序可分為3個模塊:主程序、中斷服務(wù)程序、延時子程序

3.8外部中斷編程練習(xí)

ORG0003HLJMPEXT0EXT0:PUSHACCPUSHPSWSETBRS0CLRRS1MOVA,#0FFH;為使P1全亮

MOVR2,#;閃爍5次LOOP3:MOVP1,ACALLDELAY;延時1sCPLADJNZR2,LOOP3

POPPSWPOPACC

RETI10

3.8外部中斷編程練習(xí)(2)中斷服務(wù)程序(3)延時子程序(約1s)DELAY:MOVR5,#5D1:MOVR6,#200D2:MOVR7,#250D3:DJNZR7,D3;1msDJNZR6,D2;約0.2sDJNZR5,D1;約1sRET

3.8外部中斷編程練習(xí)

【例】故障診斷處理。當系統(tǒng)無故障時,4個故障源輸入端全為低電平,顯示燈全熄滅,只有當某部分出現(xiàn)故障,其相應(yīng)的輸入線才由低電平變?yōu)楦唠娖綇亩鹬袛唷V袛喾?wù)程序的任務(wù)就是判定故障源,并進行相應(yīng)的燈光顯示。(外中斷擴展問題)程序編制如下:

ORG0000HAJMPMA1;轉(zhuǎn)向主程序

ORG0003HAJMPSERVE;轉(zhuǎn)向中斷服務(wù)程序MA1:MOVP1,#55H;全部指示燈滅,并為讀入故障信號作準備

SETBIT0;選取外中斷為脈沖觸發(fā)方式

SETBEX0;允許外中斷0中斷

SETBEA;開CPU中斷LOOP:MOVA,P1;

ANLA,#55H;

JNZLOOP;有故障信號轉(zhuǎn)LOOP

MOVP1,#55H;無故障信號燈全滅,并為讀入故障信號作準備

SJMPLOOP;等待中斷SERVE:JNBP1.0,L1;中斷服務(wù)程序,查詢故障源,若有故障,將;相應(yīng)的燈點亮

SETBP1.1SJMPL2L1:CLRP1.1L2:JNBP1.2,L3

SETBP1.3SJMPL4L3:CLRP1.3L4:JNBP1.4,L5

SETBP1.5SJMPL6L5:CLRP1.5L6:JNBP1.6,L7SETBP1.7SJMPL8L7:CLRP1.7L8:RETI學(xué)習(xí)中斷技術(shù),要重點理解的內(nèi)容中斷矢量的含義以及在ROM中的地址單元;中斷發(fā)生的條件(5個中斷源);CPU如何響應(yīng)中斷(轉(zhuǎn)到中斷服務(wù)程序)?與查詢方式相比,中斷方式的優(yōu)點是什么?為什么中斷調(diào)用后,會自動返回原程序?編制中斷服務(wù)程序要注意什么問題?中斷與子程序調(diào)用的區(qū)別是什么?

在CPU已經(jīng)開放了外部中斷允許的前提下:在INT0/INT1引腳輸入一個負脈沖或低電平,TCON寄存器中的IE0/IE1標志位自動變“1”,CPU檢測到IE0/IE1變“1”后,將自動產(chǎn)生指令:

LCALL0003H(/0013H)執(zhí)行中斷服務(wù)程序,并將IE0/IE1標志位自動清“0”,以備下次申請。外部中斷(INT0,INT1)申請及CPU的處理過程:中斷與子程序調(diào)用區(qū)別在于:(1)中斷出現(xiàn)是隨機的,可能出現(xiàn),也可能不出現(xiàn),更不知道什么會時候出現(xiàn),即被中斷程序的斷點無法預(yù)測。而子程序的執(zhí)行由調(diào)用指令LCALL或ACALL實現(xiàn),只要滿足特定條件,一定會發(fā)生,斷點由程序員控制。

(2)中斷服務(wù)程序入口地址(也稱為中斷向量)由硬件決定,與CPU類型有關(guān),不能更改。而子程序入口地址由用戶安排。

(3)子程序中可以任意調(diào)用另一子程序,但中斷有優(yōu)先級,同級或低級中斷不能打斷正在執(zhí)行的同級或更高優(yōu)先級中斷服務(wù)程序。

(4)盡管子程序返回指令RET和中斷返回指令RETI均會將棧頂兩個字節(jié)信息裝入PC,恢復(fù)斷點,但RETI還清除相應(yīng)中斷優(yōu)先級觸發(fā)器,因此中斷返回指令不可用子程序返回指令RET代替。3.2.4MCS-51擴展外部中斷請求輸入口

8051單片機只提供了兩個外部中斷請求輸入端,如果需要使用多于兩個的中斷源,就必須擴展外部中斷請求輸入口。

1.定時器/計數(shù)器用于擴展外部中斷請求輸入口

8051單片機有兩個定時器/計數(shù)器,它們作為計數(shù)器使用時,計數(shù)輸入端T0(或T1)發(fā)生負跳變將使計數(shù)器加1,利用此特性,適當設(shè)置計數(shù)初值,就可以把計數(shù)輸入端T0(或T1)作為外部中斷請求輸入口。其特點是以占用內(nèi)部定時中斷為代價的。中斷服務(wù)程序的入口地址仍然為000BH或001BH。2.查詢方式擴展外部中斷請求輸入口

把多個中斷源通過硬件(如與非門)引入外部中斷輸入端,同時又連到某個I/O口。當有中斷源申請中斷時,在中斷服務(wù)程序中通過軟件查詢可確定哪一個是正在申請的中斷源,其查詢的次序可由中斷優(yōu)先級決定。其特點是中斷響應(yīng)速度較慢。適用于外部中斷源較多的場合。下頁例題中,我們采用74LS21A四輸入端雙與門實現(xiàn)該任務(wù)。3.使用專用芯片擴展外部中斷請求輸入口

當外部中斷源較多,同時又要求中斷響應(yīng)速度很高時,查詢方式擴展外部中斷請求輸入口的方法很難滿足要求。這時可以使用專用接口芯片進行外部中斷請求輸入口的擴展。下面例題中,我們采用74LS21A四輸入端雙與門實現(xiàn)該任務(wù)。查詢方式擴展外部中斷請求輸入口的電路實現(xiàn):74ls21的邏輯表是:當輸入全高時輸出為高,任一輸入低則輸出就為低。電路分析:當沒有按鍵按下時,由于上拉電阻的作用,74ls21輸出高,使INT0口為高電平,此時中斷程序不被觸發(fā)。如果任何一個按鍵按下,則74ls21輸出低電平,觸發(fā)中斷程序。中斷程序設(shè)計為:如果程序設(shè)計檢測次序是P1.0、P1.1、P1.2、P1.3口,優(yōu)先級即按順序排列,如果同時有多個鍵被按下,可根據(jù)實際要求設(shè)定為

1、僅僅只響應(yīng)最優(yōu)先中斷;2、按優(yōu)先級順序依次執(zhí)行各個中斷。

設(shè)計程序如下:

ORG

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論