第10章 中斷技術(shù),201410_第1頁
第10章 中斷技術(shù),201410_第2頁
第10章 中斷技術(shù),201410_第3頁
第10章 中斷技術(shù),201410_第4頁
第10章 中斷技術(shù),201410_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第十章中斷技術(shù)10-1中斷和中斷系統(tǒng)10-2中斷控制器8259A10-38086微處理器的中斷指令和8086微型計算機的中斷系統(tǒng)10-4實地址方式下的可屏蔽中斷服務程序的設計重點:8259A工作原理與應用10.1.1中斷的基本概念1、中斷的概念(P289)CPU執(zhí)行程序時,由于發(fā)生了某種隨機的事件(外部或內(nèi)部),引起CPU暫時中斷正在運行的程序,轉(zhuǎn)去執(zhí)行一段特殊的服務程序(稱為中斷服務程序或中斷處理程序),以處理該事件,該事件處理完后又返回被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。中斷的基本概念什么是中斷?與生活場景的比較正在看書電話鈴響接電話繼續(xù)看書執(zhí)行程序事件發(fā)生事件處理繼續(xù)執(zhí)行程序中斷處理中斷請求及響應實際場景計算機中斷返回為何引入中斷?提高數(shù)據(jù)傳輸率;避免了CPU不斷檢測外設狀態(tài)的過程,提高了CPU的利用率。實現(xiàn)對特殊事件的實時響應。如多任務系統(tǒng)操作系統(tǒng)中:缺頁中斷設備中斷各類異?!?0.1.2中斷請求與控制和中斷源的識別(P289)1中斷請求中斷源:引起中斷的原因或發(fā)出中斷申請的來源。每個中斷源都設置了一個中斷請求觸發(fā)器來記載它的中斷申請信號,當CPU響應了這個中斷請求后,該觸發(fā)器記載的中斷請求信號被清除。外設接口(中斷源)發(fā)出中斷請求信號,送到CPU的INTR或NMI引腳;中斷請求信號:邊沿請求,電平請求 例如,NMI為邊沿請求,INTR為電平請求中斷請求信號應保持到中斷被處理為止;CPU響應中斷后,中斷請求信號應及時撤銷。在8086/8088系統(tǒng)中,外設的中斷要經(jīng)過8259A可編程中斷控制器(PIC)的排隊判優(yōu)后向CPU發(fā)出。中斷源引起CPU中斷的事件:中斷源。外設:請求輸入輸出數(shù)據(jù),報告故障等事件:掉電、硬件故障、軟件錯誤、非法操作、定時時間到等中斷源分為:外部中斷、內(nèi)部中斷內(nèi)部中斷:CPU內(nèi)部執(zhí)行程序時自身產(chǎn)生的中斷外部中斷:CPU以外的設備、部件產(chǎn)生的中斷

8086/8088的外部中斷信號:INTR、NMIINTR:可屏蔽中斷請求,‘1’有效,受IF標志的控制。IF=1時,執(zhí)行完當前指令后CPU對它作出響應。NMI:非屏蔽中斷請求,上升沿有效,任何時候CPU都要響應此中斷請求信號。2、中斷源識別概念:當系統(tǒng)有多個外部中斷源時,一旦發(fā)生中斷,CPU必須識別是哪一個中斷源或設備提出的中斷請求,以便對其進行處理,這就是識別中斷源。識別中斷源有兩個方法:軟件查詢:將中斷信號從數(shù)據(jù)總線讀入,采用程序查尋判別。即每個中斷源都有一條中斷請求信號線,且固定一個中斷服務程序的入口地址,CPU一旦檢測到某條信號線有中斷請求,就進入相應的中斷服務程序。向量中斷法:由中斷源提供中斷類型號,CPU根據(jù)類型確定中斷源。(8086/8088即采用此種方法)即CPU在中斷源發(fā)出的響應中斷請求后還輸出一個中斷向量,CPU根據(jù)這個中斷向量能夠獲得該中斷源的中斷服務程序的入口地址,從而為其服務。CPU中斷響應時,要完成的任務:向中斷源發(fā)出INTA中斷響應信號(對INTR的回應);斷點保護,包括CS、IP和PSW(標志寄存器)。這主要是保證中斷結(jié)束后能返回被中斷的程序。獲得中斷服務程序首地址(入口)。如何得到中斷處理程序的首地址?固定入口法(即軟件查詢,直接給出入口地址)中斷向量法8086/8088中斷源類型NMIINTR中斷邏輯軟件中斷指令溢出中斷除法錯單步中斷非屏蔽中斷請求中斷控制器8259APIC8086/8088CPU內(nèi)部邏輯斷點中斷可屏蔽中斷請求n43012與中斷有關(guān)的控制線為:NMI、INTR、INTA內(nèi)部中斷除法溢出:類型號0,商大于目的操作數(shù)所能表達的范圍時產(chǎn)生。單步中斷:類型號1,TF=1時產(chǎn)生(當前指令需執(zhí)行完)斷點中斷:類型號3,這是一個軟件中斷,即INT3指令。溢出中斷:類型號4,這是一個軟件中斷,即到指令。軟件中斷:即INTn指令,類型號n(0-255)。外部中斷非屏蔽中斷NMI:類型號2,不可用軟件屏蔽,CPU必須響應它??善帘沃袛郔NTR:類型號由PIC(PeripheralInterfaceController)提供。IF=1時CPU才能響應。補充:PIC的含義?(1)在IBMPC機由8259A可編程中斷控制器(PIC)來完成。(2)PIC單片機:

PIC單片機(PeripheralInterfaceController)是一種用來開發(fā)的去控制外圍設備的集成電路(IC)。一種具有分散作用(多任務)功能的CPU。與人類相比,大腦就是CPU,PIC共享的部分相當于人的神經(jīng)系統(tǒng)。

PIC單片機是一個小的計算機

PIC單片機有計算功能和記憶內(nèi)存像CPU并由軟件控制允行。然而,處理能力—存儲器容量卻很有限,這取決于PIC的類型。但是它們的最高操作頻率大約都在20MHz左右,存儲器容量用做寫程序的大約1K—4K字節(jié)。8086/8088系統(tǒng)采用中斷類型碼來識別不同的中斷源,每個中斷源都有一個與它相對應的中斷類型碼。溢出、斷點、除法溢出、單步、非屏蔽中斷的類型碼為固定值軟件中斷的類型碼由指令給出可屏蔽中斷的類型碼由PIC給出CPU響應INTR中斷時,會產(chǎn)生兩個中斷響應總線周期,要求PIC在第2個中斷響應總線周期把中斷類型碼放到數(shù)據(jù)總線上,供CPU讀入。3.中斷控制外部中斷:有中斷屏蔽和中斷允許兩級控制。用CPU內(nèi)部的中斷允許觸發(fā)器來開、關(guān)中斷,80×86受IF控制,對應指令為STI、CLI。10.1.3中斷系統(tǒng)的功能(P290)實現(xiàn)中斷及返回外部中斷響應過程:非屏蔽中斷,與內(nèi)部中斷響應過程類似類型號:N=2可屏蔽中斷(1)讀中斷類型碼(2)將標志寄存器的值推入堆棧(3)清中斷允許標志IF和單步中斷TF(4)保護斷點,將CS、IP推入堆棧(5)得到中斷向量(6)執(zhí)行中斷服務程序8086/8088的中斷響應總線周期第一個中斷響應周期:用來通知發(fā)中斷請求的設備,CPU準備響應中斷,準備好中斷類型碼;T1狀態(tài):AD15-AD0浮空;IF=1T2、T3狀態(tài);給出中斷響應信號INTA。第二個中斷響應周期;被響應的外設數(shù)據(jù)線送一個字節(jié)的中斷矢量類型(用低8位數(shù)據(jù)線),CPU讀入后,從中斷矢量表上找到服務程序的入口地址。第一個總線周期第二個總線周期總結(jié):第一個總線周期通過用來通知外設,CPU準備響應中斷,第二個總線周期通過INTA通知外設送中斷類型碼,該類型碼通過數(shù)據(jù)總線的低8位傳送,來自中斷源。CPU據(jù)此轉(zhuǎn)入中斷服務子程序。內(nèi)部中斷響應過程:無中斷響應周期中斷類型碼固定或由指令給出響應過程主要步驟:取中斷類型號N標志寄存器(PSW)內(nèi)容入棧當前代碼段寄存器(CS)內(nèi)容入棧當前指令計數(shù)器(IP)內(nèi)容入棧CLI,將TF清零從中斷向量表中取4xN中的字節(jié)內(nèi)容送IP,取4xN+2中的字節(jié)內(nèi)容送CS轉(zhuǎn)中斷處理程序PSW即程序狀態(tài)字,ProgramStatusWord

程序狀態(tài)寄存器PSW是計算機系統(tǒng)的核心部件——控制器的一部分。PSW用來存放兩類信息:一類是體現(xiàn)當前指令執(zhí)行結(jié)果的各種狀態(tài)信息,如有無進位(CF位),有無溢出(OF位),結(jié)果正負(SF位),結(jié)果是否為零(ZF位),奇偶標志位(PF位)等;另一類是存放控制信息,如允許中斷(IF位),跟蹤標志(TF位)等。有些機器中將PSW稱為標志寄存器FR(FlagRegister)。(2)實現(xiàn)優(yōu)先權(quán)排隊 在有多個中斷源同時提出中斷請求時,CPU要能找到優(yōu)先權(quán)級別最高的中斷源,響應它的中斷請求;在優(yōu)先權(quán)別高的中斷源處理完了以后,再響應級別較低的中斷源。(3)實現(xiàn)中斷嵌套。即高級中斷源能中斷CPU對低級中斷源的中斷服務。CPU在執(zhí)行某一中斷時,若有優(yōu)先級高的中斷申請,CPU要能中斷正在進行的中斷服務程序,保留其斷點和現(xiàn)場,響應高級中斷,在高級中斷處理完后,再繼續(xù)執(zhí)行被中斷的中斷服務程序。補充:優(yōu)先級的管理方式

(1)完全嵌套方式

在對8259進行初始化后,沒有設置其它優(yōu)先級方式,則自動按此方式工作.即這是8259A默認的優(yōu)先權(quán)設置方式,在全嵌套方式下,8259A所管理的8級中斷優(yōu)先權(quán)是固定不變的,其中IR0的中斷優(yōu)先級最高,IR7的中斷優(yōu)先級最低。特點:在全嵌套方式中,中斷請求按優(yōu)先級IR0~IR7級進行處理,IR0級中斷的優(yōu)先級最高。

當一個中斷被響應時,中斷類型碼被放到數(shù)據(jù)總線上,ISR中的對應位ISn被置1,然后進入中斷服務程序。一般情況下(除了中斷自動結(jié)束方式外),在CPU發(fā)出中斷結(jié)束命令(EOI)前,此對應位一直保持“1”。

CPU響應中斷后,請求中斷的中斷源中,優(yōu)先級最高的中斷源,在中斷服務寄存器ISR中的相應位置位,而且把它的中斷矢量送至系統(tǒng)數(shù)據(jù)總線,在此中斷源的中斷服務完成之前,與它同級或優(yōu)先級低的中斷源的中斷請求被屏蔽只有優(yōu)先級比它高的中斷源的中斷請求才是有效的,從而出現(xiàn)中斷嵌套。(2)優(yōu)先級自動循環(huán)方式

用在:多個中斷源優(yōu)先級相等的場合。

在實際應用中,中斷源優(yōu)先級的情況是比較復雜的,要求8級中斷的優(yōu)先級在系統(tǒng)工作過程中,可以動態(tài)改變。即一個中斷源的中斷請求被響應之后,其優(yōu)先級自動降為最低。系統(tǒng)啟動時,8級中斷優(yōu)先級默認為IR0—IR7,這時,剛好IR4發(fā)出了中斷請求,CPU響應之后,若8259A工作在優(yōu)先級自動循環(huán)方式下,則中斷優(yōu)先級自動變?yōu)镮R5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。

特點:優(yōu)先級是在變化的,一個設備中斷處理完后,它的優(yōu)先級自動降為最低。

由8259A的操作命令字OCW2決定。

(3)特殊全嵌套方式

用于:多片級聯(lián)方式,特殊全嵌套方式僅設置在主片中.

特殊全嵌套方式與全嵌套方式基本相同,所不同的是,當CPU處理某一級中斷時,如果有同級中斷請求,那么CPU也會作出響應,從而形成了對同一級中斷的特殊嵌套。 特殊全嵌套方式通常應用在有8259A級連的系統(tǒng)中,在這種情況下,對主8259A編程時,通常使它工作在特殊全嵌套方式下。這樣,一方面,CPU對于優(yōu)先級別較高的主片的中斷輸入是允許的,另一方面,CPU對于來自同一從片的優(yōu)先級別較高(但對于主片來講,優(yōu)先級別是相同的)的中斷也是允許、能夠響應的。

特點:和全嵌套方式基本相同,不同的是:在處理某以及中斷時,可響應同級中斷,從而實現(xiàn)對同級中斷請求的特殊嵌套.(4)優(yōu)先級特殊循環(huán)方式

優(yōu)先級特殊循環(huán)方式與自動循環(huán)方式相比,只有一點不同,即初始化的優(yōu)先級是由程序控制的,而不是默認的IR0—IR7。(5)中斷查詢方式

當系統(tǒng)中的中斷源很多,超過64個時,則可以使8259A工作在查詢方式下,中斷查詢方式的特點是:(a)中斷源仍往8259A發(fā)中斷請求,但8259A卻不使用INT信號向CPU發(fā)中斷請求信號。(b)CPU內(nèi)部的中斷允許標志復位,所以CPU對INR引腳上出現(xiàn)的中斷請求呈禁止狀態(tài)。(c)CPU用軟件查詢的方法來確定中斷源,從而實現(xiàn)對設備的中斷服務,可見,中斷查詢方式,既有中斷的特點,又有查詢的特點,從外設的角度來看,是靠中斷的方式來請求服務,但從CPU的角度來看,是用查詢方式來確定發(fā)中斷請求的中斷源。查詢是通過CPU向8259A發(fā)查詢命令來實現(xiàn)的,查詢命令字由OCW3構(gòu)成的,其格式如下:D7。。。D3D2D1D0X0001100其中D2=1,是查詢命令的特征位。8259A在接到CPU發(fā)來的上述格式的查詢命令之后,立即組成狀態(tài)字,等待CPU來讀取,狀態(tài)字的格式如下:D7。。。D3D2D1D0IXXXXW2W1W0若I=0,則表示該8259A芯片沒有中斷請求,若I=1,則表示有中斷請求,W2、W1、W0即為本片中中斷請求優(yōu)先級別最高的中斷源的編碼。10.1.4CPU對外部可屏蔽的中斷的響應及中斷過程中斷響應及中斷過程如下:關(guān)中斷:在CPU響應中斷后,發(fā)出中斷響應信號INTA的同時,內(nèi)部自動地關(guān)中斷(IF=0)保留斷點給出中斷入口地址保護現(xiàn)場中斷服務恢復現(xiàn)場中斷返回10.2可編程中斷控制器8259A主要內(nèi)容:8529A的內(nèi)部結(jié)構(gòu)8259A的工作方式8259A的初始化命令字和操作命令字8259A級聯(lián)方式8259A使用舉例多片8259A組成的主從式中斷系統(tǒng)

圖10-18259A的內(nèi)部組成(P292)讀/寫邏輯控制邏輯(電路)優(yōu)先權(quán)分析器(PR)中斷服務寄存器(ISR)

一、8529A的芯片內(nèi)部結(jié)構(gòu)

1.數(shù)據(jù)總線緩沖

2.讀寫控制邏輯電路

3.級聯(lián)緩沖/比較器

4.中斷請求寄存器

5.中斷服務寄存器

6.中斷屏蔽寄存器

7.優(yōu)先權(quán)判別單路

8.控制邏輯電路

在8086系統(tǒng)中,CPU和8259A的所有數(shù)據(jù)傳送都在數(shù)據(jù)總線的低8位上進行。地址總線的A0與8259A的A0相連,以保證數(shù)據(jù)都在總線的低8位中進行。

圖10-18259A的內(nèi)部組成(P292)讀/寫邏輯控制邏輯(電路)優(yōu)先權(quán)分析器(PR)中斷服務寄存器(ISR)硬件連接:PC機與8259A的連接8259A的工作原理如下:①數(shù)據(jù)總線緩沖器:它是8259A與系統(tǒng)數(shù)據(jù)總線的接口,是8位雙向三態(tài)緩沖器。CPU與8259A之間的控制命令信息、狀態(tài)信息以及中斷類型信息,都是通過該緩沖器傳送的。②讀/寫控制電路:CPU通過它實現(xiàn)對8259A的讀/寫操作。③級聯(lián)緩沖/比較器:用以實現(xiàn)8259A芯片之間的級聯(lián),使得中斷源可以由8級擴展至64級。④中斷請求寄存器IRR分別和IR7~IR0相對應,IRR接收外部的中斷請求。接到某一引腳的中斷請求后,IRR中的對應位便置1。⑤

中斷服務寄存器ISR:8位,當CPU正在處理某個中斷源的中斷請求時,ISR寄存器中的相應位置1。⑥中斷屏蔽寄存器IMR:8位,相應位用以對8個中斷源的中斷請求信號進行屏蔽控制。當其中某位置”0”時,則相應的中斷請求可以向CPU提出;否則,相應的中斷請求被屏蔽,即不允許向CPU提出中斷請求。該寄存器的內(nèi)容為8259A的操作命令字OCW1,可以由程序設置或改變。⑦優(yōu)先權(quán)判別器PR:用以比較正在處理的中斷和剛剛進入的中斷請求之間的優(yōu)先級別,以決定是否產(chǎn)生多重中斷或中斷嵌套。⑧控制邏輯電路:對整個芯片內(nèi)部各部件的工作進行協(xié)調(diào)和控制。

10.2.2、8259A處理中斷的過程8259A每次處理中斷包括下述過程:在中斷請求輸入端IR7~IR0上接受中斷請求。當某IRi有效時,IRR相應位置1中斷請求鎖存在IRR中,并與IMR相“與”,將未被屏蔽的中斷送給優(yōu)先級判定電路。優(yōu)先級判定電路檢出優(yōu)先級最高的中斷請求位,并置位該位的ISR??刂七壿嫿邮苤袛嗾埱?,輸出INT信號。CPU接受INT信號,進入連續(xù)兩個中斷響應周期。單片使用或是由CAS2~CAS0選擇的從片8259A,就在第2個中斷響應周期,將中斷類型向量從D7~D0線輸出;如果是作主片使用的8259A,則在第一個中斷響應周期,把級聯(lián)地址從CAS2~CAS0送出。CPU讀取中斷向量,轉(zhuǎn)移到相應的中斷處理程序。由CPU發(fā)出中斷結(jié)束EOI命令使ISRi復位10.2.3、8259A的級聯(lián)連接硬件連接:PC機與單片8259A的連接,對比圖10.2,P293

級聯(lián)方式:一片主8259,2片從8259主接5V,從8259接地.1號從8259的INT接主8259的IR62號從8259的INT接主8259的IR4可管理22級中斷特殊嵌套方式的使用設1號從8259:IR7有申請,并響應1號從8259向主8259的IR6發(fā)申請,并得到響應現(xiàn)在,1號從8259:IR0有申請,而IR0的優(yōu)先級別高于IR7,應該響應IR0,應該允許IR0進入。解決辦法:使用特殊全嵌套方式10.2.48259A的命令字8259A的命令字包括初始設定的初始化命令字ICW和操作過程中給出的操作命令字OCW

1、初始化命令字命令字:ICWi(i=1~4)操作命令字:OCWi(i=1~4)8259A的地址(每片8259A包含兩個內(nèi)部端口地址):偶地址端口(A0=0)奇地址端口(A0=1)1.預置命令字(8259A的初始化命令字)

ICW1:芯片控制初始化命令字ICW2:設置中斷類型碼ICW3:主片/從片的初始化命令字ICW4:方式控制初始化命令字(1)ICW1的格式(A0=0)

ICW1:芯片控制初始化命令字。必須寫入偶地址端口中。(即A0=0)

D7~D5:這幾位在此系統(tǒng)中不用,為1為0都可以。

D4:設置為1,指示ICW1的標志。

D3(LTIM):設定中斷請求信號的形式。為1,表示中斷請求為電平觸發(fā)方式,為0,表示中斷請求為邊沿觸發(fā)方式。

D2(ADI):在8086/8088中不起作用。

D1(SNGL):指出8259A有否級聯(lián)。為1,表示系統(tǒng)中有一片8259A,為0,表示系統(tǒng)中有多片8259A。

D0(IC4):指出后面是否設置ICW4。使用ICW4時IC4必須為1。

A0D7D6D5D4D3D2D1D00×××1LTIM×SNGLIC4(2)ICW2的格式(A0=1)

ICW2是設置中斷類型碼的高5位初始化命令字(低3位為IR7~IR0編碼后的值),寫入8259A的奇地址端口。

當8259A用于MCS80/85系統(tǒng)中時,用于確定中斷入口地址的高8位(A15—A8);當8259A用于8088/8086系統(tǒng)中時,ICW2的D7—D3為編程設置位,作為本芯片所管理8級中斷類型碼的高5位。而D2—D0位為8級中斷源所對應的編碼(其中:000—IR0,111—IR7)編程設置對其無影響。例:若ICW2=45H,則8極中斷源的中斷類型碼分別為IR0為40H,…,IR7為47H

A0D7D6D5D4D3D2D1D01T7T6T5T4T3×××(3)ICW3的格式(A0=1)ICW3用于8259A的級連,8259A最多允許有一片主片和8片從片級連,使能夠管理的中斷源可以擴充至64個。若系統(tǒng)中只有一片8259A,則不用ICW3,若由多片8259A級連,則主、從8259A芯片,都必須使用ICW3,主、從8259A芯片中的ICW3的使用方式不同。

ICW3是標志主片/從片的初始化命令字,指出主8259那個引腳連有從8259,對應位置一。從8259A的識別地址,指出它接在主8259的哪個IR端上1A01A0高5位不用,無意義,一般置0本片8259A為從片,ICW3的格式,指出從8259A連在主8259那個引腳,由D2D1D0指出。

(4)ICW4的格式(A0=1)

ICW4為方式控制初始化命令字,寫入奇地址端口,只有當ICW1中D0=1時才需要設置,對于8088/8086系統(tǒng)是必須設置的預置命令字。

8259AICW4格式8259AICW4格式D0位對于8086/8088系統(tǒng)配置來說恒置為11A0用ICW1設置,是否級連,請求信號格式,后面是否用ICW4用ICW2設置中斷類型碼是否為級連方式?本片為主片嗎?設ICW3的高五位為零,低三位為標識碼設ICW3的各位對應IR0~IR7的連接情況需要用ICW4嗎?用ICW4設置,是否為特殊全嵌套方式;緩沖方式;自動結(jié)束中斷方式;8086/8088系統(tǒng)結(jié)束是否否否是是8259A的初始化流程8259A的初始化流程

例10.1:試按照如下要求對8259A設置初始化命令字:系統(tǒng)中僅用一片8259A,中斷請求信號采用邊沿觸發(fā),中斷類型碼為08H~0FH;用全嵌套、緩沖、非自動結(jié)束中斷方式。8259A的端口地址為20H和21H,可用下面的程序段來寫入預置命令字ICW1~ICW4分析:無級聯(lián),所以不用設ICW3,

對ICW1,A0D7D6D5D4D3D2D1D00×××1LTIM×SNGLIC411若D3=1,則表示中斷請求信號為高電平有效;若D3=0,則表示中斷請求信號為上升沿有效。本題用邊沿觸發(fā),故為0故ICW1可為00010011即為13H。程序語句為:MOVAL,13HOUT20H,AL對ICW2:A0D7D6D5D4D3D2D1D01T7T6T5T4T3×××當8259A用于MCS80/85系統(tǒng)中時,用于確定中斷入口地址的高8位(A15—A8);當8259A用于8088/8086系統(tǒng)中時,ICW2的D7—D3為編程設置位,作為本芯片所管理8級中斷類型碼的高5位。而D2—D0位為8級中斷源所對應的編碼(其中:000—IR0,111—IR7)編程設置對其無影響。本題規(guī)定該8259A引入的8級中斷類型碼為08H-0FH,故其高5位為00001***,ICW2也就為00001***,取為00001000,即08H程序語句為:MOVAL,18HOUT81H,AL程序語句為:MOVAL,08HOUT21H,AL對ICW4A0D7D6D5D4D3D2D1D01000SFNMBUFM/SAEOIμPMD0位對于8086/8088系統(tǒng)配置來說恒置為1單片,故此位不起作用,為0本題是全嵌套(故為0)、緩沖(故為1)、非自動結(jié)束中斷方式設為0故ICW4為00001001,即為09H程序語句為:MOVAL,09HOUT21H,AL例10.2:試對一個主從式8259A進行初始化命令字設置。從片的INT與主片的IR2相連。從片的中斷類型碼為70H~77H,端口地址為A0H和A1H;主片的系統(tǒng)中僅用一片8259A,中斷類型碼為08H~0FH,端口地址為20H和21H,中斷請求信號采用邊沿觸發(fā),采用全嵌套、緩沖、非自動結(jié)束中斷方式??捎孟旅娴某绦蚨蝸韺懭腩A置命令字ICW1~ICW4主片初始化程序:MOVAL,13H;ICW1OUT20H,ALMOVAL,8;ICW2:中斷類型碼為08H~0FHOUT21H,AL;MOVAL,4;ICW3:IR2上連接從片OUT21H,ALMOVAL,0DH;ICW4OUT21H,AL從片初始化程序:MOVAL,11H;OUT0A0H,ALMOVAL,70H;ICW2:中斷類型碼為70H~77HOUT0A1H,AL;MOVAL,2;ICW3:IR2上連接從片OUT0A1H,ALMOVAL,9H;ICW4OUT0A1H,AL對8259A按照上述流程進行初始化編程之后,相應芯片就做好了接收中斷的準備,可接收來自IRi端的中斷請求。自動進入操作命令狀態(tài),準備接收CPU寫入8259A的操作命令字OCWi若中斷源發(fā)生了中斷請求,則8259A按照初始化編程所規(guī)定的各種方式來處理這種請求。在8259A的工作期間,CPU也可以通過操作命令字,實現(xiàn)對8259A的操作控制,或者改變工作方式,或者實時讀取8259A中某些寄存器的內(nèi)容。8259A有三個操作命令字,我們分別討論如下:2.8259A的操作命令字:OCW1~OCW3

2.8259A的操作命令字:OCW1~OCW3

(1)OCW1的格式(A0=1)OCW1是對IMR置位、復位的命令,置位位對應的中斷被屏蔽,稱為屏蔽命令字。寫入8259A的奇地址端口。當OCW1某位=1,表示對應的中斷請求被屏蔽。

即它的每一位,可以對相應的中斷請求輸入進行屏蔽,若OCW1的某一位為1,則相應的中斷請求輸入被屏蔽;反之,則相應的中斷請求輸入呈現(xiàn)允許狀態(tài)。即若Mi=1,則表示8259A對IRi的中斷請求呈屏蔽狀態(tài);否則若Mi=0,則表示8259A對IRi的中斷請求呈允許狀態(tài)。

OCW2是中斷結(jié)束(EOI)的命令字,用于復位ISR及改變優(yōu)先級。用于設置優(yōu)先級循環(huán)方式和中斷結(jié)束方式,寫入偶地址單元。其中D4、D3位恒定為0,是OCW2的特征位,R、SL、EOI三位的不同組合,可以組成7種不同的操作命令,用于改變8259A的工作方式。其中三種操作命令字要用到OCW2的低三位,這三位所形成的編碼指出操作所涉及到的中斷源。R—用于表示優(yōu)先級是否采用循環(huán)方式;SL—用于確定是否需要使用L2、L1、L0來明確中斷源;EOI—用于指示OCW2是否作為中斷結(jié)束命令。L2、L1、L0—當SL=1時,三位的編碼用以指示8個中斷源之一。

(2)OCW2的格式(A0=0)0A0R、SL、EOI共有8種不同的組合形式,其中有7種是相應的控制命令,分別介紹如下:(a)0、0、0:為取消自動EOI循環(huán)命令;(即復位)(b)1、0、0:為設置自動EOI循環(huán)命令;(即置位)(c)0、0、1:為普通的EOI命令,它適用于完全嵌套方式,在中斷服務程序結(jié)束時,用于清除ISR中最后被置位的相應位。顯然,只有在ICW4中的AEOI=0時,才需要在中斷服務子程序中向8259A發(fā)普通的EOI命令。(d)0、1、1:為特殊的EOI命令,與普通的EOI命令的差別在于,它需要利用L2、L1、L0位明確指出ISR寄存器中需要被復位的位,(e)1、0、1:為普通循環(huán)的EOI命令,它在中斷服務程序結(jié)束時使用,它使已置位的ISR寄存器中優(yōu)先級最高的那一位復位,同時賦予剛剛結(jié)束中斷處理的中斷源的中斷優(yōu)先級最低。(f)1、1、1:為特殊的EOI循環(huán)命令,它一方面復位ISR寄存器中由L2、L1、L0位明確指出的那一位;另一方面,使L2、L1、L0位明確指出的那一個中斷源的中斷優(yōu)先級最低。(g)1、1、0:為置位優(yōu)先權(quán)命令,它用以設置優(yōu)先級特殊循環(huán)方式,即利用L2、L1、L0位明確指出中斷優(yōu)先級最低的中斷源。(h)0、1、0:非操作命令,無實際意義。(3)OCW3的格式(A0=0)

OCW3是讀ISR和IRR以及指定設置特殊屏蔽方式的命令。

P=1時,表示查詢。否則,表示不是查詢命令。RR=1,RIS=0,對IRR寄存器的讀出;RR=1,RIS=1,對ISR寄存器的讀出。RR=0,RIS=1/0,無效。ESMM=SMM=1,置特殊屏蔽方式,8259A脫離當前優(yōu)先級方式.ESMM=1,SMM=0,撤銷特殊屏蔽方式ESMM=0,SMM=1/0,無效。若要讀IMR,不須設OCW3的查詢命令。

IR4和IR1引腳上有中斷請求,CPU執(zhí)行一條輸入指令(INAL,81H),從奇地址端口讀得以下查詢字:D4、D3為OCW3的標志位0A0D7為無關(guān)位,故設為0D2D1D0=100反映當前處理的最高級中斷為IR4見P242的圖9-16D7=1反映當前有中斷請求OCW3的作用:在通常方式的中斷服務過程中,ISR設置期間對優(yōu)先級更低的中斷請求不響應。特殊屏蔽方式是可以解除這種禁止中斷狀態(tài)的方式。在這種方式時,除了由ISR設置的位和由IMR屏蔽的位對應的中斷外,其他所有級別的中斷均可響應。4.8259A那些寄存器內(nèi)容可讀出?

設8259A地址80H,81H1)讀中斷屏蔽寄存器IMR內(nèi)容:中斷屏蔽字INAL,81H;A0=12)要讀出ISR或IRR的內(nèi)容,必須設置OCW3中的P(D2)=1:(1)讀IRR:設置OCW3:D1D0=10(2)讀ISR:設置OCW3:D1D0=11執(zhí)行輸入指令I(lǐng)NAL,81H8259A的級聯(lián)(補充回憶)

所謂級聯(lián),就是在微型計算機系統(tǒng)中,以1片8259A的INT引腳與CPU的INTR引腳相連,稱為主片;再將最多8片8259A的INT引腳,分別與主8259A的IR0-IR7相連,稱為從片。顯然,在主-從式8259級聯(lián)的微機系統(tǒng)中,系統(tǒng)能夠管理的中斷源可由8級擴展至64級。主-從式8259級聯(lián)系統(tǒng)的連接,需要注意的要點如下:主片的INT引腳接CPU的INTR引腳,從片的INT引腳分別主片的IRi引腳,使得由從片輸入的中斷請求,能夠通過主片向CPU發(fā)出;主片的3條級聯(lián)線與各從片的同名級聯(lián)線引腳對接,主片為輸出,從片為輸入。主片用以向各從片發(fā)出優(yōu)先級別最高的中斷請求的從片代碼,各從片用該代碼與本片的代碼進行比較,符合則將本片ICW2中預先設定中斷類型碼,送數(shù)據(jù)總線。主片的接+5v,從片的接地。1片主片與3片從片級聯(lián)的情況級連系統(tǒng)中的所有8259A都必須進行各自獨立的編程,作為主片的8259A必須設置為特殊的全嵌套方式,可以避免相同從片中,優(yōu)先級較高的中斷請求被屏蔽的情況發(fā)生.與一般的全嵌套方式相比,有兩點需要注意:

①當來自某個從設備的中斷請求被響應之后,主片的優(yōu)先權(quán)邏輯不封鎖這個從片,從而可以使來自從設備的較高優(yōu)先級的中斷請求能被主片正常接受,并向CPU發(fā)出。②

中斷服務結(jié)束時,必須用軟件來檢查被服務的中斷是否為該從片中,唯一的中斷請求。為此,須先向從片發(fā)一個一般的中斷結(jié)束命令,清除已完成服務的ISR中的相應位,然后,再讀出ISR的內(nèi)容,檢查是否全0,若為全0,則向主片發(fā)一個中斷結(jié)束命令,清除與從設備相應的ISR中的位;反之,則不向主片發(fā)中斷結(jié)束命令,因為同一從片中還有其它中斷請求正在處理。四.8259A使用舉例

例1.IBMPC機中,只有一片8259A,可接受外部8級中斷。在I/O地址中,分配8259A的端口地址為20H和21H,初始化為:邊沿觸發(fā)、緩沖連接、中斷結(jié)束采用EOI命令、中斷優(yōu)先級采用完全嵌套方式,8級中斷源的中斷類型分別為08H—0FH,請寫出其初始化程序A0D7D6D5D4D3D2D1D00×××1LTIM=0×SNGL=1IC4=1ICW1=13HA0D7D6D5D4D3D2D1D01T7T6T5T4T3×××ICW2=08HA0D7D6D5D4D3D2D1D01000SFNM=0BUF=1M/S=1AEOI=0μPM=1ICW4=0DHA0D7D6D5D4D3D2D1D01M7=0M6=0M5=0M4=0M3=0M2=0M1=0M0=0因為允許中斷請求進入故OCW1=00H其中斷類型碼為08H~0FH,故ICW2=08H采用邊沿觸發(fā)、緩沖連接、中斷結(jié)束采用EOI命令、中斷優(yōu)先級采用完全嵌套方式MOVDX,20HMOVAL,00010011B;即13HOUTDX,AL;寫入ICW1=13HMOVDX,21HMOVAL,08HOUTDX,AL;寫入ICW2=08HMOVAL,00001101BOUTDX,AL;寫入ICW4=0DHXORAL,ALOUTDX,AL;寫入OCW1。。。。。。STI;設置IF為1例2(補充):8259A初始化要求:端口地址:20H~21H8個中斷請求信號:IR0~IR7采用完全嵌套方式、緩沖、0級最高,7級最低。設定0級請求對應中斷號為8,1級為9,….7級為0FH。即中斷類型號為08H-0FH分別是:IRQ0:00001000=08HIRQ1:00001001=09HIRQ2:00001010=08H…...IRQ7:00001111=0FH8259A初始化編程:INTA00EQU020H;8259A端口0INTA01EQU021H;8259A端口1…….MOVAL,13H;ICW1:邊沿觸發(fā).單片.要ICW4OUT20H,ALMOVAL,08H;ICW2:IRQ0中斷類型為08HOUT21H,ALMOVAL,09H;ICW4全嵌套、緩沖、從片、8088系統(tǒng)OUT21H,AL;普通EOI方式A0D7D6D5D4D3D2D1D01000SFNM=0BUF=1M/S=0AEOI=0μPM=1(1)預制命令字:ICW1,ICW2.ICW3.ICW4

ICW1:邊沿觸發(fā).單片.要ICW4

0001

001

1

=13HD4:設置為1,指示ICW1的標志。

D3(LTIM):設定中斷請求信號的形式。為0,

表示中斷請求為邊沿觸發(fā)方式。

D2(ADI):在8086/8088中不起作用。

D1(SNGL):指出8259A有否級聯(lián)。為1,表示系統(tǒng)中有一片8259A,

D0:(IC4):為1,表示系統(tǒng)為8086/8088,要用ICW4.ICW4的格式:

必須寫到8259A的奇地址端口中.

00001001=09HICW4全嵌套.8088系統(tǒng)非自動結(jié)束例3.讀8259A相關(guān)寄存器的內(nèi)容。設8259A的端口地址為20H、21H,請讀入IRR、ISR、IMR寄存器的內(nèi)容,并相繼保存在數(shù)據(jù)段2000H開始的內(nèi)存單元中;若該8259A為主片,請用查詢方式,查詢哪個從片有中斷請求。0A010:讀IRR11:讀ISR0×:無效,不讀沒規(guī)定屏蔽方式,設為00讀IRR時,OCW3為00001010讀ISR時,OCW3為00001011查詢時,可設OCW3為00001100P=1,有查詢P=0,不查詢特征位MOV AL,xxx01010B發(fā)OCW3,欲讀取IRR的內(nèi)容OUT20H,ALINAL,20H讀入并保存IRR的內(nèi)容MOV[2000H],ALMOVAL,xxx01011B發(fā)OCW3,欲讀取ISR的內(nèi)容OUT20H,ALINAL,20H讀入并保存ISR的內(nèi)容MOV[2001H],ALINAL,21H;只要將端口地址設為奇地址,不用發(fā)OCW3直接用IN指令MOV[2002H],AL;就可在程序任何位置讀入并保存IMR的內(nèi)容MOVAL,xxx0110xB發(fā)OCW3,欲查詢是否有中斷請求OUT20HINAL,20H讀入相應狀態(tài)TESTAL,80H;并判斷最高位是否為1JZDONEANDAL,07H判斷中斷源的編碼…………例4:(補充實例):一片從8259的INT端連在主8259的IR3上,主8259的IR0和IR5端分別引入兩個中斷,從8259的IR2和IR3引入兩個中斷.主8259中斷類型碼為:40H,45H;中斷服務程序的段基址為1000H,偏移地址為1050H和2060H.主8259端口地址為:FFE8H,FFE9H從8259中斷類型碼為:32H,33H;中斷服務程序的段基址為2000H,偏移地址為5440H和3620H.從8259端口地址為:FFFAH,FFF9H

主8259A的初始化程序段:MOVAL,11H

;定義ICW1,邊緣觸發(fā),級聯(lián),單級,需ICW4

MOVDX,0FFE8HOUTDX,AL;ICW1送偶地址端口MOVAL,40H

;定義ICW2,使IRQ0的中斷類型碼為40HMOVDX,0FFE9H;送奇地址端口OUTDX,ALMOVAL,08H

;定義主片ICW3,其IR3上接從片OUTDX,AL;ICW3送奇地址端口MOVAL,11H

;定義ICW4,8086,特殊完全嵌套方式OUTDX,ALMOVAL,0D6H;定義OCW1=11010110,即屏蔽IR0,IR3,IR5以外的 ;中斷申請OUTDX,ALMOVAL,20H

;定義OCW2=00100000,普通EOI方式OUTDX,AL

從8259A的初始化程序段:MOVAL,11H

;定義ICW1,邊緣觸發(fā),級聯(lián),單級,需ICW4MOVDX,0FFFAHOUTDX,AL;ICW1送偶地址端口MOVAL,30H

;定義ICW2,使從片的中斷類型碼為30HMOVDX,0FFEBH;送奇地址端口OUTAL,DXMOVAL,03H;定義從片ICW3=00000011,確定主片的IR3上接從片OUTDX,AL;ICW3送奇地址端口MOVAL,11H

;定義ICW4,8086,特殊完全嵌套方式OUTDX,ALMOVAL,0F9H

;定義OCW1=11111001,屏蔽IR1,IR2以外的中斷申請OUTDX,ALMOVAL,20H

;定義OCW2,普通EOI方式OUTDX,AL

補充例.進入和退出特殊屏蔽方式的流程圖。(本題可略)假定,初始化之后,8259A工作于完全嵌套方式,要求對于IR3的中斷級,能夠允許任何級別的中斷中斷其中斷服務程序,即8259A按特殊屏蔽方式工作。因而在響應IR3而執(zhí)行IR3的中斷服務程序時,在A處,寫入OCW1以屏蔽IR3,然后寫入OCW3使ESMM=SMM=1,于是從A處開始,8259A進而特殊屏蔽方式,此后繼續(xù)執(zhí)行IR3的中斷服務程序。在中斷服務結(jié)束之前,再向8259A寫入OCW3使ESMM=1,SMM=0,結(jié)束特殊屏蔽方式,返回到完全嵌套方式,接著寫入OCW1,撤消對IR3的屏蔽,最后寫入OCW2,向8259A發(fā)出EOI命令。此例,說明在IR3的中斷服務程序的A處至B處,允許任何級別的中斷源中斷IR3的服務程序。(除本身之外)。。。IR3中斷服務程序入口STI保護現(xiàn)場。。。STI開中斷MOVAL,00001000B服務程序OUT21H,AL;OCW1寫入OCW1,使IM3=1MOVAL,01101000B寫入OCW3,使ESMM=SMM=1OUT20H,AL;OCW3繼續(xù)服務。。。寫入OCW3,使ESMM=1,SMM=0MOVAL,01001000B寫入OCW1,使IM3=0OUT20H,AL;OCW3寫入OCW2,普通的EOI命令MOVAL,00H中斷返回OUT21H,AL;OCW1MOVAL,00100111BOUT20H,AL;OCW3OUT21H,AL;OCW3EOI命令10.380×86微處理器的中斷指令和80×86微型計算機的中斷系統(tǒng)10.3.1中斷指令指定類型中斷指令I(lǐng)NTN(n=N):類型N中斷,中斷類型由N指定,n=0~255,N只是n中的一部分。溢出中斷指令I(lǐng)NTO(n=4):類型4中斷,OF=1才執(zhí)行中斷返回指令I(lǐng)RET/IRETD:作用與RET指令類似,使控制返回主程序,但IRET是遠返回(返回CS、IP與FR的值),IRED是32位的中斷返回指令,但僅返回EIP的值。10.3.2外部中斷非屏蔽中斷NMI:類型號2,不可用軟件屏蔽,CPU必須響應它??善帘沃袛郔NTR:類型號由PIC提供。IF=1時CPU才能響應。外部中斷響應過程:非屏蔽中斷,與內(nèi)部中斷響應過程類似類型號:N=2可屏蔽中斷(1)讀中斷類型碼(2)將標志寄存器的值推入堆棧(3)清中斷允許標志IF和單步中斷TF(4)保護斷點,將CS、IP推入堆棧(5)得到中斷向量(6)執(zhí)行中斷服務程序可屏蔽中斷響應1.向CPU的引腳INTR發(fā)中斷申請信號當有多個外設同時發(fā)出中斷請求時,能按照一定的優(yōu)先級順序,向CPU發(fā)出中斷申請,使CPU能優(yōu)先響應優(yōu)先級最高的外部設備的中斷申請。2.送中斷類型號在CPU中斷響應周期,針對不同外設的中斷請求,向CPU傳送不同的中斷類型號,使CPU執(zhí)行相應的中斷子程。中斷申請管理接口的功能:在IBMPC機由8259A可編程中斷控制器(PIC)來完成。10.3.3內(nèi)部中斷(P298)概念:由CPU自己啟動的中斷處理過程,稱為內(nèi)部中斷。種類:根據(jù)內(nèi)部中斷的報告方式和性質(zhì),分為:1、故障:指某條指令在啟動之后,真正執(zhí)行之前,就被檢測到異常而產(chǎn)生的一種中斷。2、陷阱:在指令執(zhí)行過程中引起的中斷。這類異常主要是由執(zhí)行除法指令或中斷調(diào)用指令(INTN)引起的,即在指令執(zhí)行后產(chǎn)生的異常。出現(xiàn)陷阱中斷時把(E)IP和CS即斷點推入堆棧保存后就進入陷阱處理程序,陷阱中斷處理完后,返回到斷點繼續(xù)執(zhí)行。3、異常中止:通常是由硬件錯誤或非法的系統(tǒng)調(diào)用引起。一般無法確定造成異常指令的準確位置,程序無法執(zhí)行,系統(tǒng)也無法恢復原操作,必須重新啟動系統(tǒng)。內(nèi)部中斷除法溢出:類型號0,商大于目的操作數(shù)所能表達的范圍時產(chǎn)生。單步中斷:類型號1,TF=1時產(chǎn)生(當前指令需執(zhí)行完)斷點中斷:類型號3,這是一個軟件中斷,即INT3指令。溢出中斷:類型號4,這是一個軟件中斷,即到指令。軟件中斷:即INTn指令,類型號n(0-255)內(nèi)部中斷響應過程:無中斷響應周期

中斷類型碼固定或由指令給出響應過程主要步驟:取中斷類型號N標志寄存器(PSW)內(nèi)容入棧當前代碼段寄存器(CS)內(nèi)容入棧當前指令計數(shù)器(IP)內(nèi)容入棧CLI,將IF清零從中斷向量表中取4xN中的字節(jié)內(nèi)容送IP,取4xN+2中的字節(jié)內(nèi)容送CS轉(zhuǎn)中斷處理程序10.3.4中斷類型碼及中斷種類優(yōu)先級從高到低順序如下:內(nèi)部中斷

NMIINTR

單步中斷注:NMI和INTR屬于外部中斷非屏蔽中斷NMI:類型號2,不可用軟件屏蔽,CPU必須響應它。可屏蔽中斷INTR:類型號由PIC提供。IF=1時CPU才能響應。10.3.5中斷向量表和中斷描述符在80×86微型計算機中,因為工作方式不同而獲取中斷服務程序入口地址的方法有所不同。實地址方式使用中斷向量表,虛地址保護方式使用中斷描述符表。3、中斷向量表(IVT)存放各類中斷的中斷服務程序的入口地址(段和偏移)——中斷向量表的地址位于內(nèi)存的00000H~003FFH,大小為1KB

溫馨提示

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

評論

0/150

提交評論