2微機原理與接口技術第8章_第1頁
2微機原理與接口技術第8章_第2頁
2微機原理與接口技術第8章_第3頁
2微機原理與接口技術第8章_第4頁
2微機原理與接口技術第8章_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章中斷技術8.1中斷概述8.2多級中斷管理8.3IBM-PC機的中斷系統(tǒng)8.4可編程中斷控制器Intel8259A習題88.1中斷概述8.1.1中斷的基本概念當CPU與外設工作不同步時,很難確保CPU在對外設進行讀寫操作時,外設一定是準備好的。為保證數(shù)據(jù)的正確傳送,可采用查詢方式。但是在查詢方式下,CPU主動地查詢所有外設以確定其是否準備好,是否需要進行數(shù)據(jù)傳送,會使CPU的效率降低,特別是與低速外設進行數(shù)據(jù)交換時,CPU需要等待更多的時間。另外在對多個外設進行I/O操作時,如果有些外設的實時性要求較高,CPU有可能因來不及響應而造成數(shù)據(jù)丟失。

為了解決上述問題,引入了中斷技術。所謂中斷,是指計算機在正常執(zhí)行程序的過程中,由于某事件的發(fā)生使CPU暫時停止當前程序的執(zhí)行,而轉去執(zhí)行相關事件的處理程序,結束后又返回原程序繼續(xù)執(zhí)行,這樣的一個過程就是中斷。中斷最初的目的是為了解決高速CPU與低速外設之間的速度矛盾。實際上,中斷的功能遠遠超出了預期的設計,被廣泛地應用在分時操作、實時處理、人機交互、多機系統(tǒng)等方面,中斷技術大大地提高了CPU的工作效率。中斷的優(yōu)點有下面三點。

1.分時操作中斷技術實現(xiàn)了CPU和外部的并行工作,從而消除CPU的等待時間,提高了CPU的利用率。另外,CPU可同時管理多個外部設備的工作,提高了輸入/輸出數(shù)據(jù)的吞吐量。

CPU與外部設備進行數(shù)據(jù)傳輸?shù)倪^程如下:CPU啟動外部設備工作后,執(zhí)行自己的主程序,此時外部設備也開始工作。當外設需要數(shù)據(jù)傳輸時,發(fā)出中斷請求,CPU停止它的主程序,轉去執(zhí)行中斷服務子程序。中斷處理結束以后,CPU繼續(xù)執(zhí)行主程序,外部設備也繼續(xù)工作。如此不斷重復,直到數(shù)據(jù)傳送完畢。在此操作過程中,對CPU來說是分時的,即在執(zhí)行正常程序時,接收并處理外部設備的中斷請求,CPU與外部設備同時運行,并行工作。

2.實時處理在實時控制系統(tǒng)中,現(xiàn)場定時或隨機地產生各種參數(shù)、信息,要求CPU立即響應。利用中斷機制,計算機就能實時地進行處理,特別是對緊急事件的處理。

3.故障處理計算機運行過程中,如果出現(xiàn)某些故障,如電源掉電、運算溢出等,計算機可以利用中斷系統(tǒng)自行處理。8.1.2中斷的響應過程

1.中斷源所謂中斷源,就是引起中斷的原因或者發(fā)出中斷請求的設備。中斷源一般分為兩類:內部中斷源和外部中斷源。內部中斷源即中斷源在微處理器內部。如計算溢出、中斷指令的執(zhí)行、程序調試中指令的單步運行等都是內部中斷源。外部中斷源,即引起中斷的原因是處理機的外部設備。如外設的I/O請求、定時時間到、設備故障、電源掉電等都是外部中斷源。

2.中斷的響應過程中斷處理一般需要經(jīng)歷下述七個過程。

1)中斷請求當中斷源需要CPU對它進行服務時,就會產生一個中斷請求信號。對外部中斷源,這個信號加至CPU的中斷請求輸入引腳,形成對CPU的中斷請求;對內部中斷源,則通過CPU內部特定事件的發(fā)生或特定指令的執(zhí)行作為對CPU的中斷請求。2)中斷響應

CPU接受中斷請求就稱為中斷響應。當CPU執(zhí)行到每條指令的最后一個時鐘周期時,就去檢測是否有中斷請求,如果有中斷請求,對內部中斷源,CPU會無條件響應,而對外部中斷源,只有在滿足響應條件時,CPU才會響應其中斷請求。

3)斷點保護當CPU響應某個中斷時,就會轉到相應中斷源的服務程序上。為了使CPU在完成中斷服務后能返回原程序繼續(xù)執(zhí)行,需要將原程序被中斷處的相關信息保存到堆棧中。對8086/8088CPU,斷點處的IP、CS和標志寄存器內容由硬件進行自動保護,其他信息的保護則由中斷服務程序來完成。4)中斷源識別在計算機系統(tǒng)中,往往有多個中斷源,當有中斷請求時,CPU就需要確定具體的中斷源,以便對其進行相應的服務。在8086/8088中斷系統(tǒng)中,由中斷源自身提供其編碼,供CPU進行識別。

5)中斷服務一般地,每一個中斷源都有其相應的服務程序,即中斷程序。當CPU識別中斷源后,就會取得其中斷程序的入口地址,并轉入該中斷程序,進行相應的中斷服務。中斷服務是整個中斷處理的核心。6)斷點恢復當CPU完成相應的中斷服務后,利用中斷服務程序,將原來在中斷程序中用軟件保存的斷點信息從堆棧彈出,恢復為中斷前的內容。

7)中斷返回在中斷程序的最后,通過執(zhí)行一條中斷返回指令,將IP、CS及標志寄存器的內容從堆棧中彈出,使CPU返回到中斷前的程序,并從斷點處繼續(xù)執(zhí)行。8.1.3中斷控制的功能為了滿足微機系統(tǒng)的要求,中斷控制系統(tǒng)應具有如下三個功能。

1)能實現(xiàn)中斷并返回當某一中斷源發(fā)出中斷請求時,CPU能決定響應或是屏蔽它。當響應中斷請求時,CPU在執(zhí)行完當前指令后,把現(xiàn)場信息壓入堆棧,然后自動轉到中斷源的服務程序。當中斷處理完成后,能自動返回,并恢復中斷前的狀態(tài)繼續(xù)原程序的執(zhí)行。2)能實現(xiàn)中斷判優(yōu)功能中斷判優(yōu),即根據(jù)中斷源的優(yōu)先級進行排隊。當系統(tǒng)中出現(xiàn)多個中斷源同時提出中斷請求的情況時,中斷控制電路能根據(jù)各中斷源的優(yōu)先級進行響應,優(yōu)先級最高的中斷請求先響應。3)能實現(xiàn)中斷的嵌套中斷的嵌套是指高級別的中斷能中斷較低級別的中斷處理,它類似于子程序嵌套。當CPU響應某一中斷源的請求時,在進行中斷處理的過程中,若有優(yōu)先權級別更高的中斷源發(fā)出中斷請求,則CPU要能暫時中止正在進行的中斷服務程序。此時,它先保存當前程序的斷點和現(xiàn)場,然后響應高級別的中斷。在高級別的中斷處理完成以后,再返回繼續(xù)執(zhí)行被中斷的中斷服務程序。而當發(fā)出新的中斷請求的中斷源的優(yōu)先權級別與正在處理的中斷源同級或更低時,則CPU不會響應這個中斷請求,直至正在處理的中斷服務程序執(zhí)行完以后才去處理新的中斷請求。8.1.4最簡單的中斷情況為了便于理解中斷系統(tǒng)的工作情況,我們從只有一個中斷源這種最簡單的情況入手,來分析中斷的情況。

1.CPU響應中斷的條件

1)中斷請求當外設需要CPU提供服務時,便通過自身的中斷請求觸發(fā)器發(fā)出中斷請求信號,將它加至CPU的中斷請求輸入引腳(INTR),形成對CPU的中斷請求。這個信號一直保持到CPU響應中斷后才被清除,如圖8.1所示。圖8.1最簡單的中斷情況2)中斷屏蔽在外設的接口電路中,設有一個中斷屏蔽觸發(fā)器,用它來控制該中斷源發(fā)出的中斷請求信號是否被允許送往CPU,中斷屏蔽觸發(fā)器的狀態(tài)可以用輸出指令來控制。而實際的應用系統(tǒng)中往往有多個中斷源,這樣就可以將8個外設的中斷源組成一個端口,用輸出指令的置位操作來靈活地對某一中斷實現(xiàn)屏蔽控制。如圖8.1所示,當觸發(fā)器為“1”時,外設的中斷請求才能被送出至CPU。3)中斷的開放在CPU內部有一個中斷允許觸發(fā)器,用來決定是否響應CPU中斷請求引腳(INTR)送來的中斷請求。當中斷開放時(觸發(fā)器為“1”),CPU才能響應中斷;當關閉中斷時(觸發(fā)器為“0”),CPU不響應中斷請求。這個中斷允許觸發(fā)器的狀態(tài)可以用STI和CLI指令來改變。在CPU復位或是當中斷響應后,CPU就處于中斷關閉狀態(tài),這樣就必須在中斷服務程序中用STI指令來讓中斷開放。4)中斷請求的檢測

CPU在每條指令執(zhí)行的最后一個時鐘周期,檢測其中斷請求引腳(INTR)有無中斷請求信號。如果有中斷請求信號,就把內部的中斷鎖存器置“1”,在下一個總線周期到來時,進入中斷響應狀態(tài)。

2.CPU對中斷的響應當CPU響應外設的中斷后,還要具體完成一些工作。

1)關中斷當響應中斷后,首先要進行關中斷操作。對8086微處理器,CPU在發(fā)出中斷響應信號的同時,在內部自動完成關中斷操作。

2)斷點保護當CPU響應中斷源的中斷請求后,將停止下一條指令的執(zhí)行,把當前相關寄存器的內容壓入堆棧,為中斷返回作好準備。3)給出中斷入口地址,轉入相應的中斷服務程序對8086/8088CPU,由中斷源給出的中斷向量,形成中斷服務程序的起始地址,轉入中斷服務程序,進行相應的中斷服務。

4)恢復現(xiàn)場當CPU完成相應的中斷服務后,利用中斷服務程序,將原來保存的現(xiàn)場信息從堆棧彈出,恢復CPU內部各寄存器的內容。

5)開中斷與返回在中斷服務程序的最后,為使CPU能再次響應新的中斷請求,執(zhí)行開中斷操作,同時安排一條中斷返回指令,從堆棧中彈出IP、CS,恢復原程序的執(zhí)行。8.2多級中斷管理

在實際的應用當中,一般有多個中斷源。如果同一時間有多個中斷源向CPU提出中斷請求,CPU該如何處理,這就涉及到多級中斷的管理問題,其關鍵是中斷優(yōu)先級的控制問題。中斷優(yōu)先級是指每個中斷源在接受CPU服務時的優(yōu)先等級,對中斷優(yōu)先級的控制要解決以下兩個方面的問題:

(1)CPU應首先響應最高優(yōu)先級的中斷請求。由于不同的中斷源在系統(tǒng)中的功能不同,因而它們在重要性方面也存在級別的差異。當它們同時向CPU提出中斷請求時,系統(tǒng)應根據(jù)各中斷源的級別首先響應級別最高的中斷請求。(2)中斷嵌套,即高優(yōu)先級的中斷請求可以中斷低優(yōu)先級的中斷服務。當CPU正在處理某一中斷時,如果還有更高級別的中斷源有中斷請求時,CPU也要能夠響應。要保證多級嵌套的順利進行,在中斷處理程序中要有開中斷指令,即在中斷服務的同時,允許被中斷響應。另外,要設置足夠大的堆棧。8.2.1用軟件查詢確定中斷優(yōu)先權軟件查詢的方法是:當CPU響應中斷后,利用軟件查詢有哪些外設申請中斷,判斷哪個中斷源的級別更高,并首先為它進行中斷服務。在實際應用中,一般將8個外設的中斷請求觸發(fā)器組合起來,作為一個端口,并賦以端口號,如圖8.2所示。把8個外設的中斷請求信號相“或”后,作為INTR信號,這樣只要有一個外設有中斷請求,就可向CPU發(fā)出INTR信號。當CPU響應中斷后,把中斷寄存器組成的這個端口的狀態(tài)讀入CPU,逐位檢測,若有中斷請求就轉到相應的服務程序的入口。軟件查詢法的流程可參考8.3.5節(jié)的圖8.6。圖8.2實現(xiàn)軟件查詢的接口電路如果設定該接口的端口號為20H,程序查詢可采用兩種方法。1)屏蔽法IN AL,20H ;讀取中斷請求觸發(fā)器的狀態(tài)TEST AL,80H ;檢查“設備7”是否有請求JNE PROG7 ;是,則轉至“設備7”的處理程序PROG7TEST AL,40H ;否,檢查“設備6”是否有請求JNE PROG6 ;是,則轉至“設備6”的處理程序PROG6TEST AL,20H ;否,檢查“設備5”是否有請求JNE PROG5 ;是,轉至“設備5”的處理程序PROG52)移位法XOR AL,ALIN AL,[20H]RCL AL,lJC PROG7RCL AL,1JC PROG6

軟件查詢法的優(yōu)缺點:

(1)優(yōu)點:利用軟件完成中斷優(yōu)先權的檢測,不需要硬件判優(yōu)電路。另外,優(yōu)先權由查詢的次序來決定,首先查詢的即為優(yōu)先級最高的。

(2)缺點:不管外設是否有中斷請求都需要按次序逐一詢問,因而效率較低。特別是在中斷源較多的情況下,轉至中斷服務程序的時間較長。8.2.2硬件優(yōu)先權排隊電路

1.中斷優(yōu)先權編碼電路中斷優(yōu)先權編碼電路是用硬件編碼器和比較器組成的優(yōu)先權排隊電路,如圖8.3所示。在圖中,當8個中斷源中某一個有中斷請求時,便在其中斷請求線上產生“1”,并在“或”門的輸出端形成一個中斷請求信號,但它能否送至CPU的中斷請求線INTR,還受到比較器的控制。8條中斷輸入線的任一條,經(jīng)過編碼器可以產生三位二進制優(yōu)先權編碼A2A1A0,編碼范圍為000~111,其中111優(yōu)先權最高,000優(yōu)先權最低。而且,當有多個中斷源同時產生中斷請求時,編碼器只輸出優(yōu)先權最高的編碼。圖8.3中斷優(yōu)先權編碼電路

優(yōu)先權寄存器中存放的是CPU正在服務的中斷編碼,將其輸出至比較器即B2B1B0。A2A1A0與B2B1B0在比較器中進行比較,如果A2A1A0級別較低或與B2B1B0相同,則比較器輸出為“0”,與門1被封鎖;如果A2A1A0級別較高,比較器輸出為“1”,則與門1打開,中斷請求就被送至CPU的INTR輸入端。此時,CPU將中斷正在進行的中斷服務程序,轉去響應更高級別的中斷。如果CPU正在進行中斷服務,則“優(yōu)先權無效”信號為“0”;反之,則為“1”。因此,與門2保證當CPU沒有進行中斷服務時,只要有中斷請求,則中斷請求信號都能被送到CPU的INTR請求端。

2.鏈式優(yōu)先權排隊電路當有多個中斷請求輸入時,則由中斷輸入信號的與電路產生INTR信號,送至CPU。當CPU在現(xiàn)行指令執(zhí)行完后響應中斷,并發(fā)出高電平的中斷響應信號。但CPU究竟響應哪一個中斷呢?根據(jù)圖8.4的鏈式優(yōu)先權排隊電路,若F/F1有中斷請求,則它的輸出為高電平,由于來自CPU的中斷響應是高電平,所以與門A1輸出為高電平,由它控制轉至中斷1的服務程序的入口。與此同時,與門A2輸出為低電平,它使后級的2個B門、2個C門、2個D門、2個E門等各級門的輸入和輸出全為低電平,使其無法傳遞高電平的中斷請求信號,即屏蔽了所有其他的級。

如果第一級沒有中斷請求,即F/F1=0,則中斷輸出1為低電平,但門A2的輸出卻為高電平,這樣就把中斷響應傳遞到了下一級。若此時F/F2=1,則與門B1輸出為高電平,控制轉去執(zhí)行中斷2的服務程序,此時與門B2輸出低電平,它屏蔽以下的各級。同理,若F/F2=0,則與門B1輸出低電平,與門B2輸出高電平,這樣就將中斷響應再傳遞至下一級,依此類推。圖8.4鏈式優(yōu)先權排隊電路8.3IBM-PC機的中斷系統(tǒng)8.3.1外部中斷外部中斷是由外部中斷源對CPU產生的中斷請求,根據(jù)外部中斷源是否受8086/8088CPU標志寄存器的中斷允許標志位(IF)的影響,將中斷分為非屏蔽中斷和可屏蔽中斷兩種。對應于這兩種中斷方式,在8086/8088CPU的外圍引腳上有兩個中斷請求輸入引腳NMI和INTR,分別用于非屏蔽中斷請求和可屏蔽中斷請求信號的輸入。

1.非屏蔽中斷非屏蔽中斷不受CPU中斷允許標志位IF的影響,一旦有中斷請求,CPU必須響應。當外部中斷源的中斷請求信號加至NMI(NonMaskableInterrupt)引腳時,就產生非屏蔽中斷。非屏蔽中斷由CPU內部自動提供中斷向量碼(n=2),以便及時響應。NMI中斷可用來處理微機系統(tǒng)的緊急狀態(tài)。在IBMPC/XT機中,NMI中斷用來處理存儲器奇偶校驗錯和I/O通道奇偶校驗錯等事件。非屏蔽中斷的優(yōu)先權高于可屏蔽中斷。

2.可屏蔽中斷可屏蔽中斷受中斷允許標志位IF的限制,只有當IF=1時,CPU才響應中斷;當IF=0時,CPU不會響應外部中斷,即中斷被屏蔽。當外部中斷請求信號加至CPU的INTR引腳上時,即產生可屏蔽中斷。在計算機系統(tǒng)中,大多數(shù)的外部中斷源都屬于可屏蔽中斷。需要注意的是,在系統(tǒng)復位、某一中斷被響應或使用CLI指令后,IF就被置“0”,從而使CPU關閉了對可屏蔽中斷的響應。因此,如果需要使CPU再次響應來自于INTR的中斷請求,就必須用STI指令開放中斷。8.3.2內部中斷內部中斷是指CPU內部事件及執(zhí)行軟中斷指令所產生的中斷請求。已定義的內部中斷有下面的5個。

(1)除法錯中斷。執(zhí)行除法指令時,如果除數(shù)為“0”或商超過寄存器所能表達的最大值,則無條件產生該中斷。該中斷向量碼為0。

(2)單步中斷。該中斷是在調試程序過程中為單步運行程序而提供的中斷。當設定單步操作時,標志寄存器的TF=1,這樣使CPU執(zhí)行完一條指令就產生該中斷。該中斷向量碼為1。(3)斷點中斷。該中斷在調試程序過程中為設置程序斷點而提供的中斷。執(zhí)行INT3指令或設置斷點可產生該中斷。INT3指令功能與軟件中斷相同,但是為了便于與其他指令置換,它被設置為1字節(jié)指令。該中斷向量碼為3。

(4)溢出中斷。在算術運算程序中,若在算術運算指令后加入一條INTO指令,則INTO指令將測試溢出標志OF。當OF=1(運算溢出),該中斷發(fā)生。它的中斷向量碼為4。

(5)軟件中斷。執(zhí)行軟件中斷指令INTn即產生該中斷,n為中斷向量碼。8.3.3中斷優(yōu)先權

1.優(yōu)先權的判決在IBM-PC機中,當多個中斷同時向CPU提出中斷申請時,利用可編程中斷控制器(PIC)來實現(xiàn)中斷優(yōu)先權的判決。它是80x86系統(tǒng)中普遍采用的方法,也是目前使用最廣泛、最方便的方法。對于可編程中斷控制器,將在6.4節(jié)中進行詳細分析。

2.中斷優(yōu)先級的次序

IBM-PC規(guī)定的中斷優(yōu)先級的次序是:內部中斷(高)→非屏蔽中斷→可屏蔽中斷→單步中斷(低)

在8086/8088系統(tǒng)中,可屏蔽中斷有8個中斷源,其中斷優(yōu)先級如表8-1所示。表8-18086/8088的8級可屏蔽中斷源

中斷優(yōu)先級中斷源高IRQ0電子鐘時間基準

低IRQ1鍵盤IRQ2保留IRQ3異步通信(COM2)IRQ4異步通信(COM1)IRQ5硬盤IRQ6軟磁盤IRQ7并行打印機8.3.4中斷向量表

1.中斷類型號(中斷向量碼)

在8086/8088的中斷系統(tǒng)中,每個中斷源都有相應的處理程序,對每個中斷都規(guī)定有一個中斷類型號,共256個(0~255)。CPU根據(jù)這些類型號結合中斷向量表就可以轉入相應的中斷處理程序,完成相應的中斷服務。常用中斷類型號的功能如表8-2所示。其中,中斷類型號的前5個是8088規(guī)定的專用中斷;8H~FH是八級硬件中斷;5H和10H~1AH是基本外部設備的輸入/輸出驅動程序和BIOS中調用的有關程序;1BH和1CH由用戶設定;1DH~1FH指向三個數(shù)據(jù)區(qū)域。表8-2常用中斷類型號及其功能中斷類型號中斷功能中斷類型號中斷功能0H除法錯中斷10HCRT顯示I/O驅動程序1H單步中斷11H設備檢測2HNMI12H存儲器大小檢測3H斷點中斷13H磁盤I/O驅動程序4H溢出中斷14HRS-232I/O驅動程序5H打印屏幕15H盒式磁帶機處理6H保留16H鍵盤I/O驅動程序7H保留17H打印機I/O驅動程序8H電子鐘定時中斷18HROMBASIC9H鍵盤中斷19H引導(BOOT)AH保留的硬件中斷1AH一天的時間BH異步通信中斷(COM2)1BH用戶鍵盤I/OCH異步通信中斷(COM1)1CH用戶定時器時標DH硬磁盤中斷1DHCRT初始化參數(shù)EH軟磁盤中斷1EH磁盤參數(shù)FH并行打印機中斷1FH圖形字符集表8-3DOS操作系統(tǒng)中斷調用中斷類型號中斷功能20H程序結束21H請求DOS功能調用22H結束地址23H中止(Ctrl-Break)處理24H關鍵性錯誤處理25H磁盤順序讀26H磁盤順序寫27H程序結束且駐留內存28HDOS內部使用29H~2EHDOS保留使用2FHDOS保留使用30H~3FHDOS保留使用

2.中斷向量表當一個中斷源提出中斷請求后,系統(tǒng)怎么轉入相應的處理程序呢?在8086/8088系統(tǒng)中,系統(tǒng)是依靠中斷向量表來轉到中斷源相應的處理程序,從而完成中斷服務。中斷向量表是中斷類型號與相應中斷源的中斷處理程序入口地址之間的連接表。8086/8088微機系統(tǒng)用內存最低端的1KB空間作為中斷向量表(00000H~003FFH,共1KB),共有256個中斷向量碼,按序號排列。在微機系統(tǒng)初始化時,利用程序將中斷向量寫入系統(tǒng)內存的最低端,如圖8.5所示。圖8.5中斷向量表

每個中斷向量在內存中占4個字節(jié),共256個中斷向量,因此占存儲器1KB的空間。在一個中斷向量的4個字節(jié)中,高地址字為中斷處理程序的段地址CS,低地址字則是偏移地址IP。這樣,在中斷響應時,CPU就可以根據(jù)中斷向量碼n,通過簡單的4×n運算,查找中斷向量表,從表中4×n地址開始的連續(xù)4字節(jié)單元里獲取中斷處理程序的入口地址,從而轉入相應中斷服務程序。8.3.5微處理器的中斷響應和處理過程通過對中斷向量表的分析,當?shù)玫侥骋恢袛嘣吹闹袛囝愋痛a后,即可轉入相應的中斷服務程序。因此,在對8086/8088系統(tǒng)中不同中斷類型的分析上,主要看它們是如何獲得中斷類型碼的。對于外部中斷,CPU是在每條指令執(zhí)行結束時采樣中斷請求輸入信號。如果有可屏蔽中斷請求,且IF=1(開中斷),則CPU連續(xù)運行兩個中斷響應周期,在第二個中斷響應周期中,采樣數(shù)據(jù)線獲取由外設輸入的中斷類型碼。如果采樣到非屏蔽中斷請求,則CPU不經(jīng)過上述的兩個中斷響應周期,而在內部自動產生中斷類型碼2。對于軟件中斷,中斷類型碼則自動形成,具體安排如表8-4所示。表8-4軟件中斷類型碼除法錯中斷0單步中斷1NMI2斷點中斷3溢出中斷4中斷功能中斷類型碼INTn指令n8086/8088取得中斷類型碼后,就開始進行中斷服務。其處理過程如下:

(1)將中斷類型號乘4,并將其作為中斷向量表的指針,使其指向中斷處理程序的入口地址。

(2)保存CPU狀態(tài),即把標志寄存器的內容入棧。

(3)使TEMP=TF,清除IF和TF的狀態(tài)標志位,屏蔽新的INTR和單步中斷。

(4)保存斷點,即把CS和IP內容入棧。

(5)從中斷向量表中獲取CS、IP,轉入中斷處理子程序入口地址。(6)將CPU內部各寄存器的內容入棧,開中斷(允許中斷嵌套),然后執(zhí)行中斷處理子程序,進行中斷服務。當中斷處理程序結束時,恢復被保存寄存器的內容,最后執(zhí)行中斷返回指令IRET。IRET指令將從堆棧中彈出IP、CS和標志寄存器的內容,此時,CPU結束中斷處理子程序的運行,返回到被中斷的主程序斷點處繼續(xù)執(zhí)行。

8086/8088的中斷處理過程可用圖8.6所示的流程圖表示。圖8.68088的中斷響應和處理流程8.4可編程中斷控制器Intel8259A8.4.1Intel8259A的主要性能和內部結構

1.Intel8259A的主要性能

Intel8259A是被廣泛使用的可編程中斷控制器,在IBM-PC/XT機中,就使用Intel8259A作為中斷控制器。它用來管理輸入到CPU的可屏蔽中斷請求,其主要功能有:(1)可以直接管理8個中斷源,級聯(lián)方式下不用附加電路就可以管理64個可屏蔽中斷源,并具有優(yōu)先權判決功能。

(2)能為中斷源提供中斷向量碼。

(3)可以對每一級中斷進行屏蔽控制。

(4)可提供多種可供選擇的工作方式,并能通過編程進行控制。2.Intel8259A的內部結構圖8.78259A的內部結構框圖

其內部各組成模塊有如下功能。

1)中斷請求寄存器IRR8259A有8條外部中斷請求輸入信號線IR0~IR7,每一條請求線上有一個相應的觸發(fā)器來保存請求信號,它們構成了中斷請求寄存器IRR(InterruptRequestRegister)。外部設備產生中斷請求有兩種方式:一種是邊沿觸發(fā)方式,它利用脈沖上升沿的跳變,并一直保持高電平直到中斷被響應為止;另一種是電平觸發(fā)方式,它通過輸入并保持高電平來實現(xiàn)中斷請求。2)中斷屏蔽寄存器IMRIMR(InterruptMaskRegister)用來存放屏蔽位信息,IMR的每一位可以禁止IRR中對應位的中斷請求輸入信號進入。但屏蔽優(yōu)先權級別較高的中斷請求輸入,不會影響優(yōu)先級較低的中斷請求輸入。

3)中斷服務寄存器ISRISR(InterruptServiceRegister)存放當前正在進行服務的所有中斷。ISR中相應位的置位是在中斷響應的INTA脈沖期間,由優(yōu)先權判決電路根據(jù)IRR中各請求位的優(yōu)先權級別和IMR中屏蔽位的狀態(tài),將中斷的最高優(yōu)先級請求位選通到ISR中。4)優(yōu)先權判決電路它在中斷響應期間,根據(jù)控制邏輯規(guī)定的優(yōu)先權級別和IMR的內容,把IRR中允許中斷的優(yōu)先權最高的中斷請求位送入ISR。

5)控制邏輯在8259A的控制邏輯電路中有一組預置命令字寄存器和一組操作命令字寄存器,利用它們通過編程設置來管理8259A的工作方式。當有未被屏蔽的高級別的中斷請求時,通過控制邏輯輸出高電平的INT信號,向CPU申請中斷。當CPU允許中斷時,發(fā)出中斷響應信號INTA。在中斷響應期間,它允許ISR的相應位置位,并發(fā)送相應的中斷向量,通過數(shù)據(jù)總線緩沖器輸出到總線上。6)數(shù)據(jù)總線緩沖器這是8位雙向三態(tài)緩沖器,用作8259A與數(shù)據(jù)總線的接口,傳輸命令控制字、狀態(tài)字和中斷向量。

7)讀/寫控制電路該部件接收來自CPU的讀/寫命令,實現(xiàn)對8259A的讀/寫操作。

8)級聯(lián)緩沖器/比較器它們實現(xiàn)8259A芯片之間的級聯(lián),使得中斷源可以由8級擴展至64級。

3.8259A的工作過程根據(jù)8259A的內部結構,其工作的過程如下:

(1)外部中斷源通過IR0~IR7輸入高電平的中斷請求信號。

(2)外部中斷源的中斷請求信號使中斷請求觸發(fā)器IRR的相應位置“1”,并與IMR按位相“與”,送給優(yōu)先權判決電路。

(3)優(yōu)先權判決電路從IRR中檢測出優(yōu)先級最高的中斷請求位,并將其與ISR中記錄的正在被CPU服務的中斷進行優(yōu)先級比較。當提請的中斷優(yōu)先級高于正在服務的中斷優(yōu)先級時,中斷優(yōu)先權判決電路就向控制邏輯發(fā)出有效的中斷請求信號。(4)當控制邏輯收到有效的中斷請求信號時,向CPU發(fā)出高電平信號INT,請求中斷服務。

(5)在中斷允許的情況下(IF=1),CPU接受中斷請求INTA,并發(fā)出中斷響應信號INTA,對8086/8088CPU,將連續(xù)發(fā)出兩個INTA脈沖。

(6)當8259A接到來自CPU的第一個INTA脈沖時,就把允許中斷的最高優(yōu)先級請求位置入ISR,并把IRR中的相應位復位。如果工作在級聯(lián)方式下,而且設備的優(yōu)先級最高,則主控8259A將送出級聯(lián)地址CAS0~CAS2,將其加載至從屬8259A上。(7)在第二個INTA脈沖,對單獨使用或是級聯(lián)方式下從屬的8259A,將其中斷向量發(fā)送至數(shù)據(jù)總線。

(8)CPU從數(shù)據(jù)總線上獲取中斷向量碼,轉移到相應的中斷處理程序。

(9)中斷結束時,通過在中斷處理程序中向8259A發(fā)送一條EOI(中斷結束)命令,使ISR相應位復位,或在AEOI(自動中斷結束)方式下,由8259A在第二個INTA脈沖的后沿自動將ISR相應位復位。

級聯(lián)線CAS0~CAS2是8259A相互間連接用的專用總線,用來構成8259A的主—從式級聯(lián)控制結構。當8259A作為主設備時,CAS0~CAS2是輸出信號;當8259A作為從設備時,它們是輸入線。編程時設定的8259A的從設備標志保存在級聯(lián)緩沖器內,系統(tǒng)中全部8259A級聯(lián)線的對應端互連。在中斷響應期間,主8259A把所有申請中斷的從設備中優(yōu)先級最高的8259A的從設備標志輸出到級聯(lián)線CAS0~CAS2上,從8259A把這個設備標志與級聯(lián)緩沖器內保存的從設備標志進行比較。在后續(xù)的INTA脈沖期間,被選中的8259A從設備把中斷向量送到數(shù)據(jù)總線上。這個中斷向量也是在編程時預先設定的,保存在控制邏輯部件內。8.4.2Intel8259A的外部特性圖8.88259A的外圍引腳排列在上圖中,各引腳的名稱如下:D0~D7:雙向8位雙數(shù)總線。RD:讀輸入信號。WR:寫輸入信號。A0:地址選擇輸入。CS:片選輸入。CAS0~CAS2:級聯(lián)線。SP/EN:雙功能線。8259A工作在緩沖方式時,該引腳輸出低電平控制信號,用來控制系統(tǒng)總線與8259A數(shù)據(jù)引線之間的數(shù)據(jù)緩沖器,使中斷向量碼能在第二個INTA周期正常從8259A輸出。當8259A工作在級聯(lián)方式時,該引腳為輸入,SP=1,設定8259A為主控器;SP=0,設定8259A為從屬部件。

IR0~IR7:中斷請求輸入。

INT:8259A向CPU輸出的中斷請求端,與CPU的INTR引腳相連。

INTA:中斷響應輸入端,接收CPU向8259A輸入的中斷響應信號。8.4.3Intel8259A的控制字和編程

8259A是可編程控制器,它根據(jù)CPU的命令進行工作。通過對控制字的編程控制,來初始化和控制8259A工作方式,使其完成規(guī)定的功能。CPU對8259A的控制命令分為兩類:一類是初始化控制字(ICW),另一類是操作命令字(OCW)。8259A共有7個控制字,其中4個是初始化控制字,3個是操作控制字。

8259A的編程分為兩部分:一是初始化編程,它是通過初始化控制字來完成對8259A初始狀態(tài)的設定,在計算機加電初始化時由BIOS完成的;二是操作方式的編程,它是通過操作命令字來控制8259A的工作方式,操作命令字可在8259A初始化后的任何時間寫入。

1.8259A的初始化控制字及初始化編程初始化控制字ICW(InitializationControlWord)是在計算機啟動的過程中設定完成的,計算機啟動起來后,8259A就按初始設定的狀態(tài)工作。

1)8259A初始化的順序

8259A有四條初始化控制字ICWl、ICW2、ICW3和ICW4,由于8259A只有一根地址線,因此對各個控制字的操作是按照一定的順序并結合某些數(shù)據(jù)位來進行尋址設置的。8259A初始化的順序如圖8.9所示。圖8.98259A的初始化順序2)各初始化控制字的功能(1)ICW1的控制字格式如圖8.10所示。圖8.10ICW1的格式A0=0、D4=1:是ICW1的標志。只要CPU向8259A發(fā)送一條A0=0和D4=1的命令時,這條命令就被譯碼為對ICW1進行操作。它啟動8259A的初始化過程,產生下列動作:清除IMR,把最低優(yōu)先級分配給IR7,把最高優(yōu)先級分配給IR0,將從設備標志置成7,清除特殊屏蔽方式,設置讀IRR方式。

A7~A5:在8080(85)系統(tǒng)中為中斷向量地址位,在8086/8088系統(tǒng)中不用。LTIM:中斷輸入寄存器的觸發(fā)方式。0為邊沿觸發(fā),中斷輸入信號上升沿時被識別并送入IRR。1為電平觸發(fā),中斷輸入信號為高電平即可進入IRR。這兩種觸發(fā)方式都要求高電平的請求信號在置位IRR相應位后一直保持,直到中斷被響應為止。

ADI:設定8080(85)方式下的中斷向量地址間隔的字節(jié)數(shù),1為4字節(jié),0為8字節(jié)。在8086/8088方式下此位不用。

SNGL:單個器件/級聯(lián)方式指示。1表示系統(tǒng)中只有一個8259A,0表示級聯(lián)方式。

IC4:該位用于設定有無ICW4。1表示使用ICW4,在8086/8088方式下,必須使用ICW4。0表示不用ICW4,此時ICW4所選擇的全部功能位都置成0。(2)ICW2在8086/8088方式下,用于提供8個中斷源的中斷向量碼。ICW2的高5位T7~T3在初始化編程時設置,初始化低3位由8259A用中斷源的編號填寫。在8080(85)方式下,ICW2是中斷向量地址的A15~A8位,低位地址在ICWl的A7~A5中。

ICW2的命令字格式如圖8.11所示。圖8.11ICW2的格式ICW2利用A0=1和初始化的次序來尋址。在8086/8088系統(tǒng)中,初始化控制字ICW2是比較重要的,它確定了8259A外接中斷源的起始中斷向量碼,并實現(xiàn)了每個中斷源中斷向量碼的自動生成。下面舉例說明中斷向量碼的形成情況。在初始化編程時要保持ICW2的低三位為“0”,如設定ICW2為“11111000”(F8H)。如果某一中斷源IRn有中斷請求,將n填入ICW2的低3位,與高5位共同組成該中斷源的中斷向量碼,如表8-5所示。表8-5中斷向量碼的形成情況ICW2

D7D6D5D4D3D2D1D0中斷向量碼中斷源11111000F8H

11111000F8HIR011111001F9HIR111111010FAHIR211111011FBHIR311111100FCHIR411111101FDHIR511111110FEHIR611111111FFHIR7(3)ICW3用于8259A的級聯(lián),若系統(tǒng)中只有一片8259A,則不用ICW3;若8259A工作于級聯(lián)方式,則需要用ICW3設置8259A的狀態(tài)。是否需要ICW3,取決于ICWl中的SNGL位的狀態(tài)。在級聯(lián)方式下,主控8259A的ICW3表示8259A的級聯(lián)結構,ICW3中被置位的位表示對應的IRn輸入端接有從屬8259A,并與從屬8259A的INT輸出端相連。在中斷響應過程中,如果從屬8259A發(fā)出中斷請求的優(yōu)先級最高,則中斷向量由相應的從設備8259A發(fā)送。主控8259A的ICW3格式如圖8.12所示。圖8.12ICW3的格式

對于從設備8259A,ICW3中低3位是從設備標志代碼,它等于主設備對應IR輸入端的編碼。在中斷響應過程中,主設備把IRn的編碼n送上級聯(lián)線CAS2~CAS0,從設備把它與自己的從設備標志進行比較,并把比較結果相等的從設備的中斷向量送到數(shù)據(jù)總線上。從設備的ICW3格式如圖8.12所示。

ICW3利用A0=1和ICW1中SNGL=1及初始化順序尋址。(4)ICW4只有在ICW1的IC4=1時才使用,其格式如圖8.13所示。圖8.13ICW4格式μPM:CPU類型選擇,為1時用于8086/8088系統(tǒng)中,為0時則工作于8080/8085系統(tǒng)中。

AEOI:選擇是否為自動中斷結束方式。為1時為自動中斷結束方式;為0時不用自動中斷結束方式,此時必須在中斷服務程序中使用EOI命令,使ISR中最高優(yōu)先權的位復位。

M/S:在緩沖方式下有效,決定8259A作為主設備還是作為從設備工作。當BUF=1和M/S=1時,8259A按主設備工作;當BUF=1和M/S=0時,8259A按從設備工作。如果在非緩沖方式下,M/S位不起作用。BUF:用于指示8259A是否工作在緩沖方式,由此決定了8259A的SP/EN端的功能。為1時,8259A工作于緩沖方式,SP/EN用作允許緩沖器接收/發(fā)送的輸出控制信號EN;SP/EN為0時,8259A不工作于緩沖方式,SP/EN用作主設備/從設備選擇的輸入控制信號SP。

SFNM:這一位用來選擇8259A在級聯(lián)方式下是否工作于特殊全嵌套方式。如果主設備編程時設置SFNM=1,即為特殊全嵌套方式,它可確保從設備的中斷輸入實現(xiàn)真正的完全嵌套優(yōu)先權結構。如果SFNM=0,表示8259A工作于一般全嵌套方式。

ICW4利用A0=1、IC4=1和初始化的順序尋址。

2.8259A的控制命令字及操作方式編程對8259A初始化完成后就進入工作狀態(tài),準備好接受中斷源的中斷請求信號。在8259A工作期間,可通過操作命令字OCW(OperatingCommandWord)來使它按不同的方式進行操作,8259A操作命令字可在初始化后的任何時刻寫入8259A。操作命令字共有三個:OCW1、OCW2、OCW3。1)8259A操作命令字的尋址當初始化完成后,對8259A操作命令字的尋址是通過8259A的地址線A0和某些數(shù)據(jù)位結合來進行的。具體尋址條件如下:當A0=1時,尋址OCW1;當A0=0,D4=0,D3=0時,尋址OCW2;當A0=0,D4=0,D3=1時,尋址OCW3。2)8259A的操作命令

(1)OCW1。當A0=1時,可尋址OCW1。OCW1是中斷屏蔽命令字,其格式如圖8.14所示。

OCW1用來設置8259A的屏蔽操作,OCWl的每一位對應中斷屏蔽寄存器IMR的相應屏蔽位,通過OCW1對IMR進行置位和復位操作。M7~M0代表8個屏蔽位,用來控制IR輸入的中斷請求信號,如果某一位M為1,它就屏蔽對應的IR中斷請求(即M0=1屏蔽IR0,M1=1屏蔽IR1等)。如果M=0,則清除屏蔽狀態(tài),允許對應的IR輸入信號產生INT輸出,請求CPU進行服務。圖8.14OCW1的格式(2)OCW2。當A0=0,D4=D3=0時可尋址OCW2。OCW2用于控制中斷結束、優(yōu)先權循環(huán)等操作。OCW2命令或方式的選擇以位的組合格式來設置,而不是按位設置。OCW2的格式和各位的功能如圖8.15所示。圖8.15OCW2的格式R:優(yōu)先權循環(huán)控制位。R=1為循環(huán)優(yōu)先權,R=0為固定優(yōu)先權。

SL:選擇指定的IR級別位。SL=1,操作在L2~L0指定的編碼級別上執(zhí)行;SL=0,L2~L0無效。

EOI:中斷結束命令位,在非自動中斷結束命令情況下,EOI=1表示中斷結束命令,它使ISR中最高優(yōu)先權位復位;EOI=0則不起作用。

L0~L2:指定操作起作用的IR級別碼。當SL=1時,L0~L2指定的級別編碼才起作用。以上各位的組合功能見圖8.15所示。(3)OCW3。當A0=0,D4=0,D3=1時,尋址OCW3。OCW3主要控制8259A的中斷屏蔽、查詢和讀寄存器等狀態(tài)。OCW3的格式及各位功能如圖8.16所示。

ESMM:允許或禁止SMM位起作用的控制位。ESMM為1時允許SMM位起作用,為0時禁止SMM位起作用。圖8.16OCW3的格式SMM:設置特殊屏蔽方式選擇位。與ESMM位共同起作用,如圖8.16所示。

P:查詢命令位。P=1時,8259A發(fā)送查詢命令;P=0時,不處于查詢方式。OCW3設置查詢方式以后,隨后送到8259ARD端的讀脈沖作為中斷響應信號,讀出最高優(yōu)先權的中斷請求IR級別碼。

RR:讀寄存器命令位。RR=1時允許讀IRR或ISR,RR=0時禁止讀這兩個寄存器。

RIS:讀IRR或ISR選擇位。其具體功能如圖8.16所示。8.4.4Intel8259A的工作方式

8259A通過編程可以設置各種工作方式,因而能適應不同系統(tǒng)環(huán)境的要求。

1.中斷屏蔽方式

8259A有兩種形式的屏蔽方式:一般屏蔽方式和特殊屏蔽方式。

1)一般屏蔽方式在正常情況下,當一個中斷請求被響應時,8259A將禁止同級和較低優(yōu)先級的中斷請求,這就是一般屏蔽方式。2)特殊屏蔽方式在一些特殊的場合,如需要均等服務,此時就需要對中斷的優(yōu)先權進行動態(tài)管理,一般屏蔽方式就不能滿足要求。另外,如果一個高級別的中斷源持續(xù)中斷請求,就會使某些優(yōu)先級較低的中斷源長時間得不到服務,等等。這就是引入特殊屏蔽方式的原因。在特殊屏蔽方式下,使用OCW1讓某個屏蔽位置位時,就禁止在這一級上再次產生中斷,而允許其他較高或較低的未屏蔽的優(yōu)先級產生中斷。這樣通過OCW1對IMR的操作控制,就可以有選擇地允許或禁止某些中斷。特殊屏蔽方式由OCW3來設置,當ESMM=1、SMM=1時就可設置此種方式;當ESMM=1、SMM=0時即可清除。

2.查詢方式

8259A也可以用查詢方式來檢查請求中斷的設備。當CPU關中斷時,中斷輸入信號將不起作用,那么對設備的服務就可通過軟件查詢來實現(xiàn)。查詢命令是通過OCW3中P=1發(fā)出的,8259A接到查詢命令后,把隨后的一次CPU讀操作當作中斷響應信號,如果有中斷請求,就把ISR相應的位置位,并讀出該中斷級別,如圖8.17所示。從發(fā)出查詢命令的寫脈沖開始,到讀出查詢結果的讀脈沖為止,這段時間里中斷被“凍結”。其中,I為有無中斷的標志,當I=1時,W2~W0為請求中斷服務的最高優(yōu)先權中斷源的二進制編碼。圖8.17查詢方式讀出的中斷狀態(tài)字

3.優(yōu)先級方式

8259A對優(yōu)先級的控制是通過操作命令字OCW2來設置的,它有兩種優(yōu)先級方式:

1)固定優(yōu)先級方式當8259A初始化完成后,就為固定優(yōu)先級方式,即8個中斷請求的優(yōu)先級從高到低依次為:IR0→IR1→IR2→IR3→IR4→IR5→IR6→IR7,IR0優(yōu)先級最高,IR7優(yōu)先級最低,該順序固定不變。2)循環(huán)優(yōu)先級方式循環(huán)優(yōu)先級方式是將8個中斷源IR0~IR7按固定順序構成一個閉合的環(huán),具體有兩種實現(xiàn)方法。

(1)自動優(yōu)先級循環(huán)。該方法規(guī)定剛被服務過的中斷源優(yōu)先級最低,其他中斷源的優(yōu)先級將依閉合環(huán)順序變化。例如,CPU對IR3中斷服務結束后,8259A的8個中斷源優(yōu)先順序由高到低為IR4、IR5、IR6、IR7、IR0、IR1、IR2、IR3。這種工作模式可通過OCW2來設置。(2)指定循環(huán)優(yōu)先級。該方法規(guī)定在OCW2中指定的中斷源優(yōu)先級最低,其他中斷源的優(yōu)先級將按閉合環(huán)順序變化。例如,設置OCW2的R=1,SL=1,EOI=0,則OCW2中L2~L0所對應的中斷源級別最低。假如L2L1L0編碼為010,即指定IR2的優(yōu)先級最低,8個中斷源的優(yōu)先級順序將變?yōu)椋篒R3、IR4、IR5、IR6、IR7、IR0、IR1、IR2。另外,優(yōu)先權也可以在執(zhí)行EOI命令時進行改變,只要設置OCW2的R=1,SL=1,EOI=1,同樣也使OCW2中L2~L0所對應的中斷源級別最低。循環(huán)優(yōu)先級控制使8259A在中斷控制過程中可以靈活地改變各中斷源的優(yōu)先順序,使每個中斷源都有機會得到及時的服務。

4.嵌套方式嵌套方式用來進行優(yōu)先級控制,8259A的嵌套方式有兩種形式。

1)全嵌套方式(一般嵌套方式)

在8259A初始化完成后,就處于固定中斷優(yōu)先權方式。全嵌套方式是指當CPU正在對某中斷源進行服務時,在中斷服務程序完成之前,將會屏蔽同級或更低級中斷源的中斷請求,只有優(yōu)先權比它高的中斷源的中斷請求才能被響應(CPU已開中斷)。這種方式一般用在單片使用8259A或級聯(lián)方式下的從屬8259A上。2)特殊全嵌套方式

8259A以級聯(lián)方式工作時,要求主控制器8259A在對一個從屬8259A送來的中斷進行服務的過程中,還能夠對同一個從屬8259A上另外的中斷源進行中斷服務,這就需要采用特殊的全嵌套模式。特殊全嵌套方式是為實現(xiàn)多重中斷而專門設置的,這種方式與全嵌套方式的工作情況基本相同,不同點有以下兩個方面。

(1)在級聯(lián)方式下的主控制器8259A上,它允許同級優(yōu)先權之間中斷。這樣,如果CPU響應了從屬8259A某一中斷源的中斷請求后,這個從屬8259A上優(yōu)先權高于正在服務的中斷源,另一個中斷請求也可以得到響應。(2)如果主控8259A的某一端接有從屬8259A,這個中斷源要退出中斷服務程序前,必須檢查它是否是這個從屬8259A中惟一的中斷源,只有在惟一的情況下才能送一個EOI命令至主8259A,以結束此從屬8259A的中斷。檢查的辦法是送一個一般EOI命令給從屬8259A,當它的ISR為0時,說明它的中斷源是惟一的。

5.中斷結束方式

8259A中的內部服務寄存器ISR用來記錄哪一個中斷源正在被CPU服務,當中斷結束時,必須給8259A一個命令,以清除ISR的相應位。8259A有兩種中斷結束方式。

1)自動結束方式(AEOI)

這種方式不需要EOI命令,對8086/8088系統(tǒng),8259A在第2個INTA脈沖的后沿自動執(zhí)行使ISR的相應位復位。由于這種方式在中斷服務過程中使ISR相應位復位,就有可能響應優(yōu)先級更低的中斷,因此不適合有中斷嵌套的情況。2)非自動結束方式(EOI)

這種方式是在中斷處理程序中提供一條EOI(中斷結束)命令,使8259A中的ISR相應位復位。如果是級聯(lián)方式,則必須送兩個EOI命令,第一個先送從屬8259A,第二個送主控8259A,特別是在特殊嵌套的情況下,必須按此次序發(fā)送。

EOI命令由OCW2來設置,有兩種形式。

(1)一般中斷結束命令(EOI)。該命令對正在服務的中斷源的ISR復位。當8259A工作在全嵌套方式時,且剛被CPU服務的中斷源優(yōu)先級最高,此時就可以使用該命令對正在服務的中斷源的ISR復位。一般EOI命令通常放置在中斷返回指令之前。(2)特殊中斷結束命令(SEOI)。該命令對指定中斷源的ISR復位。在特殊的全嵌套方式下,8259A可能無法確定剛被服務過的中斷源的級別,此時就可用SEOI命令,通過OCW2中的L2~L0來指定ISR中要復位的位。但如果該位在特殊的屏蔽模式中由IMR屏蔽,則不能使用SEOI命令。

6.緩沖方式當8259A以級聯(lián)方式用在一個大的系統(tǒng)下時,就要求對數(shù)據(jù)總線進行驅動緩沖。緩沖方式就是用來設定系統(tǒng)總線與8259A數(shù)據(jù)總線之間是否需要進行緩沖。

(1)非緩沖方式。在指定非緩沖方式時,SP/EN作為輸入,用來識別8259A是主控制器還是從屬控制器。

(2)緩沖方式。此方式下SP/EN為輸出,EN作為允許緩沖器發(fā)送/接收的控制信號。

7.讀8259A的狀態(tài)

CPU可以讀出8259A內部的IRR、ISR、IMR寄存器的狀態(tài),以便進行有關分析處理。

1)讀中斷請求寄存器IRRIRR中保存著申請中斷的各輸入級。若A0=0,OCW3的RR=1、RIS=0,則可用讀命令讀取IRR的狀態(tài)。若輸出一個OCW3,令其中RR=1、RIS=1,則用讀命令可以讀入中斷服務寄存器ISR的狀態(tài),其中既可以看到在服務過程中中斷源的情況,也可以看到是否處于中斷嵌套的情況。2)讀中斷服務寄存器ISRISR的內容為正在服務的各個中斷優(yōu)先級,在中斷響應或中斷結束命令EOI時,ISR的內容被修改。使A0=0,OCW3的RR=1、RIS=1,則可用讀命令讀取ISR的狀態(tài)。

3)讀中斷屏蔽寄存器IMRIMR內容是被屏蔽的各中斷請求級。當A0=1時,則可用讀命令讀取IMR的狀態(tài)。另外,如果OCW3發(fā)出查詢命令(P=1),同時又發(fā)出了讀寄存器命令(RR=1),則查詢優(yōu)先于讀寄存器。當查詢操作完成后,再執(zhí)行讀寄存器操作。8.8259A的級聯(lián)圖8.188259A的級聯(lián)

在級聯(lián)方式下,與CPU相連的8259A稱為主控制器,與主控8259A相連的下一層的8259A稱為從屬控制器。從屬控制器的INT輸出端接到主控制器的IR輸入端,由從屬中斷源的中斷請求通過主控8259A向CPU申請。主控8259A的三條級聯(lián)線CAS2、CASl、CAS0與從設備的對應端相連,用來選擇從屬8259A。因此,在圖示的情況下,系統(tǒng)最多可管理64個優(yōu)先級的中斷。如果某一從屬8259A的中斷請求被CPU響應,在中斷響應周期里,主控8259A將其對應IR輸入端的編碼作為對從屬8259A進行識別的地址,送到CAS2、CAS1、CAS0級聯(lián)線上,被選中的從屬8259A將接收INTA信號,并把其中斷向量送上數(shù)據(jù)總線。

級聯(lián)方式下的每個8259A都必須有一個各自完全獨立的初始化過程,以設置各自的工作狀態(tài)。在中斷結束時,要發(fā)兩次EOI命令,分別使主控8259A和相應的從屬8259A執(zhí)行中斷結束命令。當處于級聯(lián)方式時,為了保證從屬8259A正常的中斷請求,主控8259A應設置為特殊全嵌套方式,從屬8259A則應選用一般全嵌套方式。當中斷服務程序結束時,必須用軟件來檢查被服務的中斷是否是從屬控制器中惟一的一個中斷請求。為此,先向從設備發(fā)一個一般的中斷結束命令EOI,清除己完成服務的ISR位,然后再讀出ISR內容,檢查它是否為0,如果ISR的內容為0,則向主設備發(fā)一個EOI命令,以結束從屬設備的中斷。8.4.5Intel8259A的應用舉例

1.中斷接口的設計將單片8259A接入8088系統(tǒng)中,設計其端口地址為FFF0H和FFF1H,其具體連接如圖8.19所示。8259A由于只有一根地址線,因此它在系統(tǒng)中只占用兩個端口地址。8259A內部的7個命令寄存器和3個狀態(tài)寄存器的尋址是將這兩個端口地址結合操作命令、特定數(shù)據(jù)位、嚴格的寫入次序等來實現(xiàn)對8259A內部寄存器的尋址,如表8-6所示。圖8.198259A在系統(tǒng)中的連接表8-68259A內部寄存器的尋址控制A0D4D3操作0

01讀ISR、IRR及中斷狀態(tài)寄存器1

01讀IMR00010寫OCW200110寫OCW301

10寫ICW11

10寫OCW1、ICW2、ICW3、ICW4

2.中斷程序的編寫當把8259A接入系統(tǒng)后,就需要編寫該接口的中斷程序。中斷程序由兩個部分組成:中斷接口的初始化程序和中斷處理程序。我們以圖8.19為例,來說明中斷程序的編寫。

1)初始化中斷控制器8259A

初始化包括兩個方面,一是初始化8259A的初始狀態(tài),二是完成中斷向量表的設置。(1)初始化8259A。由于8259A的ICW有嚴格的寫入次序,因此,編程時必須根據(jù)其規(guī)定的初始化順序對四個ICW進行初始化操作。針對圖8.19,其初始化程序如下:8259A:MOV DX,0FFF0H ;8259A口地址,A0=0MOV AL,13H ;初始化字“00010011”送ICW1OUT DX,AL ;單片,邊沿觸發(fā),需要ICW4MOV DX,0FFF1H ;8259A口地址,A0=1MOV AL,0F8H ;初始化字“11111000”送ICW2OUT DX,AL ;設置起始中斷向量碼(IRO)為F8HMOV AL,03H ;初始化字“00000011”送ICW4OUT DX,AL ;8086/8088模式,AEOI,非緩沖,一般全嵌套方式(2)設置中斷向量。對IBM-PC/XT機,是在計算機啟動過程中將中斷向量表寫入內存的。對用

溫馨提示

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

評論

0/150

提交評論