第5章89C51的中斷系統_第1頁
第5章89C51的中斷系統_第2頁
第5章89C51的中斷系統_第3頁
第5章89C51的中斷系統_第4頁
第5章89C51的中斷系統_第5頁
已閱讀5頁,還剩44頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 CPU處理事件的過程稱為處理事件的過程稱為CPU的的中斷響應過中斷響應過程程。 對事件整個處理過程稱為對事件整個處理過程稱為中斷處理(或中斷中斷處理(或中斷服務)服務)。 能夠實現中斷處理的功能部件稱為能夠實現中斷處理的功能部件稱為中斷系統。中斷系統。 產生中斷請求的源稱為產生中斷請求的源稱為中斷請求源中斷請求源。 中斷源向中斷源向CPU提出的處理請求稱為提出的處理請求稱為中斷請求中斷請求(或(或中斷申請中斷申請)。)。 CPU完成中斷服務程序,繼續執行被中斷的完成中斷服務程序,繼續執行被中斷的主程序稱為主程序稱為中斷返回中斷返回。 89C51的中斷系統:的中斷系統: 五個中斷源五個中斷源

2、兩個中斷優先級兩個中斷優先級 可實現兩級中斷服務程序嵌套可實現兩級中斷服務程序嵌套 每一個中斷源可由軟件獨立地控制為允許中斷或關每一個中斷源可由軟件獨立地控制為允許中斷或關中斷狀態;每一個中斷源的中斷級別可由軟件來設置。中斷狀態;每一個中斷源的中斷級別可由軟件來設置。CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TISI中斷源中斷源中斷標志位中斷標志位 單片機中有兩個中斷優先級,即高優先級中斷和單片機中有兩個中斷優先級,即高優先級中斷和低優先級中斷,前者優先權高于后者(低優先級中斷,前者優先權高于后者(可軟件設置可軟件設置,在程序中設置,相應位在程序中設置,相應位=1=1,為

3、高優先級);,為高優先級); 同一優先級別的中斷源按照自然優先級順序確定同一優先級別的中斷源按照自然優先級順序確定優先級別(優先級別(硬件形成硬件形成,無法改變)。,無法改變)。中斷允許中斷允許ESET0EX0EX1ET1EA自然優先級自然優先級高低優先控制優先控制PSPT0PX0PX1PT1 89C51的中斷系統結構圖的中斷系統結構圖中斷標中斷標志位志位中斷源中斷源允許允許總允許總允許中斷優中斷優先級先級89C51單片機有單片機有5個個中斷請求源中斷請求源: 外部輸入中斷源外部輸入中斷源INT0(P3.2),中斷請求標志為,中斷請求標志為IE0 外部輸入中斷源外部輸入中斷源INT1(P3.3

4、),中斷請求標志為中斷請求標志為IE1 定時器定時器T0的溢出的溢出,中斷請求標志為,中斷請求標志為TF0 定時器定時器T1的溢出的溢出,中斷請求標志為,中斷請求標志為TF1 串行口發送或接收中斷源串行口發送或接收中斷源,中斷請求標志為發送中斷,中斷請求標志為發送中斷TI或接收中斷或接收中斷RI中斷請求源的中斷請求標志位分別由中斷請求源的中斷請求標志位分別由TCON和和SCON的相應位鎖定的相應位鎖定 TCON為定時器為定時器/計數器的控制寄存器,字節地址為計數器的控制寄存器,字節地址為88H SCON為串口控制寄存器,字節地址為為串口控制寄存器,字節地址為98H TCONlIT0:外部中斷:

5、外部中斷0的中斷觸發方式控制位。的中斷觸發方式控制位。lIT0=0時,外部中斷時,外部中斷0程控為電平觸發方式。程控為電平觸發方式。lIT0=1時,外部中斷時,外部中斷0程控為邊沿觸發方式。程控為邊沿觸發方式。 TCONlIE0:外部中斷:外部中斷0的中斷請求標志。的中斷請求標志。 INT1(P3.2)l當當IT0=0,CPU在每一個機器周期在每一個機器周期S5P2期間采樣外期間采樣外部中斷請求引腳的輸入電平。若外部中斷部中斷請求引腳的輸入電平。若外部中斷0請求為低請求為低電平,則使電平,則使IE0置置1;若為高電平,則使;若為高電平,則使IE0清清0l當當IT0=1,如果在相繼的兩個機器周期

6、采樣過程中,如果在相繼的兩個機器周期采樣過程中,一個機器周期采樣到外部中斷一個機器周期采樣到外部中斷0請求引腳為高電平,請求引腳為高電平,接著的下一個機器周期采樣到為低電平(負脈沖寬度接著的下一個機器周期采樣到為低電平(負脈沖寬度只是保持只是保持12個時鐘周期),則使個時鐘周期),則使IE0置置1。直到。直到CPU響應該中斷時,才由硬件使響應該中斷時,才由硬件使IE1清清0lSETB IT0 TCONlTF0:定時器:定時器0的溢出中斷標志。的溢出中斷標志。lT0被啟動計數后,從初值做加被啟動計數后,從初值做加1計數,計滿溢出后由計數,計滿溢出后由硬件置位硬件置位TF0,同時向,同時向CPU發

7、出中斷請求,此標志一發出中斷請求,此標志一直保持到直保持到CPU響應中斷后才由硬件自動清響應中斷后才由硬件自動清0。也可由。也可由軟件查詢該標志,并由軟件清軟件查詢該標志,并由軟件清0。l當單片機復位后,當單片機復位后,TCON被清被清0,則,則CPU關中斷,關中斷,所有中斷請求被禁止。所有中斷請求被禁止。 SCONlTI串行口發送中斷請求標志位串行口發送中斷請求標志位l當當CPU將一個要發送的數據寫入串行口發送緩沖器時,將一個要發送的數據寫入串行口發送緩沖器時,就啟動發送。每發送完一個串行幀,硬件使就啟動發送。每發送完一個串行幀,硬件使TI自動置自動置1l注意:當注意:當CPU響應中斷時,響

8、應中斷時,TI不能由硬件清不能由硬件清0,必須由,必須由軟件清軟件清0。 SCONlRI串行口接收中斷請求標志位串行口接收中斷請求標志位l當允許串行口接收數據時,每接收完一個串行幀,硬當允許串行口接收數據時,每接收完一個串行幀,硬件使件使RI自動置自動置1。同樣,。同樣,RI必須由軟件清必須由軟件清0l串行中斷請求由串行中斷請求由TI和和RI的邏輯或得到,即無論是發送的邏輯或得到,即無論是發送標志標志TI還是接收標志還是接收標志RI,都會產生串行中斷請求。,都會產生串行中斷請求。l中斷優先級管理遵循的基本原則是:中斷優先級管理遵循的基本原則是:l(1)低優先級可被高優先級中斷,反之不能低優先級

9、可被高優先級中斷,反之不能l(2)任何一種中斷,一旦得到響應,不會被它的同任何一種中斷,一旦得到響應,不會被它的同級中斷源中斷級中斷源中斷l中斷系統內部設置了兩個用戶不可訪問的優中斷系統內部設置了兩個用戶不可訪問的優先級狀態觸發器先級狀態觸發器l一個是高優先級狀態觸發器,置一個是高優先級狀態觸發器,置1 1時表示當前服務時表示當前服務的中斷是高優先級的,以阻止其他中斷申請;的中斷是高優先級的,以阻止其他中斷申請;l另一個是低優先級狀態觸發器,置另一個是低優先級狀態觸發器,置1 1時表示當前服時表示當前服務的中斷是低優先級的,它允許被高優先級的中斷務的中斷是低優先級的,它允許被高優先級的中斷申請

10、所中斷。申請所中斷。l當系統復位時,當系統復位時,IP寄存器被清寄存器被清0,將,將5個中個中斷源均設置為低優先級中斷。斷源均設置為低優先級中斷。l如果同一級的幾個中斷源同時向如果同一級的幾個中斷源同時向CPU申請申請中斷,中斷,CPU便通過內部硬件查詢邏輯按自便通過內部硬件查詢邏輯按自然優先級決定響應順序。然優先級決定響應順序。中斷控制允許寄存器中斷控制允許寄存器IE:IE字節地址為字節地址為A8H。通過對。通過對IE的編程寫入,控制的編程寫入,控制CPU對中斷源的開放或禁止,以及對每一中斷源是否允許中對中斷源的開放或禁止,以及對每一中斷源是否允許中斷。斷。lEACPU中斷允許總控制位。中斷

11、允許總控制位。lEA=1,CPU開放中斷開放中斷.lEA=0,CPU屏蔽所有的中斷請求,即關中斷。屏蔽所有的中斷請求,即關中斷。lEX0外部中斷外部中斷0允許位;允許位;lET0定時定時/計數器計數器T0中斷允許位;中斷允許位;lEX1外部中斷外部中斷1允許位;允許位;lET1定時定時/計數器計數器T1中斷允許位;中斷允許位;lES串行口中斷允許位串行口中斷允許位;lMOV IE,#82H;1000 0010Bl也可以用下面的位操作指令實現:也可以用下面的位操作指令實現:SETB EASETB ET0中斷優先級寄存器中斷優先級寄存器IP:中斷系統具有兩級中斷優先級管理。每一個中斷源均可中斷系統

12、具有兩級中斷優先級管理。每一個中斷源均可通過對中斷優先級寄存器通過對中斷優先級寄存器IP的設置,選擇高優先級中斷或的設置,選擇高優先級中斷或低優先級中斷,并可實現二級中斷嵌套。低優先級中斷,并可實現二級中斷嵌套。IP的字節地址為的字節地址為0B8H,通過對,通過對IP的編程,可實現將的編程,可實現將l個個中斷源分別設置為高優先級中斷或低優先級中斷。中斷源分別設置為高優先級中斷或低優先級中斷。lPS串行口中斷優先級設定位。串行口中斷優先級設定位。lPS=1,高優先級,高優先級lPS=0,低優先級,低優先級lPX0 外部中斷外部中斷0優先級設定位;優先級設定位;lPT0 定時定時/計數器計數器T0

13、優先級設定位優先級設定位;lPX1 外部中斷外部中斷1優先級設定位;優先級設定位;lPT1 定時定時/計數器計數器T1優先級設定位;優先級設定位;例例: :設置設置IPIP寄存器的初始值,使寄存器的初始值,使2 2個外中斷請求個外中斷請求為高優先級,其它中斷請求為低優先級。為高優先級,其它中斷請求為低優先級。(1)用位操作指令)用位操作指令 SETB PX0 ;2個外中斷為高優先級個外中斷為高優先級 SETB PX1 CLR PS ;串口為低優先級中斷;串口為低優先級中斷CLR PT0 ;2個定時器個定時器/計數器低優先級中斷計數器低優先級中斷CLR PT1(2)用字節操作指令)用字節操作指令

14、 MOV IP,#05H或:或:MOV 0B8H,#05H ;B8H為為IP寄存器的寄存器的字節地址字節地址例:例:假設允許外部中斷假設允許外部中斷0中斷,并設定它為高級中斷,并設定它為高級中斷,其它中斷源為低級中斷,采用跳沿觸中斷,其它中斷源為低級中斷,采用跳沿觸發方式。發方式。在主程序中編寫如下程序段:在主程序中編寫如下程序段: SETB EA ;CPU開中斷開中斷 SETB ET0 ;允許外中斷;允許外中斷0產生中斷產生中斷 SETB PX0 ;外中斷;外中斷0為高級中斷為高級中斷 SETB IT0 ;外中斷;外中斷0為跳沿觸發方式為跳沿觸發方式CPU響應中斷的基本條件如下:響應中斷的基

15、本條件如下:有中斷源發出中斷申請;有中斷源發出中斷申請;中斷總允許位中斷總允許位EA=1,即,即CPU開放中斷;開放中斷; 無同級或更高級的中斷正在被服務;無同級或更高級的中斷正在被服務;請求中斷的中斷源的中斷允許位置請求中斷的中斷源的中斷允許位置1,即該中斷源可以,即該中斷源可以向向CPU發中斷申請。發中斷申請。中斷響應過程:中斷響應過程: 將相應的優先級狀態觸發器置將相應的優先級狀態觸發器置1; 由硬件清除相應的中斷請求標志;由硬件清除相應的中斷請求標志; 執行一條由硬件生成的長調用指令執行一條由硬件生成的長調用指令LCALL。該指令。該指令將自動把斷點地址將自動把斷點地址(PC值值)壓入

16、堆棧保護起來。然后將對壓入堆棧保護起來。然后將對應的中斷入口地址送入程序計數器應的中斷入口地址送入程序計數器PC,使程序轉向該中,使程序轉向該中斷入口地址去執行中斷服務程序。斷入口地址去執行中斷服務程序。 中斷返回:中斷返回:中斷服務程序的最后一條是返回指令中斷服務程序的最后一條是返回指令RETI。RETI指令指令的執行標志著中斷服務程序的結束,該指令自動將斷點的執行標志著中斷服務程序的結束,該指令自動將斷點地址從棧頂彈出,裝入程序計數器地址從棧頂彈出,裝入程序計數器PC,使程序返回到被,使程序返回到被中斷的程序斷點處,繼續向下執行。中斷的程序斷點處,繼續向下執行。中斷響應封鎖:中斷響應封鎖:

17、CPU正在執行同級或高一級的中斷服務程序;正在執行同級或高一級的中斷服務程序;現行機器周期不是正在執行的指令的最后一個機器周期,現行機器周期不是正在執行的指令的最后一個機器周期,即現行指令完成前不響應任何中斷請求;即現行指令完成前不響應任何中斷請求;當前正在執行的是中斷返回指令當前正在執行的是中斷返回指令RETI或訪問特殊功能寄或訪問特殊功能寄存器存器IE或或IP的指令。也就是說,在執行的指令。也就是說,在執行RETI或是訪問或是訪問IE、IP的指令后,至少需要再執行的指令后,至少需要再執行條其他指令,才會響應條其他指令,才會響應中斷請求。中斷請求。若要在執行當前中斷程序時禁止更高優先級中斷,

18、可先若要在執行當前中斷程序時禁止更高優先級中斷,可先用軟件關閉用軟件關閉CPU中斷,或禁止某中斷源中斷,在中斷返中斷,或禁止某中斷源中斷,在中斷返回前再開放中斷回前再開放中斷。中斷響應請求的撤銷:中斷響應請求的撤銷:1.定時器定時器/計數器中斷請求,自動撤銷。計數器中斷請求,自動撤銷。2.外部中斷請求撤銷外部中斷請求撤銷(1)跳變沿外部中斷請求是自動撤銷的。跳變沿外部中斷請求是自動撤銷的。(2)電平方式外部中斷請求的撤銷是需要外部電路的。電平方式外部中斷請求的撤銷是需要外部電路的。3.串行口中斷請求的撤銷只能使用軟件方法撤銷。串行口中斷請求的撤銷只能使用軟件方法撤銷。CLR TI ;清;清TI

19、標志位標志位CLR RI ;清;清RI標志位標志位外部中斷響應時間:外部中斷響應時間:從查詢中斷請求標志位到轉向中從查詢中斷請求標志位到轉向中斷服務入口地址所需的機器周期數。斷服務入口地址所需的機器周期數。(1)最快響應時間)最快響應時間-以外部中斷的電平觸發為最快。以外部中斷的電平觸發為最快。從查詢中斷請求信號到中斷服務程序需要三個機器周期從查詢中斷請求信號到中斷服務程序需要三個機器周期l 1個周期(查詢)個周期(查詢)2個周期(長調用個周期(長調用LCALL)外部中斷響應時間:外部中斷響應時間:從查詢中斷請求標志位到轉向中從查詢中斷請求標志位到轉向中斷服務入口地址所需的機器周期數。斷服務入

20、口地址所需的機器周期數。在一個單一中斷的系統中,在一個單一中斷的系統中,89C51單片機對外部中斷請單片機對外部中斷請求的響應時間總是在求的響應時間總是在3-8個機器周期之間個機器周期之間(2)最長時間)最長時間l若當前指令是若當前指令是RET、RETI和和IP、IE指令,緊接著下一指令,緊接著下一條是乘除指令發生,則最長為條是乘除指令發生,則最長為8個周期:個周期:l2個周期執行當前指令(其中含有個周期執行當前指令(其中含有1個周期查詢)個周期查詢)4個周期乘除指令個周期乘除指令2個周期長調用個周期長調用8個周期。個周期。lSETB EA ; 總中斷允許總中斷允許lSETB EX1 ;INT

21、1允許允許lSETB ET1 ;TF1允許允許lSETB ES ;TI 和和RI允許允許lSETB PS ; TI 和和RI高優先級別高優先級別lSETB PT1 ;TF1高優先級別高優先級別l SETB PX0 ;INT0高優先級別高優先級別則則: _可以被響應可以被響應. A. CPU 正在執行正在執行INT1中斷中斷,TF1請求請求. B. CPU正在執行正在執行TF1中斷中斷, TI請求請求. C. CPU正在執行正在執行INT1中斷中斷, INT0請求請求 . D. CPU正執行主程序正執行主程序, TF1出現請求出現請求(2)設置中斷優先級寄存器)設置中斷優先級寄存器IP。(1)設

22、置中斷允許控制寄存器)設置中斷允許控制寄存器IE (4)編寫中斷服務程序,處理中斷請求。)編寫中斷服務程序,處理中斷請求。(3)對外中斷源,是采用電平觸發還是跳沿觸發。)對外中斷源,是采用電平觸發還是跳沿觸發。前前3 3條一般放在主程序的初始化程序段中條一般放在主程序的初始化程序段中中斷服務程序設計的任務:中斷服務程序設計的任務:有有5個中斷源,兩個中斷優先級,可以實現個中斷源,兩個中斷優先級,可以實現兩級中斷服務程序嵌套。兩級中斷服務程序嵌套。中斷源中斷源中斷入口地址中斷入口地址 外部中斷外部中斷0 /INT0 0003H 定時器定時器0 T0 000BH 外部中斷外部中斷1 /INT1 0

23、013H 定時器定時器1 T1 001BH 串行口串行口 0023H中斷源中斷源常用的主程序結構如下:常用的主程序結構如下:ORG 0000HLJMP MAINORG X3X2X1X0 ; X3X2X1X0為某中斷源中斷入口為某中斷源中斷入口LJMP INT ;為某中斷源的入口標號為某中斷源的入口標號 ORG Y3Y2Y1Y0H;主程序入口地址;主程序入口地址MAIN:主:主 程程 序序INT:中斷服務程序:中斷服務程序采用中斷時的主程序結構:采用中斷時的主程序結構:若有多個中斷源,則按地址由小到大排列多個中斷入口若有多個中斷源,則按地址由小到大排列多個中斷入口中斷服務子程中斷服務子程序的流程

24、:序的流程:例例:根據圖中中斷服務程序流程,編出中斷服務程序。:根據圖中中斷服務程序流程,編出中斷服務程序。假設,現場保護只需將假設,現場保護只需將PSW和和A的內容壓入堆棧中的內容壓入堆棧中保護。保護。 INT:CLR EA;CPU關中斷關中斷PUSH PSW;現場保護;現場保護PUSH ACC; SETB EA;CPU開中斷開中斷 中斷處理程序段中斷處理程序段 CLR EA;CPU關中斷關中斷POP ACC;現場恢復;現場恢復POP PSWSETB EA;CPU開中斷開中斷RETI;中斷返回,恢復斷點;中斷返回,恢復斷點幾點說明:幾點說明:(1)現場保護僅涉及到)現場保護僅涉及到PSW和和

25、A的內容,如還有其的內容,如還有其它需保護的內容,只需要在相應的位置再加幾條它需保護的內容,只需要在相應的位置再加幾條PUSH和和POP指令即可。指令即可。(2) “中斷處理程序段中斷處理程序段”,應根據任務的具體要求,應根據任務的具體要求,來編寫。來編寫。(3)如果本中斷服務程序不允許被其它的中斷所中)如果本中斷服務程序不允許被其它的中斷所中斷。可將斷。可將“中斷處理程序段中斷處理程序段”前后的前后的“SETB EA”和和“CLR EA”兩條指令去掉。兩條指令去掉。(4)中斷服務程序的最后一條指令必須是返回指令)中斷服務程序的最后一條指令必須是返回指令RETI。l在如圖所示的電路中,用在如圖

26、所示的電路中,用P1口輸出控制的口輸出控制的8只發光二極管,實現只發光二極管,實現8位二進制計數器,對位二進制計數器,對INT0上出現的脈沖進行計數。上出現的脈沖進行計數。脈沖產生電路脈沖產生電路顯示電路顯示電路 ORG 0000H AJMP MAIN ;轉主程序;轉主程序 ORG 0003H ;外中斷入口地址;外中斷入口地址 AJMP SER ;中斷服務程序;中斷服務程序 MAIN: SETB IT0 ;設定外中斷;設定外中斷0為邊沿觸發為邊沿觸發 SETB EX0 ;開外中斷;開外中斷0允許允許 SETB EA ;開;開CPU中斷允許中斷允許 CLR A ;計數單元清;計數單元清0 MOV P1,A ;清顯示;清顯示HERE: SJMP $ ;等待中斷;等待中斷SER: INC A ;計數單元加;計數單元加1 MOV P1,A ;顯示;顯示 RETI ;中斷返回;中斷返回 END l在如圖所示的電路中,在如圖所示的電路中,P1口輸出控制口輸出控制8只發光二只發光二極管以極管以20HZ呈現循環燈狀態,當開關按下時,呈現循環燈狀態,當開關按下時,發光二極管全部熄滅發光二極管全部熄滅0.5S,然后回到原來的狀態。,然后回到原來的狀態。 ORG 0000

溫馨提示

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

評論

0/150

提交評論