官术网_书友最值得收藏!

  • 單片機原理
  • 張志霞 張楠楠 王永剛 楊萍主編
  • 4700字
  • 2021-10-22 23:53:54

第六節 中斷系統

一、中斷概念

現代的計算機都具有實時處理功能,能對外界異步發生的事件作出及時的處理,這是依靠它們的中斷來實現的。所謂中斷是指中央處理器CPU正在處理某件事情的時候,外部發生了某一事件(如定時器計數溢出),請求CPU迅速去處理,CPU暫時中斷當前的工作,轉入處理所發生的事件,處理完以后,再回到原來被中斷的地方,繼續原來的工作,這樣的過程稱為中斷。

引入中斷技術能實現主要功能如下。1.并行處理

有了中斷技術,可以解決快速的CPU與慢速外設之間的速度匹配問題。CPU在啟動外設后,便繼續執行主程序;而外設被啟動后,開始進行準備工作。當外設準備就緒時,就向CPU發出中斷請求,CPU響應該中斷請求并為其服務完畢后,返回到原來的斷點處繼續執行主程序。外設在得到服務后,也繼續進行自己的工作。CPU和外設并行工作,由于CPU與外設速度的懸殊差異,CPU可以使多個外設同時工作,并分時為多臺外設提供服務。

2.實時處理

在實時控制中,請求CPU提供服務是隨機發生的。有了中斷系統,CPU就可以立即響應并進行相應的處理。從而實現了實時處理。

3.故障處理

計算機系統工作時會出現一些突發故障,如電源斷電、存儲器出錯、運算溢出等。有了中斷系統,當出現故障時,CPU可及時轉去執行故障處理程序,自行處理故障而不必停機。

總之,隨著計算機軟硬件技術的發展,中斷技術也在不斷發展之中,其功能也會更加豐富。中斷已成為評價計算機整體性能的一項重要指標。

二、中斷系統

MCS-51中不同型號單片機的中斷源數量是不同的,最典型的8051單片機有5個中斷源,具有2個中斷優先級,可以實現二級中斷服務程序嵌套。每一個中斷源可以編程為高優先級或低優先級中斷,允許或禁止向CPU請求中斷。與中斷系統有關的特殊功能寄存器有中斷允許寄存器IE、中斷優先級控制寄存器IP、中斷源寄存器(TCON,SCON中有關位)。MCS-51基本的中斷系統結構如圖2-23所示。

1.中斷源

MCS-51中典型的8051單片機有5個中斷源:兩個是INT0,INT1(P3.2,P3.3)

上輸入的外部中斷源;3個內部的中斷源,它們是定時器/計數器T0、T1的溢出中斷源和串行口的發送接收中斷源,8052等單片機增加了一個定時器T2的中斷。這些中斷源分別

鎖存在TCON,SCON,T2CON的相應位中。32

圖2-23 MCS-51中斷系統結構

(1)外部中斷源。INT0,INT1上輸入的兩個外部中斷源和它們的觸發方式控制位鎖存在特殊功能寄存器TCON的低4位,TCON的高4位為T0、T1的運行控制位和溢出標志位,其格式如下:

TF1

TF0

IE1

IT1

IE0

IT0

IE1:外部中斷1(INT1,P3.3)的中斷請求標志。當檢測到外部中斷引腳P3.3上存在有效的中斷請求信號時,由硬件使IE1置1,當CPU響應該中斷請求時,由硬件使

IE1清“0”。

IT1:外部中斷源1觸發方式控制位。IT1=0,外部中斷1程控為電平觸發方式,當

INT1(P3.3)輸入低電平時,置位IE1。CPU在每一個機器周期的S5P2采樣INT1

(P3.3)的輸入電平,當采樣到低電平時,置“1”IE1,采樣到高電平時清“0”IE1。采用電平觸發方式時,外部中斷源(輸入到INT1)必須保持低電平有效,直到該中斷被CPU響應,同時在該中斷服務程序執行完之前,外部中斷源必須被清除,否則將產生另一次中斷;IT1=1,外部中斷1程控為邊沿觸發方式,CPU在每一個機器周期的S5P2采樣INT1(P3.3)的輸入電平。如果相繼的兩次采樣,一個周期中采樣到INT1為高電平,接著的下個周期中采樣到INT1為低電平,則置“1”IE1。IE1為1,表示外部中斷1正在向CPU申請中斷,直到該中斷被CPU響應時,才由硬件清“0”。因為每個機器周期采樣一次外部中斷輸入電平,因此,采用邊沿觸發方式時,外部中斷源輸入的高電平和低電平時間必須保持12個振蕩周期以上,才能保證CPU檢測到高到低的負跳變。

IE0:外部中斷0(INT0,P3.2)的中斷請求標志。其含義與IE1同。

IT0:外部中斷源0觸發方式控制位。其功能與IT1相同。

(2)內部中斷源。定時器/計數器T0的溢出中斷TF0(TCON.5):T0被允許計數以后,從初值開始加1計數,當產生溢出時置“1”TF0,向CPU請求中斷,一直保持到CPU響應該中斷時才由內部硬件清“0”(也可以由查詢程序清“0”)。

定時器/計數器T1的溢出中斷TF1(TCON.7):T1被允許計數以后,從初值開始加1計數,當產生溢出時置“1”TF1,向CPU請求中斷,一直保持到CPU響應該中斷時才由內部硬件清“0”(也可以由查詢程序清“0”)。

串行口中斷:串行口的接收中斷RI(SCON.0)和發送中斷TI(SCON.1)邏輯或以后作為內部的一個中斷源。當串行口發送完一個字符由內部硬件置位發送中斷標志TI,接收到一個字符后也由內部硬件置位接收中斷標志RI。應該注意,CPU響應串行口的中

斷時,并不清“0”TI和RI中斷標志,TI和RI必須由軟件清“0”。

定時器/計數器T2中斷:8052等單片機內的T2有2個中斷標志TF2(T2CON.7)

和EXF2(T2CON.6)。這兩個中斷標志邏輯或以后作為內部的一個中斷源。這兩個中斷標志由內部硬件置“1”,也必須由軟件清“0”,因為CPU響應T2的中斷請求時并不清

“0”TF2和EXF2。

2.中斷控制

(1)中斷使能控制。MCS-51CPU對中斷源的開放或屏蔽,每一個中斷源是否被允許中斷,是由內部的中斷允許寄存器IE(IE為特殊功能寄存器,它的字節地址為A8H)控制的,其格式如下:

EA

ET2

ES

ET1

EX1

ET0

EX0

EA:CPU的中斷開放標志。EA=1,CPU開放中斷;EA=0,CPU屏蔽所有的中

斷申請。

ES:串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷。

ET1:定時器/計數器T1的溢出中斷允許位。ET1=1,允許T1中斷;ET1=0,禁

止T1中斷。

EX1:外部中斷1中斷允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。

ET0:T0的溢出中斷允許位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷。EX0:外部中斷0中斷允許位。EX0=1,允許中斷;EX0=0,禁止中斷。

ET2:定時器/計數器T2的溢出中斷允許位。ET2=1,允許T2中斷;ET2=0,禁

止T2中斷。對于8051等內部沒有T2的單片機,是沒有IE.5位的。

(2)中斷優先級控制。MCS-51有兩個中斷優先級,每一中斷請求源可編程為高優先級中斷或低優先級中斷,實現二級中斷嵌套。一個正在被執行的低優先級中斷服務程序能被高優先級中斷所中斷,但不能被另一個同級的或低優先級中斷源所中斷。若CPU正在執行高優先級的中斷服務程序,則不能被任何中斷源所中斷,一直執行到結束,遇到返回指令RETI,返回主程序后再執行一條指令才能響應新的中斷源申請。為了實現上述功能,MCS-51的中斷系統有兩個不可尋址的優先級狀態觸發器,一個指出CPU是否正在執行高優先級中斷服務程序,另一個指出CPU是否正在執行低級中斷服務程序。這兩個觸發器的1狀態分別屏蔽所有的中斷申請和同一優先級的其他中斷源申請。另外,MCS-51的片內有一個中斷優先級寄存器IP(IP為特殊功能寄存器,它的字節地址為B8H),其格式如下:

PT2

PS

PT1

PX1

PT0

PX0

PS:串行口中斷優先級控制位。PS=1,串行口中斷定義為高優先級中斷;PS=0,串行口中斷定義為低優先級中斷。

PT1:定時器T1中斷優先級控制位。PT1=1,定時器T1定義為高優先級中斷;PT1=0,定時器T1中斷定義為低優先級中斷。

PX1:外部中斷1中斷優先級控制位。PX1=1,外部中斷1定義為高優先級中斷;PX1=0,外部中斷1中斷為低優先級中斷。

PT0:定時器T0中斷優先級控制位。PT0=1,定時器T0中斷定義為高優先級中斷;PT0=0,定時器T0中斷定義為低優先級中斷。

PX0:外部中斷0中斷優先級控制位。PX0=1,外部中斷0定義為高優先級中斷;PX0=0,外部中斷0中斷為低優先級中斷。

PT2:定時器/計數器T2的中斷優先級控制位。PT2=1,T2中斷為高優先級中斷;PT2=0,T2為低優先級中斷。對于8051等內部沒有T2的單片機,IP.5是沒有的。

在CPU接收到同樣優先級的幾個中斷請求源時,一個內部的硬件查詢序列確定優先服務于哪一個中斷申請,這樣在同一個優先級里,由查詢順序確定了優先級結構,其優先級別排列如下:

中斷源

中斷優先級最高

外部中斷0定時器T0中斷外部中斷1定時器T1中斷串行口中斷

T2中斷

最低

MCS-51復位以后,特殊功能寄存器IE、IP的內容均為0,由初始化程序對IE、IP編程,以開放中央處理器CPU中斷、允許某些中斷源中斷和改變中斷的優先級。

3.中斷響應過程

MCS-51的CPU在每一個機器周期順序檢查每一個中斷源。在機器周期的S6采樣并按優先級處理所有被激活的中斷請求,如果沒有被下述條件所阻止,將在下一個機器周期的狀態S1響應激活最高級中斷請求。

(1)CPU正在處理相同的或更高優先級的中斷。

(2)現行的機器周期不是所執行指令的最后一個機器周期。

(3)正在執行的指令是中斷返回指令(RETI)或者是對IE、IP的寫操作指令(執行這些指令后至少再執行一條指令后才會響應中斷)。

如果上述條件中有一個存在,CPU將丟棄中斷查詢的結果;若一個條件也不存在,將在緊接著的下一個機器周期執行中斷查詢的結果。

CPU響應中斷時,先置位相應的優先級狀態觸發器(該觸發器指出CPU開始處理的中斷優先級別),然后執行一條硬件子程序調用,使控制轉移到相應的入口,清“0”中斷請求源申請標志(TI和RI除外)。接著把程序計數器的內容壓入堆棧(但不保護PSW),將被響應的中斷服務程序的入口地址送程序計數器PC,各中斷源服務程序的入口地址為:中斷源

入口地址

外部中斷0

0003H

定時器T0

000BH

外部中斷1

0013H

定時器T1

001BH

串行口中斷

0023H

定時器T2

002BH

通常在中斷入口,安排一條相應的跳轉指令,以跳到用戶設計的中斷處理程序入口。CPU執行中斷處理程序一直到RETI指令為止。RETI指令是表示中斷服務程序的結

束,CPU執行完這條指令后,清“0”響應中斷時所置位的優先級狀態觸發器,然后從堆棧中彈出頂上的兩個字節到程序計數器PC,CPU從原來被打斷處重新執行被中斷的程序。由此可見,用戶的中斷服務程序末尾必須安排一條返回指令RETI,CPU現場的保護和恢復必須由用戶的中斷服務程序實現。

4.外部中斷響應時間

INT0和INT1電平在每一個機器周期的S5P2被采樣并鎖存到IE0,IE1中,這個新置入的IE0,IE1狀態等到下一個機器周期才被查詢電路查詢到。如果中斷被激活,并且滿足響應條件,CPU接著執行一條硬件子程序調用指令以轉到相應的服務程序入口,該調用指令本身需兩個機器周期。這樣,在產生外部中斷請求到開始執行中斷服務程序的第一條指令之間,最少需要三個完整的機器周期。

如果中斷請求被前面列出的三個條件之一所阻止,則需要更長的響應時間。如果已經在處理同級或更高級中斷,額外的等待時間明顯地取決于別的中斷服務程序的處理過程。如果正在處理的指令沒有執行到最后的機器周期,所需的額外等待時間不會多于3個機器周期,因為最長的指令(乘法指令MUL和除法指令DIV)也只有4個機器周期,如果正在執行的指令為RETI或訪問IE,IP的指令,額外的等待時間不會多于5個機器周期,最多需一個周期完成正在處理的指令,完成下一條指令(設MUL或DIV)的4個機器周期。這樣,在一個單一中斷的系統里,外部中斷響應時間總是在3~8個機器周期。

三、多外部中斷源設計

MCS-51一般為用戶提供兩個外部中斷請求輸入線,在有些應用系統中,外部的中斷請求源不止于兩個,因此有必要對外部中斷進行擴展。

1.定時器中斷作為外部中斷

MCS-51的定時器/計數器T0、T1工作于計數器工作方式,而P3.4(T0)或P3.5

(T1)上發生負跳變時T0或T1加1。利用這個特性,我們可以把P3.4,P3.5作為外部中斷請求輸入線,而定時器的溢出標志TF0、TF1當作外部中斷請求標志。

以T0為例,說明這種方法的設計。將T0編程為方式2(自動恢復常數的8位計數器),外部事件計數方式,TH0、TL0的初值設置為0FFH,并允許T0中斷。當連接在P3.4上的外部中斷請求輸入線電平發生負跳變時,TL0加1計數并產生溢出,置“1”

TF0向CPU請求中斷,同時將TH0中的常數0FFH送TL0。這樣,P3.4上電平每次發

生負跳變時,都會置“1”TF0向CPU請求中斷,P3.4就相當于邊沿觸發的外部中斷請求輸入線。

2.多個外部中斷源邏輯或輸入

這是一種中斷和軟件查詢結合方法,如圖2-24所示。四個外部中斷源通過一個或非門電路產生對8032單片機的中斷請求信號INT0。無論哪個外部中斷源提出中斷請求,都會使INT0引腳變低,從而向8032單片機申請中斷。然而,究竟是哪個外部中斷源引起的中斷,可在進入0003H中斷服務程序入口后通過軟件查詢P1.7~P1.4引腳上電平獲知。

圖2-24 多外部中斷源擴展

主站蜘蛛池模板: 库车县| 新蔡县| 星子县| 额尔古纳市| 新泰市| 丹巴县| 冕宁县| 湘潭市| 亳州市| 德令哈市| 岚皋县| 永修县| 萨嘎县| 东明县| 馆陶县| 海门市| 沐川县| 舞阳县| 三穗县| 沁水县| 永平县| 基隆市| 东台市| 开阳县| 万全县| 商丘市| 西乡县| 靖远县| 永安市| 民县| 茶陵县| 河池市| 洱源县| 盐源县| 贵阳市| 宝坻区| 正定县| 台南县| 罗田县| 喜德县| 仙游县|