高等教育中斷系統課件_第1頁
高等教育中斷系統課件_第2頁
高等教育中斷系統課件_第3頁
高等教育中斷系統課件_第4頁
高等教育中斷系統課件_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、5.1 中斷的概念中斷:是指中央處理器CPU正在執行程序,處理某件事情的時候,外部發生了某一事件請求CPU馬上處理,CPU暫時中斷當前的工作轉入處理所發生的事件,處理完以后,再返回到原來被中斷的地方,繼續原來的工作。能夠實現中斷處理功能的部件稱為中斷系統。向CPU 提出中斷請求的源稱為中斷源。中斷源向CPU 提出的處理請求,稱為中斷請求或中斷申請。CPU 同意處理該請求稱為中斷響應,處理中斷請求的程序稱為中斷服務子程序。當CPU暫時終止正在執行的程序,轉去執行中斷服務子程序時,除了硬件自動把斷點PC值(即下一條應執行的指令地址)壓入堆棧之外,用戶應注意保護有關的工作寄存器、累加器、標志位等信息

2、,這稱為保護現場; 在完成中斷服務子程序后,恢復有關的工作寄存器、累加器、標志位的內容,稱為恢復現場;最后執行中斷返回指令RETI,從堆棧中自動彈出斷點地址PC,繼續執行被中斷的程序,稱為中斷返回。優先權:給各中斷源規定一個優先級別,稱為優先權。當兩個或者兩個以上的中斷源同時提出中斷請求時,計算機首先為優先權最高的中斷源服務,服務結束后再響應級別較低的中斷源。計算機按中斷源級別高低逐次響應的過程稱優先權排隊。這個過程可以通過硬件電路來實現,也可以通過程序查詢來實現。 中斷嵌套: 當CPU響應某一中斷的請求而進行中斷處理時,若有優先權級別更高的中斷源發出中斷申請,CPU則中斷正在進行的中斷服務程

3、序,并保留這個程序的斷點,響應高級中斷,在高級中斷處理完以后,再繼續執行被中斷的中斷服務程序(如圖5-1(b)所示)。中斷申請的中斷源的優先權級別與正在處理的中斷源同級或更低時,CPU暫時不響應這個中斷申請,直至正在處理的中斷服務程序執行完以后才去處理新的中斷申請。5.2 MCS-51中斷系統MCS-51 單片機的中斷系統結構隨型號的不同而不同,包括中斷源數目,中斷優先級、中斷控制寄存器都有差異。典型的89C51單片機有5個中斷源,具有2個中斷優先級,可以實現二級中斷嵌套。每一個中斷源可以設置為高優先級或低優先級中斷,允許或禁止向CPU申請中斷。89C51的中斷系統結構如圖5-2所示。5.2.

4、1 MCS-51中斷源8051有5個中斷源:2個是引腳(P3.2)、(P3.3)輸入的外部中斷源;3個是內部中斷源,它們是定時器T0、T1和串行口的中斷請求源。(1)外部中斷源上輸入的兩個外部中斷標志和觸發方式控制位在特殊功能寄存器TCON的低4位(見表5-1)。IE1:外部中斷1請求源(INT1,P3.3)標志。IE11表明外部中斷1正在向CPU申請中斷。當CPU響應該中斷時由硬件清“0”IE1(邊沿觸發方式)。IT1:外部中斷1觸發方式控制位。 ITl0:外部中斷1為電平觸發方式。這種方式下,INT1 端輸入低電平時,置位IE1,CPU在每個周期都采樣INT1引腳的輸入電平,當采樣到低電平

5、時,置“1” IE1,采樣到高電平時清“0”IE1。采用電平觸發方式時,外部中斷源信號必須保持低電平信號有效,直到該中斷被CPU響應,同時在該中斷服務程序執行完之前,外部中斷源必須被清除,否則將產生另一次中斷。 ITl1,外部中斷1控制為邊沿(先高后低的負跳變)觸發方式。這種方式CPU在每一個周期采樣引腳的輸入電平。如果相繼的兩次采樣,前一個周期采樣到INT1為高電平,后一個周期采樣到INT1為低電平,則置“1”IE1。IE1=1表示外部中斷1正在向CPU申請中斷,直到該中斷CPU響應時,才由硬件清“0”IE1。因為每個機器周期采樣一次外部中斷輸入電平,因此采用邊沿觸發方式時,外部中斷源輸入的

6、高電平和低電平的時間必須保持12個時鐘周期以上,才能保證被CPU檢測到從高到低的跳變。IE0:外部中斷0請求源(INT0,P3.2)標志。 IE0=1外部中斷0向CPU請求中斷當CPU,響應該中斷時由硬件清“0”IE0(邊沿觸發方式)。IT0:外部中斷0觸發方式控制,其控制方式與外部中斷1類似。IT0=0:外部中斷0為電平觸發方式。IT0=1:外部中斷0為邊沿觸發方式。(2)定時器T0、T1中斷源TF1和TF0分別為定時器T1和T0的溢出標志。(2)定時器T0、T1中斷源TF1和TF0分別為定時器T1和T0的溢出標志。 TFl:T1溢出中斷標志。T1被啟動計數后,從初值開始加1計數,直至計滿溢

7、出后,由硬件使TFll,向CPU請求中斷,此標志一直保持到CPU響應中斷后,才由硬件自動清“0”。也可用軟件查詢該標志,并由軟件清“0”。TF0:T0溢出中斷標志。其操作功能類似于TF1。(3)串行口中斷請求源SCON 為串行口控制寄存器,其低2 位鎖定串行口的發送中斷和接收中斷的中斷請求標志TI和RI TI:串行發送中斷標志。CPU將一個字節數據寫入發送緩沖器SBUF后啟動發送,每發送完一個串行幀,硬件置位TI。TI標志由軟件清除。 RI:串行接收中斷標志。在串行口允許接收時,每接收完一個串行幀,硬件置位RI。RI標志由軟件清除。 5.2.2 中斷控制1中斷允許寄存器IE(某位“1允許,“0

8、”禁止)EA:中斷允許總控制ES:串行口中斷允許位ET1:定時/計數器T1的溢出中斷允許位。EX1:外部中斷1中斷允許位ET0:定時/計數器T0 的溢出中斷允許位。EX0:中斷0中斷允許位。2中斷優先級寄存器IPMCS51 單片機有兩個中斷優先級,對于每一個中斷請求源可編程為高優先級中斷或低優先級中斷。專用寄存器IP統一管理中斷優先級,它具有兩個中斷優先級,由軟件設置每個中斷源為高優先級中斷或低優先級中斷,并可實現兩級中斷嵌套。高優先級中斷源可以中斷正在執行的低優先級中斷服務程序,除非在執行低優先級中斷服務程序時設置了CPU關中斷或禁止某些高優先級中斷源的中斷。同級或低優先級的中斷源不能中斷正

9、在執行的中斷服務程序。如果IP中優先級別相同,CPU將采用默認優先級處理中斷。 默認優先級由硬件形成,排列次序如下: 中斷源 默認優先級外部中斷0 最高級定時器T0 外部中斷1 定時器T0串行口中斷 最低級當重新設置優先級時,則順序查詢邏輯電路將會改變相應排隊順序。例如,給中斷優先級寄存器IP中設置的優先級控制字為11H,則PS和PX0均為高優先級中斷。當這兩個中斷源同時發出中斷申請時,CPU將先響應自然優先級高的PX0的中斷申請,而后響應自然優先級低的PS的中斷申請。 中斷優先級寄存器IP 各位的功能如表5-4所列(某位為1,設置為高優先級) PS:串行口中斷優先級控制位PT1:定時/計數器

10、T1中斷優先級控制位PX1:外部中斷1中斷優先級控制位PT0:定時器T0中斷優先級控制位PX0:外部中斷0 中斷優先級控制位5.2.3 中斷處理1中斷響應過程CPU 在每一個機器周期順序檢查每一個中斷源。并按優先級處理每個被激活的中斷請求,如果沒有被下述條件所阻止,將在下一個機器周期響應激活了的最高級中斷請求。(1)CPU 正在處理相同的或更高優先級的中斷;(2)現行的機器周期不是所執行指令的最后個機器周期;(3)正在執行的指令是RETI 或是訪問IE或IP的指令(CPU 在執行RETI 或訪問IE、IP 的指令后,至少需要再執行一條指令才會響應新的中斷請求)。如果上述條件中有一個存在,CPU

11、將丟棄中斷查詢結果;若一個條件都不存在,將在緊接著的下一個周期執行中斷查詢結果。CPU響應中斷時,先置位相應的中斷優先級狀態觸發器(該觸發器指出CPU開始處理中斷的級別),然后執行一條硬件子程序調用,使控制轉移到相應的中斷入口,清“0”中斷請求源申請標志(TI、RI除外)。接著把PC值壓入堆棧,將被響應的中斷服務程序的入口地址送入PC。MCS-51系列單片機5個中斷服務程序入口地址如表5-4,由于5個地址之間僅隔8個單元,用于存放中斷服務程序往往不夠用,因此通常也在這里放一條絕對轉移指令,轉到真正的中斷服務程序。 CPU執行中斷服務程序一直到RETI指令為止。RETI指令是表示中斷服務程序的結

12、束,CPU執行完這條指令后,清“0”響應中斷時所設置的優先級觸發器,然后從堆棧中彈出棧頂的兩個字節到PC,CPU從原來被中斷處繼續執行被中斷的程序。由此可見,用戶的中斷服務程序必須加上返回指令RETI指令,CPU的現場保護和恢復必須由用戶中斷服務程序處理。CPU響應某中斷請求后,在中斷返回前,應該撤消該中斷請求,否則會引起另一次中斷。(1)定時器0或1溢出中斷,CPU在響應中斷后,中斷請求由硬件自動撤除。(2)邊沿激活的外部中斷,CPU在響應中斷后,硬件自動清除有關的中斷請求。(3)串行口中斷,CPU響應中斷后,靠軟件來清除相應的標志。(4)電平觸發的外部中斷撤除。在電平觸發方式下,外部中斷標

13、志IE0或IE1是依靠CPU檢測 或 上的低電平置位的。盡管CPU在響應中斷時能由硬件自動復位IE0或IE1,但若外部中斷源不能及時撤除或上的低電平,就會使已經復位的IE0或IE1再次置位,這是絕對不允許的。因此電平觸發型外部中斷請求的撤除必須使或隨著其中斷的響應而變為高電平。圖5-3是撤除電平觸發中斷的可行的方案。 圖中觸發器的作用是鎖存外部中斷請求的低電平信號,并由Q端輸出到供CPU檢測。D觸發器的異步置位端接單片機的P1.0,此端口平時為“1”,對D觸發器輸出無影響。當中斷響應后,為了撤除中斷請求,只要在P1.0上輸出一個負脈沖,使觸發器置“1”,就可以撤除低電平的中斷請求。負脈沖信號可

14、以用下面兩條指令實現。ANL Pl,# 0FEHORL P1,# 01H執行第一條指令使P1.0輸出為“0”,其持續時間為2個機器周期,足以使D觸發器置位,從而撤除中斷請求。執行第二條指令使P1.0變為“1”,否則D觸發器的S端始終有效,INT0端始終為“1”,無法再次申請中斷。5.3 中斷應用程序舉例中斷程序一般包含中斷控制程序(即中斷初始化程序)和中斷服務程序兩部分。(1)中斷初始化程序 中斷初始化程序實質上就是對TCON、SCON、IE和IP寄存器的管理和控制。只要這些寄存器的相應位按照要求進行了狀態預置,CPU就會按照用戶的意圖對中斷源進行管理和控制。中斷初始化程序一般不獨立編寫,而是

15、包含在主程序中,根據需要進行編寫。中斷初始化程序需完成以下操作:1)開中斷;2)某一中斷源中斷請求的允許與禁止(屏蔽);3)確定各中斷源的優先級別;4)若是外部中斷請求,則要設定觸發方式是電平觸發還是邊沿觸發。 【例5.1】 假設規定外部中斷0為電平觸發方式,高優先級,試寫出有關的初始化程序。解:可用兩種方法完成。 方法1,用位操作指令完成:SETB EA ;開中斷允許總控制位SETB EX0 ;外中斷0開中斷SETB PX0;外中斷0高優先級CLR IT0;電平觸發 方法2,用其它指令也可完成同樣功能:MOV IE,#81H;同時置位EA和EX0ORL IP,#01H;置位PX0ANL TC

16、ON,#0FEH;使IT0為0(2)中斷服務程序 中斷服務程序是一種為中斷源的特定任務而編寫的獨立程序,以中斷返回指令RETI結束。中斷服務程序結束后返回到原來被中斷的地方(即斷點),繼續執行原來的程序。中斷服務程序和子程序一樣,在調用和返回時,也有一個保護斷點和現場的問題。在中斷響應過程中,斷點的保護主要由硬件電路自動實現。它將斷點壓人堆棧,再將中斷服務程序的入口地址送入程序計數器PC,使程序轉向中斷服務程序。中斷處理時現場保護由中斷服務程序來完成。現場一般包括累加器A、工作寄存器R0R7以及程序狀態字PSW等。保護現場和恢復現場一般采用 PUSH和POP指令來實現。 此外,在編寫中斷服務程

17、序時還應注意以下三點:1)各中斷源入口地址之間只相隔8個字節。中斷服務程序放在此處,一般容量是不夠的。常用的方法是在中斷入口地址單元處,存放條無條件轉移指令,如“LJMP Address”,使程序跳轉到用戶安排的中斷服務程序起始地址去。 2)在執行當前中斷程序時,為了禁止更高優先級中斷源的中斷請求,可先用軟件關閉CPU中斷,或屏蔽更高級中斷源的中斷,在中斷返回前再開放被關閉或被屏蔽的中斷。3)在多級中斷情況下,應在保護現場之前關掉中斷,在恢復現場之后打開中斷。如果在中斷處理時允許有更高級的中斷打斷它,則在保護現場之后開中斷,恢復現場之前關中斷。 【例5.2】設在主程序中用到了寄存器PSW、AC

18、C、B、DPTR,而在執行中斷服務程序時需要用到這些寄存器。試編寫程序在中斷服務程序中對這些寄存器加以保護。SERVICE:PUSHPSW;保護程序狀態字PUSHACC;保護累加器APUSHB;保護寄存器BPUSHDPL;保護數據指針低字節PUSHDPH;保護數據指針高字節 ;中斷處理POPDPH;恢復現場 POPDPL POP BPOPACCPOPPSWRETI 5.3】圖5-4為多個故障顯示電路,當系統無故障時,4個故障源輸入端X1X4全為低電平,顯示燈全滅;當某部分出現故障,其對應的輸入由低電平變為高電平,從而引起MCS51單片機中斷,中斷服務程序的任務是判定故障源,并用對應的發光二極管LED1LED4進行顯示。ORG 0000H;程序開始AJMP MAIN;轉主程序ORG 0003H;外部中斷INT0入口地址 AJMP SE

溫馨提示

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

評論

0/150

提交評論