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

下載本文檔

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

文檔簡介

第7章微型計算機中斷系統(tǒng)當某件事件發(fā)生時,為了對該事件進行處理,CPU中止現(xiàn)行程序的執(zhí)行,轉去執(zhí)行處理該事件的程序(俗稱中斷處理程序或中斷服務程序),待中斷服務程序執(zhí)行完畢,再返回斷點繼續(xù)執(zhí)行原來的程序,這個過程稱為中斷。以外設提出交換數(shù)據(jù)為例,當CPU執(zhí)行主程序到第K條指令時,外設如果提出交換數(shù)據(jù)的請求,CPU響應外設交換數(shù)據(jù)的請求,轉入中斷狀態(tài),執(zhí)行中斷服務程序。在完成中斷服務后恢復原來程序,即從第K+1條指令(斷點處)繼續(xù)執(zhí)行。這樣,便產生了保護現(xiàn)場和恢復現(xiàn)場的要求。7.1概述中斷過程示意圖中斷處理流程所以當CPU轉入中斷處理程序時,首先應保留中斷時的斷點地址K+1和CPU寄存器狀態(tài)(即保護現(xiàn)場)。一旦數(shù)據(jù)交換完畢,必須恢復現(xiàn)場,再返回到斷點地址K+1,繼續(xù)執(zhí)行原程序。采用中斷技術,能實現(xiàn)以下功能:①分時操作。計算機配上中斷系統(tǒng)后,CPU就可以分時執(zhí)行多個用戶的程序和多道作業(yè),使每個用戶認為它正在獨占系統(tǒng)。此外,CPU可控制多個外設同時工作,并可及時得到服務處理,使各個外設一直處于有效工作狀態(tài),從而大大提高主機的使用效率。②實時處理。當計算機用于實時控制時,計算機在現(xiàn)場測試和控制、網絡通信、人機對話時都會具有強烈的實時性,中斷技術能確保對實時信號的處理。實時控制系統(tǒng)要求計算機為它們的服務是隨機發(fā)生的,且時間性很強,要求做到近乎即時處理,若沒有中斷系統(tǒng)是很難實現(xiàn)的。③故障處理。計算機運行過程中,往往會出現(xiàn)一些故障,如電源掉電、存儲器讀出出錯、運算溢出,還有非法指令、存儲器超量裝載、信息校驗出錯等等。盡管故障出現(xiàn)的概率較小,但是一旦出現(xiàn)故障將使整個系統(tǒng)癱瘓。有了中斷系統(tǒng)后,當出現(xiàn)上述情況時,CPU就轉去執(zhí)行故障處理程序而不必停機。中斷系統(tǒng)能在故障出現(xiàn)時發(fā)出中斷信號,調用相應的處理程序,將故障的危害降低到最低程度,并請求系統(tǒng)管理員排除故障。中斷控制的輸入和輸出方式,也稱中斷傳送方式,即當外設的輸入數(shù)據(jù)準備好或接收數(shù)據(jù)的鎖存器為空時,主動向CPU發(fā)出中斷請求,使CPU中斷原來執(zhí)行的程序(主程序),轉去執(zhí)行為外設服務的輸入或輸出操作,服務完畢,CPU再繼續(xù)執(zhí)行原來的程序。中斷傳送方式中,CPU和外設(甚至多個外設)可同時工作,從而大大提高了CPU的效率和控制程序執(zhí)行的實時性。中斷傳送時的接口電路有兩個端口,即數(shù)據(jù)口和中斷控制口,它們合用一個口地址。中斷傳送方式接口電路當輸入設備數(shù)據(jù)準備好后,發(fā)出選通信號,該信號把數(shù)據(jù)存入鎖存器,同時使D觸發(fā)器置1,發(fā)出中斷請求。若中斷是開放的,則CPU接收中斷請求信號,在現(xiàn)行指令執(zhí)行完后,暫停正在執(zhí)行的程序,發(fā)出中斷響應信號。由外設將一個中斷矢量放到數(shù)據(jù)總線上,CPU就轉入中斷服務程序,完成讀取或輸出數(shù)據(jù),同時清除中斷請求標志。中斷處理完畢后,CPU返回被中斷的程序繼續(xù)執(zhí)行。為了增強中斷的靈活性,在中斷傳送方式的接口電路中,常常設置中斷允許觸發(fā)器,該觸發(fā)器受CPU控制。當中斷允許觸發(fā)器置1,接口就可以發(fā)出中斷請求了。當中斷允許觸發(fā)器清0,禁止向CPU提出中斷請求。中斷請求

此過程由欲提出中斷的外部設備或內部系統(tǒng)提出。當外部設備需要完成某種特定的操作或者處理器系統(tǒng)內部出錯時,需要CPU進行處理,外部設備可以向CPU提出中斷申請,請求CPU進行處理。中斷響應

CPU給設備發(fā)出一個中斷應答信號;當外設提出的中斷申請被CPU接收并認可后,首先解決的是必須關中斷,其次是微處理器在處理中斷、實現(xiàn)控制權的轉移前必須把當前程序狀態(tài)保存起來,最后是查找中斷源,即查找提出中斷請求的是外圍設備還是內部系統(tǒng)。中斷響應的條件:有中斷請求信號中斷請求沒有被屏蔽中斷是開放的CPU在現(xiàn)行指令執(zhí)行結束時響應中斷

現(xiàn)場保護為了確保在中斷完成之后,程序能正確地返回到原來的斷點處,繼續(xù)執(zhí)行原程序的下一條指令,必須對斷點處的各種數(shù)據(jù)進行現(xiàn)場保護,主要是標志寄存器和CS、IP的值,我們可以將其壓入堆棧中,利用堆棧來進行保護。同時還要清除中斷標志IF和TF,關閉中斷。執(zhí)行中斷服務程序

根據(jù)中斷類型號N,可以在中斷向量表中查出要執(zhí)行中斷服務程序的入口地址,從而執(zhí)行相應的中斷處理程序,該程序可以是用戶自己編寫的程序,也可以是系統(tǒng)提供的程序。

恢復現(xiàn)場在中斷處理程序完成后,應當對現(xiàn)場進行恢復。此時可以將保存在堆棧中的內容彈出,即按照“后進先出”的原則將相應的值彈出到原來的寄存器中,從而恢復中斷前的狀態(tài)。中斷返回任何一個中斷都必須在中斷服務程序的末尾并在中斷服務程序指令返回之前重新開中斷。微處理器的3種中斷技術示意圖一個完整的向量中斷過程

Intel80X86系列微機有一個靈活的中斷系統(tǒng),可以處理256個不同的中斷源,每個中斷源都有相應的中斷類型碼(0~255)供CPU識別。中斷源可以來自CPU外部,也可以來自CPU內部,可分成兩大類:外部中斷和軟件中斷。

1.外部中斷硬件中斷是由外部硬件產生的,又稱為外部中斷。8086/8088為外部設備提供了兩條硬件中斷信號線,即NMI和INTR,分別接收非屏蔽中斷和可屏蔽中斷請求信號。中斷分類8086/8088中斷源

(1)非屏蔽中斷。由NMI引腳出現(xiàn)中斷請求信號CPU產生的中斷稱為非屏蔽中斷請求,它不受中斷允許標志IF的限制,其中斷類型碼為2。當NMI引腳上出現(xiàn)上升沿觸發(fā)時,表示非屏蔽中斷請求信號有效,CPU內部會把該信號鎖存起來,但要求該信號的有效電平持續(xù)2個時鐘周期以上。CPU接收到非屏蔽中斷請求信號后,不管當前正在做什么事,都會在執(zhí)行完當前指令后立即響應中斷請求而進入相應的中斷處理。在實際系統(tǒng)中,非屏蔽中斷通常用來處理系統(tǒng)中出現(xiàn)的重大事故和緊急情況,如系統(tǒng)掉電處理、緊急停機處理等。在IBMPC系列微機中,若系統(tǒng)板上存儲器產生奇偶校驗錯或I/O通道上產生奇偶校驗錯或Intel8087/80287產生異常都會引起一個NMI中斷。

(2)可屏蔽中斷。一般外部設備提出的中斷請求是從CPU的INTR引腳上引入的,所產生的中斷為可屏蔽中斷。INTR信號是高電平觸發(fā)的,與內部中斷和非屏蔽中斷相比,可屏蔽中斷受中斷標志IF的影響。只有在IF=1的情況下,CPU才會在執(zhí)行當前指令后響應可屏蔽中斷請求信號,所以,即使INTR信號有效,也必須保持到當前指令執(zhí)行結束。如果IF=0,即使中斷源有中斷請求,CPU也不會響應,也稱為中斷被屏蔽。IBMPC系列微機中,通常外部設備提出的中斷請求信號首先通過中斷控制器8259A預處理后,再決定是否向CPU的INTR引腳提出中斷請求。系統(tǒng)中可屏蔽中斷可以有一個或多個,CPU響應可屏蔽中斷請求后,通過引腳送出兩個負脈沖,并配合有關電路獲得與中斷源對應的中斷類型碼。

2.軟件中斷軟件中斷是CPU根據(jù)軟件的某條指令或者軟件對標志寄存器的某個標志位的設置而產生的,由于它與外部硬件電路完全無關,故也稱為內部中斷。在80X86系統(tǒng)中,內部中斷主要有以下幾種:

(1)除法出錯中斷——0型中斷。當執(zhí)行除法指令時,若發(fā)現(xiàn)除數(shù)為0或商超過了機器所能表達數(shù)的范圍,則立即產生一個中斷類型碼為0的內部中斷,該中斷稱為除法出錯中斷。一般該中斷的服務處理都由操作系統(tǒng)安排。

(2)單步中斷——1型中斷。若TF=1,則CPU處于單步工作方式,即每執(zhí)行完一條指令之后就自動產生一個中斷類型碼為1的內部中斷,使得指令的執(zhí)行成為單步執(zhí)行方式。單步執(zhí)行方式為系統(tǒng)提供了一種方便的調試手段,成為能夠逐條指令地觀察系統(tǒng)操作的一個窗口。如DEBUG中的跟蹤命令,就是將標志TF置1,進而去執(zhí)行一個單步中斷服務程序,以跟蹤程序的具體執(zhí)行過程,找出程序中的問題或錯誤所在。需要說明的是,在所有類型的中斷處理過程中,CPU會自動地把狀態(tài)標志壓入堆棧,然后清除TF和IF。因此當CPU進入單步處理程序時,就不再處于單步工作方式,而以正常方式工作。只有在單步處理結束后,從堆棧中彈出原來的標志,才使CPU返回到單步工作方式。(3)溢出中斷——4型中斷。若算法操作結果產生溢出(OF=1),則執(zhí)行INTO指令后立即產生一個中斷類型碼為4的中斷。4型中斷為程序員提供了一種處理算術運算出現(xiàn)溢出的手段,它通常和算術指令功能配合使用。(4)指令中斷——n型中斷。在指令系統(tǒng)中,介紹了中斷指令INTn,這種指令的執(zhí)行也會引起內部中斷,其中斷類型碼由指令中的n指定。該指令就稱為軟中斷指令,通常指令的代碼為兩個字節(jié)代碼,第一字節(jié)為操作碼,第二字節(jié)為中斷類型碼。但是中斷類型碼為3的軟中斷指令卻是單字節(jié)指令,因而它能很方便地插入到程序的任何地方,專供在程序中設置斷點調試程序時使用,也稱為斷點中斷。插入INT3指令之處便是斷點,在斷點中斷服務程序中,可顯示有關的寄存器、存儲單元的內容,以便程序員分析到斷點為止程序運行是否正確。

7.2中斷處理過程中斷處理過程包括以下幾個步驟:

(1)識別中斷源。當CPU響應外部設備的中斷請求后,必須識別出是哪一臺外設請求中斷,然后再轉入對應于該設備的中斷服務程序。CPU識別請求中斷設備的過程稱為中斷源的識別。利用程序來查詢設備的請求中斷狀態(tài),從而確認出應該服務的設備號,并轉入相應設備號的中斷服務程序,這種方法稱為軟件查詢技術識別中斷源。CPU利用識別中斷指令,可識別出硬件設備中排隊優(yōu)先的設備,并取回占有優(yōu)先權的設備的編碼(或稱設備地址),CPU根據(jù)設備地址轉入相應的中斷服務程序。

(2)中斷優(yōu)先權。一般而言,一個系統(tǒng)中有多個中斷源。當某一時刻出現(xiàn)兩個或多個中斷源提出中斷請求時,中斷系統(tǒng)應能判別優(yōu)先權最高的中斷請求。在處理完優(yōu)先權最高的中斷請求后,再去響應其它較低優(yōu)先級的中斷請求。中斷源的優(yōu)先權是根據(jù)它們的重要性事先規(guī)定好的。

(3)中斷嵌套。當CPU響應某一中斷源的請求,正在執(zhí)行中斷處理時,若有優(yōu)先權級別更高的中斷源發(fā)出中斷申請,則CPU要能中斷正在執(zhí)行的中斷服務程序,響應高優(yōu)先級中斷。在高優(yōu)先級中斷處理完后再返回繼續(xù)執(zhí)行被中斷的中斷服務程序,即能實現(xiàn)中斷處理程序的嵌套。

(4)中斷與返回。當某一中斷源發(fā)出中斷請求時,CPU能決定是否響應該中斷請求。若允許響應該中斷請求,CPU必須在現(xiàn)行的指令執(zhí)行完后,把斷點處的PC(即下一條應執(zhí)行的指令地址)、各個寄存器的內容和標志位的狀態(tài),壓入堆棧保留下來(稱為保護斷點和現(xiàn)場)。然后轉到需要處理的中斷源的服務程序入口,同時清除中斷請求觸發(fā)器。中斷處理完畢,再恢復被保留下來的各個寄存器和標志位的狀態(tài)(稱為恢復現(xiàn)場),最后恢復PC值(稱為恢復斷點),使CPU返回斷點,繼續(xù)執(zhí)行主程序。

中斷向量表在80X86中斷系統(tǒng)中,無論是外部中斷還是內部中斷,系統(tǒng)都分配給每一個中斷源一個確定的中斷類型碼,其長度為一個字節(jié),故系統(tǒng)中最多允許有256個中斷源(其對應類型碼為0~255)。那么,80X86CPU在響應中斷后,是如何轉入各個中斷服務程序的呢?

所謂中斷向量,實際上就是中斷處理子程序的入口地址。通常在內存的最低1KB(00000H~003FFH)建立一個中斷向量表,分成256個組,每組占4個字節(jié),用以存放256個中斷向量。每個中斷向量占4個字節(jié),其中前2個字節(jié)存放中斷處理子程序的入口地址的偏移量(IP,16位),后2個字節(jié)存放中斷處理子程序入口地址的段地址(CS,16位)。按照中斷類型碼的序號,對應的中斷向量在中斷向量表中按規(guī)則順序排列,如圖所示。中斷向量表圖中前5個中斷類型是80X86規(guī)定的專用中斷,有著固定的意義和處理功能;類型碼5~31為系統(tǒng)使用或保留;類型碼32~255可以由用戶自行使用。但是,在一種具體的微機系統(tǒng)中,可能對用戶可使用的中斷類型碼另有規(guī)定,如PC/AT中斷類型碼70H~77H就已有安排,所以用戶在進行系統(tǒng)開發(fā)和應用時應注意。中斷類型碼與中斷向量在向量表中的位置之間的對應關系為:中斷向量地址指針=4×中斷類型碼例如,中斷類型碼為20H的中斷源對應的中斷向量存放在0000:0080H(4×20H=80H)開始的4個單元中。中斷類型號和中斷服務子程序的入口地址之間的關系:如果在00080H~00083H這4個單元中存放的值分別為10H、20H、30H、40H,那么,在該系統(tǒng)中,20H號中斷所對應的中斷向量即中斷處理程序的入口地址為4030H:2010H。又如,一個系統(tǒng)中對應于中斷類型碼為17H的中斷處理子程序存放在1234:5670H開始的內存區(qū)域中,則對應于17H類型碼的中斷向量存放在0000:005CH(4×17H=5C)開始的4個字節(jié)中。所以0段的005CH~005FH這4個單元中的值分別為70H、56H、34H、12H。中斷響應過程

80X86中的各種中斷響應和處理過程是不相同的,其主要區(qū)別在于如何獲取相應的中斷類型碼。

1.內部中斷響應過程對于專用中斷,中斷類型碼是自動形成的,而對于INTn指令,其類型碼即為指令中給定的n。在取得了類型碼后的處理過程如下:①把類型碼乘4,作為中斷向量表的指針。②把CPU的標志寄存器入棧,保護各個標志位。③清除IF和TF標志,屏蔽新的INTR中斷和單步中斷。④保存斷點,即把斷點處的IP和CS值壓入堆棧,先壓入CS值,再壓入IP值。⑤從中斷向量表中取中斷服務程序的入口地址,分別送至CS和IP中。⑥按新的地址指針執(zhí)行中斷服務程序。在中斷服務程序中,通常要保護現(xiàn)場、進行相應的中斷處理、恢復現(xiàn)場,最后執(zhí)行中斷返回指令IRET。IRET的執(zhí)行將使CPU按次序恢復斷點處的IP和CS值以及標志寄存器,于是程序就恢復到斷點處繼續(xù)執(zhí)行。內部中斷有以下特點:①中斷由CPU內部引起,中斷類型碼的獲得與外部無關,CPU不需要執(zhí)行中斷響應周期去獲得中斷類型碼。②除單步中斷外,內部中斷無法用軟件禁止,不受中斷允許標志位的影響。③內部中斷沒有隨機性,這一點與調用子程序非常相似。

2.外部中斷響應過程

(1)不可屏蔽中斷響應。當CPU采樣到非屏蔽中斷請求時,自動提供中斷類型碼2,然后根據(jù)中斷類型碼查到中斷向量表指針,其后的中斷處理過程與內部中斷一樣。

(2)可屏蔽中斷響應。當INTR信號有效時,如果中斷允許標志IF=1,則CPU就會在當前指令執(zhí)行完畢,響應外部的中斷請求,轉入中斷響應周期。中斷響應周期有2個,每個響應周期都由4個T狀態(tài)組成。CPU在每個響應周期都從引腳上發(fā)一個負脈沖的中斷響應信號。中斷響應的第一個總線周期用來通知請求中斷的外設,CPU準備響應中斷,現(xiàn)在應該準備好中斷類型碼;在第二個總線響應周期中,要求請求中斷的外設在接到第二個負脈沖以后(第二個中斷響應周期的T3狀態(tài)前),立即把中斷類型碼通過數(shù)據(jù)總線傳送給CPU。CPU在T4狀態(tài)的前沿采樣數(shù)據(jù)總線,獲取中斷類型碼。如圖所示。其后的中斷響應過程和內部中斷一樣。中斷響應總線周期當一個可屏蔽中斷被響應時CPU實際執(zhí)行的總線周期有7個:①執(zhí)行2個中斷響應總線周期,CPU獲得相應的中斷類型碼,將它左移2位形成中斷向量表指針,存入暫存器。②執(zhí)行1個寫總線周期,把標志寄存器FR的內容壓入堆棧。同時,置中斷允許標志IF和單步標志TF為0,以禁止中斷響應過程中其他可屏蔽中斷的進入,同時也禁止了中斷處理過程中出現(xiàn)單步中斷。③執(zhí)行2個寫總線周期,把斷點地址的內容壓入堆棧。④執(zhí)行1個讀總線周期,從中斷向量表中取出中斷處理子程序入口地址的偏移量送到IP寄存器中。⑤執(zhí)行1個讀總線周期,從中斷向量表中取出中斷處理子程序入口地址的段基地址送到CS寄存器中。所有中斷都是在當前指令結束后處理的,在80X86系統(tǒng)中各種中斷源的優(yōu)先權實際上是指被識別出來的先后。在當前指令執(zhí)行完后CPU首先自動查詢在指令執(zhí)行過程中是否有除法出錯中斷、溢出中斷和INTn中斷發(fā)生,然后查詢NMI和INTR,最后查詢單步中斷,先查詢到的先被響應。8086/8088的中斷響應過程中斷服務子程序特點為”遠”過程(類型為FAR)要用IRET指令返回中斷服務子程序要做的工作保護現(xiàn)場(PUSH

reg’s)

開中斷(STI)

進行中斷處理

恢復現(xiàn)場(POP

reg’s)

中斷返回(IRET)

執(zhí)行中斷返回指令IRETIRET指令將使CPU把堆棧內保存的斷點信息彈出到IP、CS和FLAG中,保證被中斷的程序從斷點處能夠繼續(xù)往下執(zhí)行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG進入中斷服務程序時中斷返回后

7.3中斷優(yōu)先級和中斷嵌套

如果系統(tǒng)中有多個中斷源,就要考慮其優(yōu)先權問題。通常,多個中斷源的中斷請求信號都是送到CPU同一引腳上申請中斷服務的,這就要求CPU能識別出是哪些中斷源在申請中斷,同時比較它們的優(yōu)先權,從而決定先響應哪一個中斷源的中斷請求。另外,當CPU正在處理中斷時,也可能要響應更高級的中斷請求,并屏蔽同級或較低級的中斷請求,這些都需要分清各中斷源的優(yōu)先權。有些微機系統(tǒng)中,中斷源的優(yōu)先級可以由用戶根據(jù)輕重緩急安排,一般可采用軟件優(yōu)先級排隊和硬件優(yōu)先級排隊兩種方法。

1.軟件優(yōu)先級排隊軟件優(yōu)先級排隊是指各個中斷源的優(yōu)先權由軟件安排,與硬件電路關系不大。圖所示電路是一種配合軟件優(yōu)先級排隊使用的電路,圖中各中斷源的優(yōu)先權不是由硬件電路安排,而是由軟件安排的。圖中若干個外設的中斷請求信號相“或”后,送至CPU的中斷接收引腳(如INTR)。這樣,只要任一外設有中斷請求,CPU便可響應中斷。在中斷服務子程序前可安排一段優(yōu)先級的查詢程序,即CPU讀取外設中斷請求狀態(tài)端口,然后根據(jù)預先確定的優(yōu)先級級別逐位檢測各外設的狀態(tài),若有中斷請求就轉到相應的處理程序入口。軟件優(yōu)先級排隊電路軟件優(yōu)先權查詢流程圖查詢的順序反映了各個中斷源的優(yōu)先權的高低。顯然,最先查詢的外設,其優(yōu)先權級別最高。這種方法的優(yōu)點是節(jié)省硬件,優(yōu)先權安排靈活;缺點是查詢需要耗費時間,在中斷源較多的情況下,查詢程序較長,可能影響中斷響應的實時性。

2.硬件優(yōu)先級排隊硬件優(yōu)先級排隊是指利用專門的硬件電路或中斷控制器對系統(tǒng)中各中斷源的優(yōu)先權進行安排。

(1)硬件優(yōu)先級排隊電路。鏈式優(yōu)先權排隊電路是一種簡單的中斷優(yōu)先權硬件排隊電路,如下圖所示。采用該方法時,每個外設對應的接口上連接一個邏輯電路,這些邏輯電路構成一個鏈,稱為菊花鏈,由該菊花鏈來控制中斷響應信號的通路。鏈式優(yōu)先權排隊電路

(a)菊花鏈;(b)菊花鏈邏輯電路從圖中可以看到,當一個外設有中斷請求時,CPU如果允許中斷,則會發(fā)出信號。如果鏈條前端的外設沒有發(fā)出中斷請求信號,那么這級中斷邏輯電路就會允許中斷響應信號原封不動地往后傳遞,一直傳到發(fā)出中斷請求的外設;如果某一外設發(fā)出了中斷請求,那么本級的中斷邏輯電路就對后面的中斷邏輯電路實現(xiàn)阻塞,使信號不再傳到后面的外設。因而菊花鏈電路各個外設的中斷優(yōu)先權就由其在鏈中的位置決定,處于菊花鏈前端的比處于后端的優(yōu)先級高。當某一外設收到中斷響應信號后,就控制有關電路送出中斷類型碼,從而執(zhí)行相應的中斷服務程序。當多個外設同時發(fā)出中斷請求信號時,根據(jù)電路分析可知,處于鏈頭的外設先得到中斷響應,而排在菊花鏈中較后位置的外設就收不到中斷響應信號,因而暫時不會被處理。若CPU正執(zhí)行某個中斷處理子程序,又有級別較高的外設提出中斷請求,由于菊花鏈電路中級別低的外設不能封鎖級別高的外設得到中斷響應信號,故可響應該中斷請求,從而發(fā)生中斷嵌套現(xiàn)象。用硬件編碼器和比較器組成的優(yōu)先權排隊電路

3位二進制優(yōu)先編碼器在優(yōu)先編碼器中優(yōu)先級別高的信號排斥級別低的,即具有單方面排斥的特性。設I7的優(yōu)先級別最高,I6次之,依此類推,I0最低。真值表4位數(shù)值比較器

(2)矢量中斷優(yōu)先級

采用可編程的矢量中斷控制器是當前微型計算機系統(tǒng)中解決中斷優(yōu)先權管理的常用方法。通常,中斷控制器包括下列部件:中斷優(yōu)先權管理電路、中斷請求鎖存器、中斷類型寄存器、當前中斷服務寄存器以及中斷屏蔽寄存器等。其中,中斷優(yōu)先權管理電路用來對所處理的各個中斷源進行優(yōu)先權判斷,并根據(jù)具體情況預先設置優(yōu)先權。實際上,中斷控制器也可以認為是一種接口,外設提出的中斷請求經該環(huán)節(jié)處理后,再決定是否向CPU傳送,CPU接受中斷請求后的中斷響應信號也送給該環(huán)節(jié)處理,以便得到相應的中斷類型碼。

3中斷嵌套

當CPU響應某一中斷源的請求,正在執(zhí)行中斷處理時,若有優(yōu)先權級別更高的中斷源發(fā)出中斷申請,則CPU要能中斷正在執(zhí)行的中斷服務程序,響應高優(yōu)先級中斷。在高優(yōu)先級中斷處理完后再返回繼續(xù)執(zhí)行被中斷的中斷服務程序,即能實現(xiàn)中斷處理程序的嵌套。如果一個系統(tǒng)中有三個中斷源,優(yōu)先權的安排為:中斷1為最高,中斷3為最低,則中斷處理如圖所示。中斷嵌套示意圖7.4可編程中斷控制器8259A7.4.1功能和引腳

若微處理器只有一根中斷請求輸入線,為了使多個外部中斷源共享中斷資源,需要有一個專門的控制電路在微處理器的控制下去管理那些中斷源并處理它們發(fā)出的中斷請求信號。這種專門管理中斷源的控制電路就是中斷控制器??删幊讨袛嗫刂破?259A具有如下功能:①它可以接收多個外部中斷源的中斷請求,并進行優(yōu)先級別判斷,選中當前優(yōu)先級別最高的中斷請求,再將此請求送到微處理器的中斷輸入端。②具有提供中斷向量、屏蔽中斷輸入等功能。③可用于管理8級優(yōu)先權中斷,也可將多片8259A通過級連方式構成最多可達64級優(yōu)先權中斷管理系統(tǒng)。8259A管理的8級中斷對應的服務程序入口地址構成的中斷向量表存放在內存固定區(qū)域。④具有多種工作方式,自動提供中斷服務程序入口地址,使用靈活方便。

8259A的外部引腳8259A的引腳說明

8259A為28腳雙列直插式封裝器件,管腳分配如圖所示。

D0~D7:雙向數(shù)據(jù)線,用來與CPU交換數(shù)據(jù)。INT:中斷請求,輸出信號,由8259A傳給CPU,或由從8259A傳給主8259A。

:中斷響應,輸入信號,來自CPU。

IR0~IR7:中斷請求輸入,由外設傳給8259A。8259A規(guī)定的中斷優(yōu)先級順序為IR0>IR1>…>IR7。

IR0~IR7:中斷請求輸入,由外設傳給8259A。8259A規(guī)定的中斷優(yōu)先級順序為IR0>IR1>…>IR7。

CAS0~CAS2:級連信號。對于主片,這三個信號是輸出信號,根據(jù)它們的不同組合000~111,分別確定連在哪個IRi上的從片工作。對于從片,這三個信號是輸入信號,以此判別本從片是否被選中。/:主從設備編程/允許緩沖器,雙向。作輸入信號使用時,即為,作為主設備與從設備的選擇控制信號,當=1時,該8259A作為主片;當=0時,該8259A作為從片。作輸出信號使用時,即為,作為允許緩沖器接收發(fā)送的控制信號。

A0:內部寄存器選擇控制信號,輸入信號。8259A規(guī)定,當A0=0時,對應的寄存器為ICW1、OCW2和OCW3;當A0=1時,對應的寄存器為ICW2~ICW4和OCW1。:片選信號,輸入信號。一般來自地址譯碼器的輸出。:讀允許信號,輸入。來自CPU的。:寫允許信號,輸入。來自CPU的。

7.4.2

內部結構

8259A由八個部分構成,它們是中斷服務寄存器、中斷優(yōu)先權判斷器、中斷屏蔽寄存器、中斷請求寄存器、中斷控制邏輯、數(shù)據(jù)總線緩沖器、級連緩沖器/比較器和讀/寫控制邏輯。8259A的內部結構

(1)中斷請求寄存器IRR(InterruptRequestRegister)。IRR是一個8位寄存器,用來接收來自IR0~IR7上的中斷請求信號,并將IRR相應位置位。外設產生中斷請求信號的方式有邊沿觸發(fā)方式和電平觸發(fā)方式,用戶可根據(jù)需要通過編程進行設置。

(2)中斷服務寄存器ISR(InterruptServiceRegister)。ISR是一個8位寄存器,用來存放當前正在處理的中斷請求。在中斷嵌套方式下,可以將其內容與新進入的中斷請求進行優(yōu)先級比較,從而決定是否進行嵌套。

(3)中斷屏蔽寄存器IMR(InterruptMaskRegister)。

IMR是8位寄存器,用來存放中斷屏蔽字,可由用戶通過編程進行設置。當IMR的第i位置位時,來自IRi的中斷請求被屏蔽了,從而禁止來自IRi的中斷。因此用戶設置IMR的各位后,可以改變系統(tǒng)原來的中斷優(yōu)先級。

(4)中斷優(yōu)先權判斷器。在中斷響應期間,可以根據(jù)控制邏輯規(guī)定的優(yōu)先權級別和IMR的內容,把IRR中提出中斷的優(yōu)先權最高的中斷請求位送ISR。

(5)數(shù)據(jù)總線緩沖器。數(shù)據(jù)總線緩沖器是一個8位三態(tài)雙向緩沖器,是8259A與局部總線的接口。微處理器通過它向8259A傳送命令字,控制8259A的工作模式,同時也接收8259A傳送的工作信息及中斷向量。

(6)控制邏輯。在8259A的控制邏輯電路中,有一組初始化命令寄存器(ICW1~ICW4)和一組操作命令字寄存器(OCW1~OCW3),這7個寄存器可由用戶根據(jù)需要通過編程進行設置,控制邏輯電路可以根據(jù)程序來管理8259A的全部工作。

(7)讀/寫控制邏輯。讀/寫控制邏輯電路在四個輸入信號、

、

A0的控制下,控制著8259A的數(shù)據(jù)總線緩沖器之間的信息傳送,控制邏輯如表所示。它把微處理器送來的命令字傳送到8259A中相應的命令寄存器中(包括初始化命令字ICW1、ICW2、ICW3、ICW4和操作控制字OCW1、OCW2、OCW3、OCW4),再把8259A中相應的控制器/寄存器中的內容(IRR、ISR、IMR)輸出到數(shù)據(jù)總線上。

(8)級連緩沖器/比較器。級連緩沖器/比較器用來存放和比較系統(tǒng)中全部8259A的標記IDS。這個標記是微處理器通過數(shù)據(jù)總線送入8259A的。所有的8259A通過級連線CAS0

~CAS2

三條I/O外線實現(xiàn)互連。其中必須有一個8259A為主片,其余的8259A為從片。主片通過CAS0~CAS2輸出標記信息,而從片通過這三條線輸入標記信息,并與自己原有的標記進行比較,如果相同則該從片被主片選中,它就在中斷響應周期把自己的中斷向量送到數(shù)據(jù)總線上。8259A中斷響應過程

(1)外部設備在中斷請求輸入線(IR7~

IR0)上發(fā)了中斷請求,使中斷請求寄存器IRR的相應位置位。(2)IRR的內容與IMR的內容相“與”,結果送給優(yōu)先級分析器。中斷優(yōu)先級分析器把優(yōu)先級最高的中斷請求送到控制電路。(3)控制電路將接收到的中斷請求向CPU輸出INT信號。(4)若CPU是處在開中斷狀態(tài),則在當前指令執(zhí)行完以后,接收到INT信號,輸出一個中斷響應脈沖,進入第一個中斷響應周期。(5)8259A的腳上收到脈沖信號,就將最高優(yōu)先級所對應的IRR位清除,并將對應的ISR位置位。(6)CPU啟動第二個中斷響應周期,輸出另一個脈沖,在這個周期8259A向數(shù)據(jù)總線輸出一個中斷向量碼。(7)CPU讀取該中斷向量碼,把它乘以4,得到中斷服務程序入口地址,轉入該中斷服務程序。這樣一個中斷響應周期就完成了。

7.4.38259A的中斷管理方式

8259A具有非常靈活的中斷管理方式,可滿足用戶各種不同要求,并且這些工作方式都可以通過編程來設置。

1.8259A的編程結構

2.優(yōu)先級設置方式按照優(yōu)先權設置方法來分,8259A有以下兩種工作方式:(1)全嵌套方式。普通全嵌套方式是8259A最常用的工作方式,簡稱為全嵌套方式。該方式下中斷優(yōu)先權是固定的,即IR0優(yōu)先權最高,IR7優(yōu)先權最低。當CPU響應中斷時,8259A就把申請中斷的優(yōu)先權最高的中斷源在ISR中的相應位置“1”,而且把它的中斷類型碼送到數(shù)據(jù)總線上。在此中斷源的中斷服務程序完成之前,與它同級或優(yōu)先權更低的中斷源的申請就被屏蔽,只有優(yōu)先權比它高的中斷源的申請才是允許的(當然,CPU是否響應取決于CPU是否處在開中斷狀態(tài))。

(2)特殊全嵌套方式。特殊全嵌套方式和普通全嵌套方式只有一點不同:在特殊全嵌套方式下,當處理某一級中斷時,如果有同級的中斷請求,那么也會給予響應,從而實現(xiàn)一種對同級中斷請求的特殊嵌套。特殊全嵌套方式一般用在8259A級連系統(tǒng)中。在這種情況下,主片8259A編程為特殊全嵌套方式。這樣,當來自某一從片的中斷請求正在處理時,一方面,和普通全嵌套方式一樣,對來自優(yōu)先級較高的主片其他引腳上的中斷請求進行開放;另一方面,對來自同一從片的較高優(yōu)先級請求也會開放。在中斷處理過程中允許被更高優(yōu)先級的事件所中斷稱為中斷嵌套。8259A有兩種中斷嵌套方式:普通全嵌套方式(默認方式)

一中斷正被處理時,只有更高優(yōu)先級的事件可以打斷當前的中斷處理過程而被服務。特殊全嵌套方式

一中斷正被處理時,允許同級或更高優(yōu)先級的事件可以打斷當前的中斷處理過程而被服務。注:特殊全嵌套僅用于多個8259A級連時的主8259A,而不能用于從屬8259A或單8259A系統(tǒng)。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7普通全嵌套方式:從片的INT被主片封鎖,故更高級別的IR0-IR2中斷也無法得到響應特殊嵌套方式:因主片不封鎖從片的INT,故級別高的IR0-IR2中斷可以得到響應。(但IR3-IR7仍被本從片封鎖)C.假定IR3發(fā)生中斷,并獲得服務普通全嵌套方式:IR4的中斷被服務時,這些中斷將被封鎖。B.特殊嵌套方式:IR4的中斷被服務時,只封鎖IR5-IR7。A.INTE.從8259AINTIR0IR1IR2IR3IR4IR5IR6IR7普通全嵌套方式與特殊全嵌套方式的區(qū)別

去CPU

(3)優(yōu)先權自動循環(huán)方式。在優(yōu)先權自動循環(huán)方式中,優(yōu)先級隊列是在變化的。一個設備受到中斷服務以后,它的優(yōu)先級自動降為最低,原來比它低一級的中斷則為最高級,依次排列。如初始優(yōu)先級隊列規(guī)定為IR0、IR1、IR2、…、IR7。此時,若IR4請求中斷,則處理IR4,在IR4被服務以后,IR4自動左循環(huán)到最低優(yōu)先級,IR5成為最高優(yōu)先級,這時中斷源的優(yōu)先級依次為IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。這種方式一般用在系統(tǒng)中多個中斷源優(yōu)先級相同的場合。

(4)優(yōu)先權特殊循環(huán)方式。優(yōu)先權特殊循環(huán)方式與優(yōu)先權自動循環(huán)方式只有一點不同:在優(yōu)先權特殊循環(huán)方式中,可以編程寫OCW2來設置當前的中斷優(yōu)先級順序。例如,確定IR5為最低優(yōu)先級,那么當前的優(yōu)先級順序為IR6、IR7、IR0、…、IR5。兩類優(yōu)先級控制方式:固定優(yōu)先級和循環(huán)優(yōu)先級固定優(yōu)先級方式所有中斷請求IRi的中斷優(yōu)先級固定不變優(yōu)先級排列順序可編程改變加電后8259A的默認方式,默認優(yōu)先級順序從高到低為IR0~IR7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低級最高級最高級最低級優(yōu)先級IR7IR6IR5IR4IR3IR2IR1IR0默認優(yōu)先級優(yōu)先級可編程改變優(yōu)先級循環(huán)方式

中斷源輪流處于最高優(yōu)先級,即自動中斷優(yōu)先級循環(huán)初始優(yōu)先級順序可用編程改變某中斷請求IRi被處理后,其優(yōu)先級別自動降為最低,原來比它低一級的中斷上升為最高級

IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低級最高級最高級最低級ISR內容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服務結束以前0101000001000000IR4的服務結束以后ISRi

3.中斷結束方式當一個中斷請求得到響應時,8259A都會將中斷服務寄存器ISR中相應位置“1”,為以后中斷優(yōu)先權電路的工作提供依據(jù)。當中斷服務程序結束時,必須使該ISR位清零;否則,8259A的中斷控制功能就會不正常。這個使ISR位復位的動作就是中斷結束處理。注意,這里的中斷結束是指8259A結束中斷的處理,而不是CPU結束執(zhí)行中斷服務程序。

8259A分自動中斷結束方式和非自動中斷結束方式,而非自動中斷結束方式又分為普通(或稱一般、正常)中斷結束方式和特殊中斷結束方式。

(1)普通EOI結束方式。這種方式配合全嵌套優(yōu)先權工作方式使用。當CPU用輸出指令向8259A發(fā)出普通中斷結束EOI時,8259A就會把ISR中已置位的最高位復位,因為在全嵌套方式中,置1的最高ISR位對應了最后一次被響應和被處理的中斷,也就是當前正在處理的中斷,所以,最高ISR位復位相當于結束了當前正在處理的中斷。

(2)特殊中斷結束方式(SEOI)。

在非全嵌套方式下,由于中斷優(yōu)先級不斷改變,無法確知當前正在處理的是哪級中斷,這時就要采用特殊中斷結束方式。采用這種方式反映在程序中就是要發(fā)一條特殊中斷結束命令,在這個命令中指出了要清除哪個ISR位。不管是普通中斷結束方式,還是特殊中斷結束方式,對于級連系統(tǒng)的從片在一個中斷服務程序結束時,都必須發(fā)兩次中斷結束命令,一次是對主片發(fā)送的,一次則是對從片發(fā)送的。

(3)自動中斷結束方式(AEOI)。

若采用該方式,則在第二個中斷響應周期信號的后沿,8259A將自動把中斷服務寄存器ISR中的對應位清除。這樣,盡管系統(tǒng)正在為某個設備進行中斷服務,但對8259A來說,中斷服務寄存器中卻沒有對應位作指示,所以,就好像已經結束了中斷服務一樣。這種最簡單的中斷結束方式,只能用于不要求中斷嵌套的情況。

用于全嵌套方式普通EOI:由CPU發(fā)出正常EOI命令,該EOI命令使ISRi=1的位中優(yōu)先級最高的那一位復位。

用于特殊屏蔽方式特殊EOI:由CPU發(fā)出一條SEOI命令,該EOI命令中指出了所要復位的ISR的位號。

自動EOI自動EOI:在第2個INTA結束時,由8259A使ISRi自動復位;因不保留當前正在服務的中斷的狀態(tài),故AEOI不能用于中斷嵌套方式4.循環(huán)優(yōu)先級的循環(huán)方法(已講)

5.中斷源屏蔽方式

8259A的8個中斷請求都可根據(jù)需要單獨屏蔽,屏蔽是通過編程使得屏蔽寄存器IMR相應位清“0”或置“1”,從而允許或禁止相應中斷。8259A有兩種屏蔽方式。

(1)普通屏蔽方式。普通屏蔽方式中,將IMR某位置“1”,則它對應的中斷就被屏蔽,從而使這個中斷請求不能從8259A送到CPU。如果該位清“0”,則允許該級中斷。

(2)特殊屏蔽方式。有些情況下,希望一個中斷服務程序能動態(tài)地改變系統(tǒng)的優(yōu)先權結構。例如,在執(zhí)行中斷服務程序某一部分時,希望禁止較低級的中斷請求;但在執(zhí)行中斷服務程序的另一部分時,又希望能夠開放比本身的優(yōu)先級低的中斷。為此,在設置了特殊屏蔽方式后,再編程使IMR某位置位,就會同時使ISR的對應位復位。這樣,就不只是屏蔽當前正在處理的這級中斷,而且還真正開放了其他級別較低的中斷。當然未被屏蔽的更高級中斷也可以得到響應。

6.中斷請求引入方式外設的中斷請求信號從8259A的引腳IRn引入,但根據(jù)實際工作需要,8259A的中斷觸發(fā)方式可分成如下3種:

(1)邊沿觸發(fā)方式。在邊沿觸發(fā)方式下,8259A的引腳IRn上出現(xiàn)上升沿,表示有中斷請求,高電平不表示有中斷請求。

(2)電平觸發(fā)方式。在電平觸發(fā)方式下,8259A的引腳IRn上出現(xiàn)高電平,表示有中斷請求。這種方式下,應注意及時撤除高電平,否則可能引起不應該有的第二次中斷。無論是邊沿觸發(fā)還是電平觸發(fā),中斷請求信號IR都應維持足夠的寬度。即在第一個中斷響應信號結束之前,IR都必須保持高電平。

(3)中斷查詢方式(見書)優(yōu)先級方式選擇普通全嵌套方式:固定優(yōu)先級,IR0最高,IR7最低。特殊全嵌套:與a)基本相同,響應同級中斷請求優(yōu)先級自動循環(huán):某級被響應后,降為最低。如IR4被響應后,優(yōu)先級順序變?yōu)椋篒R5,IR6,IR7,IR0,IR1,IR2,IR3,IR4。優(yōu)先級特殊循環(huán)方式:編程指定最低優(yōu)先級,其它同C)。屏蔽中斷方式選擇普通屏蔽方式:對應IMR為1位的中斷請求將被屏蔽。特殊屏蔽方式:執(zhí)行中斷程序時,動態(tài)改變優(yōu)先級結構,屏蔽本級,允許較低級請求被服務。中斷結束方式:ISRn被清0,中斷結束。自動結束方式:8259A收到INTA后自動把ISRn位清0。普通結束方式:8086發(fā)命令清除ISR中級最高的位,結束中斷。特殊結束方式:將ISR中指定位清0。中斷請求引入方式邊沿觸發(fā)方式。電平觸發(fā)方式。中斷查詢方式

7.4.48259A的編程方法

8259A根據(jù)接收到的微處理器的命令進行工作。微處理器的命令分為兩類:一類是初始化命令,稱為初始化命令字(ICW)。8259A在進入操作之前,必須由初始化命令字來使它處于初始狀態(tài)。另一類是操作命令,稱為操作控制字(OCW)。在對8259A進行初始化之后,用這些控制字來控制8259A執(zhí)行不同的操作方式。操作控制字可在初始化后的任何時刻寫入8259A。

1.初始化命令字

8259A有4個初始化命令字ICW1~ICW4,它們按照一定的順序送入,設置8259A的初始狀態(tài)。無論何時,當微處理器向8259A發(fā)送一條A0=0和D4=1的命令時,這條命令就譯碼為ICW1。它啟動8259A的初始化過程產生下列動作:清除IMR,把最低優(yōu)先級分配給IR7,把最高優(yōu)先級分配給IR0,將從設備標志ID置成7,清除特殊屏蔽方式,設置讀IRR方式。各初始化命令字的功能如下:

(1)ICW1(初始化字)。ICW1稱為芯片控制初始化命令字。ICW1的各位定義如下:

ICW1——初始化字LTIM:觸發(fā)方式=1高電平觸發(fā)=0上升沿觸發(fā)SNGL:級連控制=1單片=0級連IC4:ICW4控制=1要寫ICW4=0不寫ICW4(默認ICW4為全0)A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x

x

x 1 LTIM xSNGL IC4

D7、D6、D5、D2在8086/8088系統(tǒng)中不用,可為1,也可為0。它們在8080/8085系統(tǒng)中使用。

D4=1和A0=0是ICW1的標志。在初始化命令字設置過程結束后,當A0=0時,D4=0表示操作控制字OCW2或OCW3。

LTIM用來設定中斷請求信號的形式。如果LTIM=0,則表示中斷請求為邊沿觸發(fā)方式;如果LTIM=1,則表示中斷請求為電平觸發(fā)方式。

SNGL用來指出本片8259A是否與其他8259A處于級連狀態(tài)。當系統(tǒng)中只有一片8259A時,SNGL為1;當系統(tǒng)中有多個8259A時,SNGL為0。

IC4用來指出初始化過程中是否設置ICW4。若IC4為0,表示不用ICW4;若IC4為1,表示用ICW4。在8086/8088系統(tǒng)中,ICW4是必須使用的,此時IC4必定為1。

(2)ICW2(中斷類型碼字)。

ICW2是設置中斷類型碼的初始化命令字。ICW2的各位定義如下:

A0D7D6D5D4D3D2D1D01T7

T6

T5T4

T3

0

00編程時用ICW2設置中斷類型碼高5位T7~T3,低3位插入IR的編碼。例如:若ICW2命令字為48H,則IR0的中斷向量碼為48H,IR7的中斷向量碼為4FH,等等。

(3)ICW3(級連控制字)。

ICW3是標志主片/從片的初始化命令字。只有在一個系統(tǒng)中包含多片8259A時,ICW3才有意義。ICW3——級連控制字

主片的級聯(lián)控制字

Si=1對應IRi線上連接了從片

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7S6 S5 S4 S3

S2

S1

S0從片的級聯(lián)控制字

ID2~ID0

標識碼,說明本從片連接到主片的哪個IR引腳上。000~111分別對應IR0~IR7。表列出了從設備標志的編碼。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 00 0 0 0

ID2 ID1 ID0表6-3從設備標志編碼

ICW3必須與主從片的連接關系一致:

例如,主片的IR4與從片的INT線連接,則主片的ICW3=10H,從片的ICW3=04H。中斷響應時,主片通過級連線CAS2-CAS0送出被允許中斷的從片標識碼,各從片用自己的ICW3與CAS2-CAS0比較,二者一致的從片才可發(fā)送中斷向量碼。(4)ICW4(方式控制初始化命令字)

SFNM:特殊全嵌套1特殊全嵌套方式0普通全嵌套方式AEOI:自動EOI1自動EOI方式0非自動EOI方式A0 D7 D6 D5D4 D3 D2 D1 D0

1 00 0SFNM BUF M/S AEOI 1BUF:緩沖方式

M/S:主/從緩沖選擇BUFM/S11緩沖方式/主8259A10緩沖方式/從8259A0x非緩沖方式/正常

ICW4為方式控制初始化命令字。只有在ICW1的D0位為1時,才有必要設置ICW4,否則不必設置。

D7~D5位總是為0,用來作為ICW4的標識碼。若D4(SFNM)為1,則為特殊的全嵌套方式。在采用特殊全嵌套方式的系統(tǒng)中,一般都使用了多片8259A。

若D3(BUF)為1,則為緩沖方式。在緩沖方式下,8259A通過總線驅動器和數(shù)據(jù)總線相連。此時,引腳作為輸出端來使用。在8259A和CPU之間傳輸數(shù)據(jù)時,啟動數(shù)據(jù)總線驅動器。如果8259A不通過總線驅動器和數(shù)據(jù)總線相連,則BUF應該設置為0。在單片的8259A系統(tǒng)中,接高電平。D2(M/S)在緩沖方式下用來表示本片為從片還是主片。即BUF=1時,如果M/S=1,則表示本片為主片;如果M/S=0,則表示本片為從片。當BUF=0時,則M/S不起作用,可為0可為1。

D1(AEOI)指定是否為中斷自動結束方式。AEOI=1,則設置中斷自動結束方式;AEOI=0時,不用中斷自動結束方式,這時必須在中斷服務程序中使用EOI,使ISR中最高的優(yōu)先權的位復位。

D0(μPM)指定微處理器的類型。μPM=0時,表示8259A工作于8080/8085系統(tǒng)中;μPM=1時,表示8259A工作于8086/8088系統(tǒng)中。

初始化命令字(InitializationCommandWord,ICW)ICW1:硬件設置

LTIM=1中斷請求電平觸發(fā),LTIM=0中斷請求邊沿觸發(fā)。

SNGL=1單片8259A系統(tǒng),SNGL=0多片8259A系統(tǒng)。ICW2:中斷類型碼設定,最低3位由IRn的n值定。ICW3:在多片8259A系統(tǒng)中依主片、從片而定。主片:有1位其IR連有從片用8位。從片:INT連到主片IR哪端,用最后3位。ICW4:工作方式設定

SFNM=1特殊全嵌套、SFNM=0普通全嵌套。

AEOI=1中斷自動結束、AEOI=0普通中斷結束。

BUF=0,DB無緩沖,SP/EN。

BUF=1,DB有緩沖,主從片軟件定。

M/S=1為主片、M/B=0為從片。初始化命令字的編程順序在8259A進入正常工作之前,必須將系統(tǒng)中的每片8259A進行初始化。初始化命令字用來設定8259A的初始狀態(tài)。在初始化的過程中,ICW1和ICW2總是要出現(xiàn)的。ICW3和ICW4是否使用,由ICW1的相應位決定。當SNGL=0時,需要ICW3分別用作主片或從片的8259A,它們的格式是不同的。ICW1的IC4=1時,需要ICW4,對于8086/8088系統(tǒng),ICW4總是需要的。CPU向8259A寫入命令時,A0=0和D4=1標志著寫入ICW1,初始化過程開始。隨后寫入的初始化命令字由A0=1作為標志。初始化過程結束后,才能寫入操作控制字。初始化流程圖A000LTIMSNGLA7A6A5IC41D7D6D5D2D1D0D4D3ICW1(chipcontrol)用于80851T7/T6/T5T4T3000ICW2(type)SNGL=1?1S5S4S6S7S3S2/ID2S1/ID1S0/ID0ICW3(slavecontrol)YNIC4=1?N1SFNM00BUFM/SAEOIuPM0ICW4(modecontrol)可中斷8259A初始化流程

2.8259A的操作命令字在對8259A用初始化命令字進行初始化后,就進入工作狀態(tài),準備好接收IR輸入的中斷請求信號。在8259A工作期間,可通過操作命令字來使它按不同的方式進行操作。

操作命令字是在應用程序內部設置的。操作命令字共有三個,可以獨立使用。

(1)OCW1(屏蔽控制字)。OCW1稱為中斷屏蔽操作命令字。其格式如下:A0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0

Mi=1中斷請求線IRi被屏蔽(不允許中斷)=0允許該IRi中斷OCW1將寫入IMR寄存器。A0=1時讀OCW1可讀出設置的IMR內容。(2)OCW2(中斷結束和優(yōu)先權循環(huán)控制字)。L2~L0:優(yōu)先級編碼R:優(yōu)先級自動循環(huán)SL:指定優(yōu)先級EOI:結束中斷命令

RSLEOI001普通EOI命令(NSEOI),全嵌套(包括特殊全嵌套)方式011特殊EOI命令(SEOI),按L2-L0編碼復位ISR101普通EOI命令,優(yōu)先級自動循環(huán)100自動EOI,設置優(yōu)先級自動循環(huán)000自動EOI,取消優(yōu)先級自動循環(huán)(固定優(yōu)先級)111特殊EOI命令,按L2-L0編碼循環(huán)優(yōu)先級(L2-L0設為最低優(yōu)先級)110按L2-L0編碼循環(huán)優(yōu)先級(L2-L0設為最低優(yōu)先級)

A0 D7 D6 D5 D4 D3 D2 D1 D0

0 RSL EOI 0 0

L2

L1

L0與這些操作有關的命令和方式控制大多以組合格式使用OCW2。命令或方式的選擇應當以組合格式來設置,而不是按位設置。

R是優(yōu)先級循環(huán)控制位。R=1為循環(huán)優(yōu)先權,R=0為固定優(yōu)先權。

SL用來選擇指定的IR級別位。決定OCW2中的L2、L1

、L0是否有效。若SL=1,則L2、L1、L0有效;若SL=0,則L2、L1

、L0無效。

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

中斷結束-清除循環(huán)AEOL方式-特殊循環(huán)L2、L1

、L0用來指定操作起作用的IR級別碼。凡SL=1的指令,在L2、L1

、L0所指定的IR級別編碼上都起作用。SL=0時,不使用L2、L1

、L0位。L2、L1

、L0的編碼與作用的IR級別如上表所示。

(3)OCW3(屏蔽和讀狀態(tài)控制字)。ESMM:

允許使能特殊屏蔽方式SMM:

特殊屏蔽方式ESMMSMM1特殊屏蔽方式設定10特殊屏蔽方式清除(普通屏蔽方式)0x無效P(Polling):=1查詢方式

=0非查詢方式A0 D7 D6 D5 D4 D3 D2 D1 D0

0 0ESMM SMM 0 1 PRRRISRR:讀寄存器RIS:ISR/IRR選擇RRRIS11讀ISR10讀IRR0x無效

OCW3的功能有三個方面:一是設置和撤消特殊屏蔽方式;二是設置中斷查詢方式;三是用來設置對8259A內部寄存器的讀出命令。

ESMM是特殊屏蔽模式允許位,是允許或禁止SMM位起作用的控制位。當ESMM=1時,允許SMM位起作用;當ESMM=0時,禁止SMM位起作用。

SMM是設置特殊屏蔽方式控制位。當ESMM=1和SMM=0時,選擇特殊屏蔽方式;當ESMM=1和SMM=1時,清除特殊屏蔽方式,恢復普通屏蔽方式;當ESMM=0時,SMM位不起作用。

P是查詢命令位。當P=1時,8259A發(fā)送查詢命令;當P=0時,不處于查詢方式。當ESMM=0時,這一位不起作用。RR是讀寄存器命令位。當RR=1時,允許讀IRR或ISR;當RR=0時,禁止讀這兩個寄存器。

RIS:讀IRR或ISR選擇位。如果RR=1和RIS=1,則允許讀中斷服務寄存器;如果RR=1和RIS=0,則允許讀中斷請求寄存器IRR;當RR=0,則RIS位無效。查詢方式允許8259A不工作于中斷方式,而是以查詢方式工作。CPU先寫一個D2=1的OCW3,再對同一地址讀入,即可得到如下狀態(tài)字節(jié):

IxxxxR2R1R0

I=1表示有中斷請求,中斷請求號為R2-R0

此查詢步驟可反復執(zhí)行,以響應多個同時發(fā)生的中斷。

讀IRR/ISR:寫入

溫馨提示

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

評論

0/150

提交評論