版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 13 章 中斷系統(tǒng),,本章主要內(nèi)容,(1)中斷及中斷處理的基本概念(2)80x86實模式中斷系統(tǒng)(3)可編程中斷控制器8259A,13.1 基本概念,13.1.1 中斷的定義在程序運行時,系統(tǒng)外部、內(nèi)部或現(xiàn)行程序本身若出現(xiàn)緊急事件,處理器必須立即強行中止現(xiàn)行程序的運行,改變機器的工作狀態(tài)并啟動相應的程序來處理這些事件,然后再恢復原來的程序運行,這一過程稱為中斷。,13.1.2 中斷響應和處理過程,CPU在執(zhí)行每條指
2、令的適當時刻,檢測中斷請求信號。若發(fā)現(xiàn)中斷請求信號有效,對于可屏蔽中斷還必須CPU開放中斷,則在下一機器周期進入中斷響應周期。進入中斷響應周期后,中斷響應和處理的過程如下:,,1. 關(guān)中斷CPU在響應中斷時,發(fā)出中斷響應信號INTA,同時內(nèi)部自動地關(guān)中斷,以禁止接受其他的中斷請求。2. 保存斷點把斷點處的指令指針I(yè)P值和CS值壓入堆棧,以使中斷處理完后能正確地返回主程序斷點。,,3. 識別中斷源CPU要對中斷請求進行處理,必
3、須找到相應的中斷服務程序的入口地址,這就是中斷的識別。4. 保護現(xiàn)場為了不使中斷服務程序的運行影響主程序的狀態(tài),必須把斷點處有關(guān)寄存器(指在中斷服務程序中要使用的寄存器)的內(nèi)容以及標志寄存器的狀態(tài)壓入堆棧保護。,,5. 執(zhí)行中斷服務程序在執(zhí)行中斷服務程序中,可在適當時刻重新開放中斷,以便允許響應較高優(yōu)先級的中斷。6. 恢復現(xiàn)場并返回即把中斷服務程序執(zhí)行前壓入堆棧的現(xiàn)場信息彈回原寄存器,然后執(zhí)行中斷返回指令,從而返回主程序繼續(xù)運
4、行。,,在上述中斷響應及處理的6項操作中,前3項是中斷響應過程,一般由中斷系統(tǒng)硬件負責完成;后3項是中斷處理過程,通常是由用戶或系統(tǒng)程序設(shè)計者編制的中斷處理程序(軟件)負責完成。針對一個具體的系統(tǒng)或機型,中斷服務程序設(shè)計者應該清楚該系統(tǒng)在中斷響應時,中斷響應硬件完成了哪些操作(如程序狀態(tài)字PSW是否已被壓入堆棧),還需中斷處理軟件(中斷服務程序)完成哪些操作。,13.1.3 中斷優(yōu)先級和中斷嵌套,1. 中斷優(yōu)先級在實際系
5、統(tǒng)中,多個中斷請求可能同時出現(xiàn),但中斷系統(tǒng)只能按一定的次序來響應和處理,這時CPU必須確定服務的次序,即根據(jù)中斷源的重要性和實時性,照顧到操作系統(tǒng)處理的方便,對中斷源的響應次序進行確定。這個響應次序稱為中斷優(yōu)先級(priority)。,,通常,可用軟件查詢法確定中斷優(yōu)先級,也可用硬件組成中斷優(yōu)先級編碼電路來實現(xiàn)?,F(xiàn)代PC機中多采用可編程中斷控制器(如8259A)來處理中斷優(yōu)先級問題。(1) 軟件查尋法確定中斷優(yōu)先級采用軟件查詢法
6、解決中斷優(yōu)先級只需要少量硬件電路。如圖13.1所示,系統(tǒng)中有多種外部設(shè)備,將這些設(shè)備的中斷請求信號相“或”,從而產(chǎn)生一個總的中斷請求信號INTR發(fā)給CPU。,圖13.1 軟件查詢接口電路,,當CPU響應中斷請求進入中斷處理程序后,必須在中斷處理程序的開始部分安排一段帶優(yōu)先級的查詢程序,查詢的先后順序就體現(xiàn)了不同設(shè)備的中斷優(yōu)先級,即先查的設(shè)備具有較高的優(yōu)先級,后查的設(shè)備具有較低的優(yōu)先級。 一般來說總是先查速度較快或是實時性較高的設(shè)備。
7、 軟件查詢的流程如圖13.2所示。,圖13.2 軟件查詢流程圖,,(2) 菊花鏈優(yōu)先級排隊電路菊花鏈優(yōu)先級排隊電路是一種優(yōu)先級管理的簡單硬件方案。它是在每個設(shè)備接口設(shè)置一個簡單的邏輯電路,以便根據(jù)優(yōu)先級順序來傳遞或截留CPU發(fā)出的中斷響應信號INTA,以實現(xiàn)響應中斷的優(yōu)先順序。典型的菊花鏈優(yōu)先級結(jié)構(gòu)如圖13.3(a) 所示。,圖13.3 菊花鏈優(yōu)先級結(jié)構(gòu)(a) 菊花鏈排隊電路,圖13.3 菊花鏈優(yōu)先級結(jié)構(gòu)(b) 菊花鏈邏輯,,
8、,,,,,,,,,,,,,,,,,,中斷請求信號(高電平有效),中斷響應信號(低電平有效),INTR,,2. 中斷嵌套當CPU正在執(zhí)行優(yōu)先級較低的中斷服務程序時,允許響應比它優(yōu)先級高的中斷請求,而將正在處理的中斷暫時掛起,這就是中斷嵌套。此時,CPU首先為級別高的中斷服務,待優(yōu)先級高的中斷服務結(jié)束后,再返回到剛才被中斷的較低的那一級,繼續(xù)為它進行中斷服務。如圖13.4所示。,圖13.4 中斷嵌套示意圖,,,,,STI,,
9、,IRET,,,,,STI,,,IRET,,,,,....,....,....,,中斷嵌套的深度(中斷服務程序又被中斷的層次)受到堆棧容量的限制。所以在編寫中斷服務程序時,必須要考慮有足夠的堆棧單元來保留多次中斷的斷點信息及有關(guān)寄存器的內(nèi)容。,13.2 80x86實模式的中斷系統(tǒng),13.2.1 中斷的分類中斷分類的方式很多。根據(jù)進入中斷的方式可分為自愿中斷和強迫中斷。根據(jù)其重要性可分為可屏蔽中斷和不可屏蔽
10、中斷。根據(jù)中斷源的位置可分為內(nèi)部中斷和外部中斷等等。如圖13.5所示。,圖13.5 80x86實模式系統(tǒng)的中斷分類,INT n 指令,中 斷 邏 輯,斷點中斷(INT 3),溢出中斷(INTO, OF=1),單步中斷(TF=1),除法錯中斷,,,,,,,,,,軟件中斷(內(nèi)部中斷),,非屏蔽中斷請求,,,,,,,中斷控制器(8259A),,NMI,INTR,,,,,,,,,IRQ0,....,IRQ7,
11、,可 屏 蔽 中 斷,硬件中斷(外部中斷),關(guān)于中斷分類的補充說明,為了支持多任務和虛擬存儲器等功能,80386及以上CPU 把外部中斷稱為“中斷”(interrupt),把內(nèi)部中斷稱為“異常”(exception) 。與8086一樣,它也最多處理256種中斷和異常。根據(jù)引起異常的程序是否可被恢復和恢復點的不同,又把異常分為三類: 故障(fault) 陷阱(trap) 中止(abort) 把對應的
12、異常處理程序分別稱為故障處理程序、陷阱處理程序和中止處理程序。,,故障是在引起異常的指令之前,把異常通知給系統(tǒng)的一種異常。故障的特點是可以排除的。 例如,在執(zhí)行一條指令時,如果發(fā)現(xiàn)它要訪問的段不在內(nèi)存中,那磨停止該指令的執(zhí)行,并產(chǎn)生一個段不存在異常,對應的故障處理程序可通過從外存加載該段到內(nèi)存的方法來排除故障。之后,原引起異常的指令就可以繼續(xù)執(zhí)行,就不再產(chǎn)生異常。陷阱是在引起異常的指令執(zhí)行之后觸發(fā)的一種異常。在轉(zhuǎn)入異常處理程序
13、時,引起陷阱的指令已完成。陷阱處理程序執(zhí)行完,返回到引起陷阱指令的下一條指令。軟中斷指令I(lǐng)NT n 是陷阱的例子。中止是在系統(tǒng)出現(xiàn)嚴重的不可恢復的事件時觸發(fā)的一種異常。產(chǎn)生中止后,正執(zhí)行的程序不能恢復執(zhí)行,系統(tǒng)要重新啟動才能恢復正常運行狀態(tài)。,13.2.2 中斷向量表,所謂中斷向量(interrupt vector),實際上就是中斷服務程序的入口地址,每個中斷類型對應一個中斷向量。每個中斷向量占4字節(jié)的存儲單元。其中:前兩個字
14、節(jié)單元存放中斷服務程序入口地址的偏移量(IP),低字節(jié)在前,高字節(jié)在后;后兩個字節(jié)單元存放中斷服務程序入口地址的段基值(CS),也是低字節(jié)在前,高字節(jié)在后。,,80x86實模式系統(tǒng)允許引入的中斷可達256個,因此需占用1K字節(jié)的存儲空間來存放這256個中斷服務程序入口地址。80x86實模式系統(tǒng)把中斷服務程序入口地址信息設(shè)置在存儲器的最低端,即從00000H~003FFH的1K字節(jié)存儲空間中。這一存儲空間就叫中斷向量表,如圖13.6
15、所示。,圖13.6 實模式系統(tǒng)的中斷向量表,,︽︾,︽︾,︽︾,︽︾,,,,,,,,,類型255(十進制),類型32類型31(十進制),,供用戶定義的中斷(共224個),,類型5類型4類型3類型2類型1類型0,,保留的中斷(共27個),專用的中斷(共5個),0000: 03FFH0000:007FH0000:007EH 0000:0014H0000:0013H
16、0000:0010H0000:000FH0000:000CH0000:000BH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H,,溢出中斷,,斷點中斷,,,,非屏蔽中斷,單步中斷,除數(shù)為0中斷,,在中斷向量表中,各中斷向量按中斷類型碼從0到255順序存放。這樣,知道了中斷類型碼,很快就可算出相應中斷向量的存放位置,從而取出中斷向量。例如,中斷類型碼為27H
17、的中斷所對應的中斷向量應存放在從0000H:009CH開始的4個連續(xù)字節(jié)單元中。如果相應存儲單元的內(nèi)容如圖13.7所示,那么27H號中斷的中斷服務程序的入口地址即為8765H:4321H。,圖13.7 中斷向量的存放格式,87H65H43H21H,,,,,,,,,,0000:009FH0000:009CH,,由于中斷向量在中斷向量表中是按中斷類型碼(也稱中斷向量號)順序存放的,所以每個中斷向量的地址可由
18、中斷類型碼乘以4計算出來。CPU響應中斷時,只要把中斷類型碼N左移2位(乘以4),即可得到中斷向量在中斷向量表中的對應地址4N(該中斷向量所占4個字節(jié)單元的第一個字節(jié)單元的地址)。然后把由此地址開始的兩個低字節(jié)單元的內(nèi)容裝入IP寄存器: IP ← (4N, 4N+1) 再把兩個高字節(jié)單元的內(nèi)容裝入 CS 寄存器: CS ←(4N+2, 4N+3),,這就是使程序轉(zhuǎn)入中斷類型碼為N的中斷服務程序的
19、控制過程,如下面例1所示。至于中斷類型碼N的來源,對于不同的中斷類型(內(nèi)部中斷、外部中斷),情況有所不同,詳見后述。例13.1 若中斷類型碼為3,則由中斷類型碼取得中斷服務入口地址的過程如圖13.8所示。,圖13.8 根據(jù)中斷類型碼取得中斷服務程序入口地址,,例13.2 中斷類型碼為20H,則中斷服務程序的入口地址存放在中斷向量表從0000:0080H開始的4個字節(jié)單元中。若這4個字節(jié)單元的內(nèi)容分別為:(0000:0080
20、H)= 10H(0000:0081H)= 20H(0000:0082H)= 30H(0000:0083H)= 40H試指出相應的中斷服務程序的入口地址。解: 中斷服務程序的入口地址為 。,,例13.3 中斷類型碼為17H,若中斷服務程序的入口地址為2340H:7890H,試指出中斷向量表中存放該中斷向量的4個字節(jié)單元的地址及內(nèi)容。解: 由于中斷類型碼為17H
21、,所以中斷向量表中存放相應中斷向量的4個字節(jié)單元的地址分別為0000:005CH、0000:005DH、0000:005EH、0000:005FH,4個字節(jié)單元的內(nèi)容分別為 。,13.2.3 外部中斷,由外部的中斷請求信號啟動的中斷,稱為外部中斷,也稱硬件中斷。80x86 CPU為外部中斷提供兩條引線,即NMI和INTR,用來輸入中斷請求信號。1. 非屏蔽中
22、斷從NMI引腳進入的中斷為非屏蔽中斷,它不受中斷允許標志IF的影響。非屏蔽中斷的類型碼為2,因此,非屏蔽中斷處理子程序的入口地址存放在08H、09H、0AH和0BH這4個字節(jié)單元中 。,,2. 可屏蔽中斷一般外部設(shè)備請求的中斷都是從CPU的INTR端引入的可屏蔽中斷。當CPU接收到一個可屏蔽中斷請求時,如果中斷允許標志IF為1,那么CPU就會在執(zhí)行完當前指令后響應這一中斷請求。下面以8086系統(tǒng)為例,具體介紹一下可屏蔽中斷的
23、響應時序。,圖13.9 8086的中斷響應總線周期,,,,,,,,,,,,,,,,,,,,T1 T2 T3 T4 TI TI TI T1 T2 T3 T4,,,,,第一個總線周期,第二個總線周期,,三個空閑狀態(tài),,,,,,,,,,,,,中斷類型碼,CLK,____INTA,AD7~AD0,,,
24、13.2.4 內(nèi)部中斷,內(nèi)部中斷也稱軟件中斷。它是由于CPU執(zhí)行了INT n(含INT 3)、INTO指令,或者由于除法出錯以及進行單步操作所引起的中斷,主要包括INT n指令中斷、斷點中斷、溢出中斷、除法錯中斷以及單步中斷。,,(1) INT n 指令中斷。 80x86系統(tǒng)提供了直接調(diào)用中斷處理子程序的手段,這就是中斷指令I(lǐng)NT n。指令中的中斷類型碼n告訴CPU調(diào)用哪個中斷處理子程序。(2) 除法錯中斷(類型0)在執(zhí)行
25、除法指令DIV 或IDIV 后,若所得的商超出了目標寄存器所能表示的范圍,比如用數(shù)值0作除數(shù),則CPU立即產(chǎn)生一個0型中斷。,,(3) 溢出中斷(類型4)若上一條指令執(zhí)行的結(jié)果使溢出標志位OF置1,則緊接著執(zhí)行INTO指令時,將引起類型為4的內(nèi)部中斷,CPU將轉(zhuǎn)入溢出錯誤處理。若OF=0時,則INTO指令執(zhí)行空操作,即INTO指令不起作用。 INTO指令通常安排在算術(shù)運算指令之后,以便在發(fā)生溢出時能及時處理。典型情況如表13-1
26、所示。,表 13-1,,,...,...,...,...,,,(4) 單步中斷(類型1)當把CPU標志寄存器的TF位置為1以后,CPU便處于單步工作方式。在單步工作方式下,CPU每執(zhí)行完一條指令,就會自動產(chǎn)生一個1 型中斷,進入1型中斷處理程序。此處理程序顯示CPU內(nèi)部各寄存器的內(nèi)容并告知某些附帶的信息。,,(5) 斷點中斷 (類型3)與單步中斷類似,斷點中斷也是一種調(diào)試程序的手段,并且常常和單步中斷結(jié)合使用。
27、對一個大的程序,不可能對整個程序全部用單步方式來調(diào)試,而只能先將程序中的某一錯誤確定在程序中的一小段中,再對這一小段程序用單步方式跟蹤調(diào)試。斷點中斷就是用來達到這個目的的。,,在所有INT n形式的指令中,只有斷點中斷指令I(lǐng)NT 3是一條單字節(jié)長的指令,其他中斷指令都是兩字節(jié)指令。,圖13.10 斷點的設(shè)置,,,ADD AL, BL,JMP 201H,INC AL,CMP AL, 0FFH,JL 200H,,不轉(zhuǎn)移,轉(zhuǎn)移,,,,,
28、,,,,,,,斷點,1FCH,1FDH,1FEH,1FFH,200H,201H,202H,203H,204H,,內(nèi)部中斷的特點是:(1) 中斷類型碼由CPU內(nèi)部自動提供(含從INT n指令中自動提?。恍枰獔?zhí)行中斷響應總線周期(INTA總線周期)去讀取中斷類型碼。(2) 除單步中斷外,所有內(nèi)部中斷都不可以用軟件的方法來禁止(屏蔽)。單步中斷可以通過軟件將TF標志置1或清0來予以允許或禁止。(3) 除單步中斷外,所有內(nèi)部中斷的優(yōu)先
29、級都比外部中斷高。,13.2.5 中斷響應和中斷處理過程,1. 可屏蔽中斷的響應和處理過程圖13.11給出了可屏蔽中斷從中斷請求信號產(chǎn)生到中斷服務程序結(jié)束并返回被中斷程序的全過程。,圖13.11 可屏蔽中斷全過程,,,INTR ____ INTA,IP,CS,PSW(FR),,,,,,,,,中斷類型碼寄存器,,,②C
30、PU完成現(xiàn)行指令, 發(fā)出中斷響應信號,,,Q中斷請求,中斷屏蔽,,,,,,,①接口發(fā)中斷請求信號INTR,③CPU讀取中斷類型碼N,新的(IP)新的(CS)舊的(IP)舊的(CS)舊的(PSW),被中斷的程序.....,,,,,,,STI...,IRET,中斷服務程序...,存儲器,,,,,,,,,,,,,中斷向量表,︽︾,︽︾,︽︾,︽︾,,,,,16位,,4N4N+2,,,,,,,,,
31、,,,,⑤清除IF和TF,,⑦轉(zhuǎn)入中斷服務程序,⑩返回被中斷的程序,⑧開放中斷(可選),④現(xiàn)行PSW、CS、IP壓棧,⑨IRET指令使舊的IP、CS、PSW彈出堆棧,CPU,外設(shè)接口,⑥取CS、IP新值,,,,,,,,2. 80x86 實模式中斷響應和中斷處理過程 80x86實模式中斷響應和處理流程如圖13.12所示。,圖13.12 80x86實模式中斷響應和中斷處理過程,80x86實模式中斷優(yōu)先級,,,,
32、,,,結(jié)束當前指令,除法錯,INTO,INT n?,NMI,INTR?,TF=1?,執(zhí)行下一條指令,,,,,,N,N,N,N,,,,,TF=1?,,,N,,,Y,Y,Y,Y,Y,內(nèi)部自動形成中斷類型碼N,,讀中斷類型碼N,,標志壓入堆棧,令TEMP=TF,清除IF和TF,CS和IP壓入堆棧,(4N,4N+1)?IP(4N+2,4N+3)?CS,執(zhí)行中斷處理程序,IP、CS出棧,標志寄存器出棧,返回被中斷的主程序,有NMI?,TEMP=
33、1?,,,,,,,Y,Y,N,N,,,,,,,,執(zhí)行IRET指令,,①‘,①,②,③,④,⑤,⑥,,,,,,判斷與思考: 若在主程序中已使IF=1(開中),則在響應中斷請求并執(zhí)行完中斷服務程序返回主程序后,IF 標志位是否為1決定于在中斷服務程序中是否執(zhí)行了STI指令。,,需要說明的是,在圖13.12所示的中斷響應和處理過程中,其中的①~⑥步(含①′)是由處理器內(nèi)部的中斷系統(tǒng)硬件自動完成的,即無需程序員的直接控制和干預;
34、其后的中斷處理過程則是通過執(zhí)行中斷服務程序(軟件)來完成的。,單步運行方式時發(fā)生其他中斷的處理過程,單步運行方式時發(fā)生中斷的處理過程(續(xù)),堆堆棧的情形:,13.3 可編程中斷控制器8259A(8259A Programmable Interrupt Controller-PIC),Intel 8259A用于管理和控制80x86的外部中斷請求,實現(xiàn)優(yōu)先級判決,提供中斷類型碼,屏蔽中斷輸入等功能。 使用單片8259A可以管理8級中斷
35、,采用級聯(lián)方式,可擴充到64級(用9片8259A)。,,.,13.3.1 8259A的引腳功能,封裝形式 28腳雙列直插(28-pin DIP), DIP:Dual-In-line Package ,如圖13.13所示。,,,--片選信號(Chip Select)低電平有效,來自地址譯碼器的輸出只有 有效時,CPU才能對8259A進行讀寫操作。 --寫信號,低電平有效,來自CPU的輸出;當 有效且 有效時, 使8259A
36、接受CPU送來的命令字。 --讀信號,低電平有效,來自CPU的 輸出;當 有效且 有效時, 使8259A將狀態(tài)信息放到數(shù)據(jù)總路線上,供CPU檢測。,,D7~ D0 :雙向數(shù)據(jù)總線,接到系統(tǒng)數(shù)據(jù)總線的D7~ D0 上,用來傳送控制字、狀態(tài)字和中斷類型號。IR7~IR0 :中斷請求信號,輸入,來自外部接口電路。(單片時)INT:向CPU發(fā)出的中斷請求信號。(單片時)。INTA:中斷響應信號,由此接收CPU發(fā)來的中斷響應
37、脈沖。,A0:地址輸入信號,用于對8259A內(nèi)部寄存器的尋址。CAS2~ CAS0:級聯(lián)線(CASCADE LINES),傳送3位標識碼,用于區(qū)分特定的從控制器。雙向:對于主片為輸出,對于從片為輸入。 :從片/允許緩沖器信號。雙功能引腳:作為輸入時,8259A作為主片( ?。?) 8259A作為從片( =0)見P462圖13.15作為輸出時,用來啟動(允許)數(shù)據(jù)總線收發(fā)器(如8286
38、)。 *究竟是作為輸入還是輸出,取決于8259A是否工作于“緩沖方式”(即8259A是否通過一個“數(shù)據(jù)總線收發(fā)器”與系統(tǒng)總線相連)。詳見后面ICW4的格式。,,13.3.2 8259A的內(nèi)部結(jié)構(gòu),8259A的內(nèi)部邏輯結(jié)構(gòu)如圖13.14所示。,圖13.14 8259A的內(nèi)部邏輯結(jié)構(gòu),,CPU,AD7~AD0,INTR,,,ISR,ICW1,OCW1 (IMR),ICW2,OCW2,ICW3,OCW3,ICW4,PR,IRR,
39、,,,D7~D0,,,,地址譯碼,,,...,,,,INT,A0,,,,CAS0,CAS1,CAS2,...,IR7,IR0,,,8259A的編程結(jié)構(gòu),IRR—Interrupt Request RegisterPR---Priority ResolverISR---In-Service RegisterIMR---Interrupt Mask RegisterICWs---Initialization Command
40、 WordsOCWs---Operation Command Words7個CPU可訪問的寄存器,分兩組:初始化命令字ICW1 ~ICW4---系統(tǒng)初啟時設(shè)定。操作命令字OCW1~OCW3—系統(tǒng)運行時,由應用程序設(shè)定(實現(xiàn)對中斷處理的動態(tài)管理和控制). The OCWs can be written into the 8259A anytime after initialization.(手冊P6-P7)。,,7個寄存器
41、的尋址問題:,規(guī)規(guī)定:A0,,8259A的處理部件:中斷請求寄存器IRR-8位寄存器+控制邏輯作用:接受并鎖存來自IR0~IR7的中斷請求信號。中斷服務寄存器ISR作用:保存當前正在處理的中斷請求。優(yōu)先級裁決器PR作用:把新進入的中斷請求和當前正在處理的中斷進行比較,以決定哪一個優(yōu)先級更高。,,處理過程:IR0~IR7上出現(xiàn)某一中斷請求信號->IRR對應位被置“1”->由IMR的相應位決定是否將其屏蔽(屏
42、蔽位=1,不通過;屏蔽位=0,通過)->中斷請求進PR->PR把新進入的中斷請求和當前正在處理的中斷進行優(yōu)先級比較->若新進入的中斷優(yōu)先級高,該中斷請求被送到CPU。若CPU的IF=1,CPU完成當前指令后,響應中斷,在 引腳上發(fā)出兩個負脈沖 (執(zhí)行兩個中斷響應總線周期,參見P463 圖13.16)。,圖13.9 8086的中斷響應總線周期,,,,,,,,,,,,,,,,,,,,T1
43、 T2 T3 T4 TI TI TI T1 T2 T3 T4,,,,,第一個總線周期,第二個總線周期,,三個空閑狀態(tài),,,,,,,,,,,,,中斷類型碼,CLK,____INTA,AD7~AD0,,,,8259A收到第一個負脈沖后:使IRR鎖存允許,不予接受IR0~IR7上的中斷請求信號;直到第二
44、個負脈沖結(jié)束后,才又使IRR鎖存禁止(輸入輸出透明)。使ISR的相應位置“1”,以便為優(yōu)先級裁決器以后的裁決提供依據(jù)。清除IRR的相應位。8259A收到第二個負脈沖后:把中斷類型碼寄存器的內(nèi)容(ICW2的內(nèi)容)送到D7~D0如果ICW4的AEOI位為1,則在第二個 脈沖結(jié)束時,將ISR中被第一個 脈沖置“1”的位清除(自動結(jié)束);否則,要等到中斷結(jié)束命令(EOI)發(fā)送后才能清除。,13.3.3 82
45、59A的工作方式,1. 設(shè)置優(yōu)先級的方式(1) 全嵌套方式(FULLY NESTED MODE)也稱固定優(yōu)先級方式。在這種方式下,由IRi引入的中斷請求具有固定的優(yōu)先級-IR0(最高)->IR7(最低).This mode is entered after initialization unless another mode is programmed.,,當一個中斷請求被響應時,ISR中的對應位ISn被置“1”,8259
46、A把中斷類型碼放到數(shù)據(jù)總線上,然后,進入中斷服務程序。一般情況下(除了“中斷自動結(jié)束”方式外),在CPU發(fā)出中斷結(jié)束命令(EOI)前,此對應位一直保持為“1”-封鎖同級或低級的中斷響應,但并不禁止比本級優(yōu)先級高的中斷響應-實現(xiàn)中斷“嵌套”。,,(2) 特殊全嵌套方式(SPECIAL FULLY NESTED MODE-SFNM)在處理某一級中斷時,不但允許優(yōu)先級更高的中斷請求進入,也允許同級的中斷請求進入。用于主從結(jié)構(gòu)的8259系
47、統(tǒng)中,將主片設(shè)置為“特殊全嵌套方式”。通過ICW4的“SFNM”位可以設(shè)置此種方式。(參見p464),,(3) 優(yōu)先級自動循環(huán)方式(AUTOMATIC ROTATION)優(yōu)先級是循環(huán)變化的(不希望有固定的優(yōu)先級差別)-一個設(shè)備的中斷服務完成后,其優(yōu)先級自動降為最低,而將最高優(yōu)先級賦給原來比它低一級的中斷請求。開始時,優(yōu)先級隊列還是:IR0->IR7,若此時出現(xiàn)了IR0請求,響應IR0并處理完成后,隊列變?yōu)椋篒R1,IR2
48、,IR3,IR4 ,IR5 ,IR6 ,IR7,IR0。若又出現(xiàn)了IR4請求,處理完IR4后,隊列變?yōu)椋篲_________________________________系統(tǒng)中是否采用“自動循環(huán)優(yōu)先級”,由操作命令字OCW2來設(shè)定。( 參見p466),,(4)優(yōu)先級特殊循環(huán)方式(SPECIFIC ROTATION)與“優(yōu)先級自動循環(huán)方式”相比,只有一點不同,即可以設(shè)置開始的最低優(yōu)先級。例如,設(shè)定IR4為最低優(yōu)先級,那么I
49、R5就是最高優(yōu)先級,其余各級按循環(huán)方法類推。,,2. 屏蔽中斷源的方式(中斷屏蔽方式)普通屏蔽方式通過對中斷屏蔽寄存器(IMR)的設(shè)定,實現(xiàn)對相應位為“1”的中斷請求的屏蔽??赏ㄟ^OCW1使IMR的一位或幾位置“1”。*特殊屏蔽方式(SPECIAL MASK MODE)作用:P462實現(xiàn):,,3. 中斷結(jié)束方式(END OF INTERRUPT-EOI)(1)中斷自動結(jié)束方式(AUTOMATIC-AEOI方式)在第二個
50、 后沿,即完成把對應的ISR位復位。注意:AEOI方式是在中斷響應后,而不是在中斷處理程序結(jié)束后將ISR位清0。這樣,在中斷處理過程中,8259A中就沒有“正在處理”的標識。此時,若有中斷請求出現(xiàn),且IF=1,則無論其優(yōu)先級如何(比本級高、低或相同),都將得到響應。尤其是當某一中斷請求信號被CPU響應后,如不及時撤銷,就會再次被響應-“二次中斷”。,,所以,AEOI方式適合于中斷請求信號的持續(xù)時間有一定限制以及不出現(xiàn)中斷
51、嵌套的場合。通過ICW4可以設(shè)置AEOI方式(AEOI=1)。,,(2)一般(常規(guī))中斷結(jié)束方式適合于全嵌套方式。實現(xiàn):在中斷服務程序結(jié)束時,向8259A發(fā)常規(guī)中斷結(jié)束命令(OCW2:EOI=1,SL=0,R=0)例:MOV AL,20H; OCW2=20H OUT 20H,AL; 端口地址=20H(偶地址)在全嵌套方式下,ISR中最高優(yōu)先級的置“1”位,正對應于當前正在處理的中斷,將其清“0”,就完
52、成了當前正在處理中斷的結(jié)束操作。,IR0,IR7,,(3)特殊中斷結(jié)束方式(SPECIFIC EOI-SEOI)在非全嵌套方式下,無固定的優(yōu)先級序列(使用設(shè)置優(yōu)先權(quán)命令或特殊屏蔽方式),此時,根據(jù)ISR的內(nèi)容就無法確定剛剛所響應(處理)的中斷。這種情況下,就不能用上述的EOI方式進行中斷結(jié)束處理,而必須用特殊的中斷結(jié)束命令SEOI--用OCW2:EOI=1,SL=1,R=0,L2~L0.由L2~L0指定清除ISR中的哪一位。,,4
53、. 中斷觸發(fā)方式電平觸發(fā)方式:由IRi上的有效電平來觸發(fā)“中斷請求觸發(fā)器”。邊沿觸發(fā)方式:由IRi上由低電平向高電平的跳變來觸發(fā)“中斷請求觸發(fā)器”。由ICW1的LTIM位可以設(shè)置中斷觸發(fā)方式。,,5. 連接系統(tǒng)總線的方式緩沖方式(ICW4的BUF=1)8259A通過總線驅(qū)動器(如8286)和數(shù)據(jù)總線相連。在緩沖方式下,8259A的 作為輸出( 有效),此時,由ICW4的M/S位來定義(標識)
54、本8259A是主片還是從片。非緩沖方式(ICW4的BUF=0)即8259A直接與數(shù)據(jù)總線相連在“非緩沖方式下”,8259A的 作為輸入( 有效) 此時,由 端來標識本8259A是主片還是從片。在“非緩沖方式下”,ICW4的BUF=0,M/S位無意義。,,“中斷查詢”方式特點:既有中斷的特點,又有查詢(Polling)的特點。外設(shè)仍然向8259A發(fā)中斷請求信號,要求CPU服務
55、。CPU的IF=0,不響應外部的中斷請求(對CPU的中斷請求信號不起作用)此時,CPU需要用軟件查詢方法來確認中斷源,從而實現(xiàn)對設(shè)備的服務先向8259A發(fā)查詢命令(poll command)OCW3:,P,,,緊接著執(zhí)行一條讀指令(IN指令),讀出專門的“中斷狀態(tài)字”:當8259A收到P=1的查詢命令后,在下一個 信號將使ISR的相應位置“1”,就像收到了 一樣,并把上述的“中斷狀態(tài)字”送到數(shù)據(jù)總線上,
56、由CPU讀入AL。,13.3.5 8259A的控制字及編程使用,8259A的控制寄存器可分為兩組,一組是初始化命令字ICW1~ICW4,另一組是操作命令字OCW1~OCW3。每片8259A具有兩個內(nèi)部端口地址,一個偶地址端口(A0 = 0),一個奇地址端口(A0 = 1),其他高位地址碼由用戶定義,用來產(chǎn)生8259A的片選信號。,1. 初始化命令字,初始化命令字用來對8259A初始化,包括ICW1~ICW4 4個初始化命令字。(
57、1) ICW1ICW1 使用偶地址端口(A0 = 0),其中D4 位為特征位(標志位),此時該位固定為1,表示當前寫入的是ICW1 (OCW1 也用偶地址端口寫入,但OCW1 的D4 位為0)。ICW1 的格式如下:,初始化命令字 ICW1格式,,解釋: IC4 規(guī)定初始化時是否要寫入ICW4。IC4 = 0表示不寫入ICW4,IC4 = 1表示寫入ICW4。SNGL規(guī)定8259A的用法。SNGL=0表示為級聯(lián)方式,同時要寫
58、入ICW3 ;SNGL=1表示為單片方式,不要寫入ICW3。ADI為配合8085工作時選用CALL指令字節(jié)數(shù)而設(shè),80x86不用這一位。LTIM規(guī)定中斷檢測方式。LTIM=0表示邊沿觸發(fā),LTIM=1表示電平觸發(fā)。A5~A7 在8085微處理器中用這幾位作中斷向量字,80x86不用這三位。,,(2) ICW2ICW2 使用奇地址端口(A0 = 1),緊跟在ICW1之后設(shè)置。ICW2 的格式如下:,A15/T7,A14/T6,A
59、13/T5,A12/T4,A11/T3,A10,A9,A8,1,ICW2,A0 D7 D6 D5 D4 D3 D2 D1 D0,初始化命令字 ICW2格式,,對于80x86系統(tǒng),ICW2的D7~D3位用來確定中斷類型碼N的高5位T7~T3位,低3位D2~D0未定義;對于非80x86系統(tǒng),ICW2的8位全部用來
60、作中斷向量地址的高8位A15~A8。在80x86系統(tǒng)中,8259A在中斷響應周期的第二個總線周期內(nèi),從數(shù)據(jù)總線上向CPU送出8位中斷類型碼N的值。其中高5位D7~D3即T7~T3,由ICW2在初始化編程時設(shè)定;低3位D2~D0則由8259A根據(jù)中斷進入的引腳序號而自動填入,從IR0~IR7依次為000~111。,,例:若將 ICW2 初始化為28H , 則在中斷響應總線周期從數(shù)據(jù)總線上向CPU送出的對應于 IR2的中斷類型碼為
61、2AH,對應于 IR3的中斷類型碼為 等。,,(3) ICW3ICW3 只在級聯(lián)方式中使用,端口地址為奇地址,其格式如下:,初始化命令字 ICW3格式,,對于主片8259A,ICW3 表示哪些IRi 引腳接有從片8259A。接有從片8259A的相應S位置1,否則置0。 例如,若IR2、IR6 上接有從片8259A,且其他IR引腳未接有從片8259A,則ICW3 為01000100。,,對于從片8259A,
62、用ICW3 中的ID2~ID0 表示本8259A接在主片8259A的哪一根IR引腳上。與IR0~IR7 分別對應的ID碼為000~111。例如,若從片8259A接在主片8259A的IR6 上,則從片8259A的ICW3 應設(shè)定為: ID2=1,ID1=1,ID0=0,,(4) ICW4在80x86系統(tǒng)中必須設(shè)置ICW4,端口地址為奇地址,其格式如下:,初
63、始化命令字 ICW4格式,,其中,μPM規(guī)定是哪種系統(tǒng)。μPM = 0表示是8080/8085系統(tǒng),μPM = 1表示是80x86系統(tǒng)。AEOI表示中斷結(jié)束方式。AEOI=0為普通EOI方式,AEOI=1表示自動EOI方式。BUF表示本8259A工作于緩沖方式還是非緩沖方式。BUF=1為緩沖方式,BUF=0為非緩沖方式。,,在緩沖方式下,SP/EN引腳作為輸出能使信號給總線收發(fā)器。此時,由M/S位來定義本8259A是主片還是從片。所
64、謂8259A工作于緩沖方式,是指在多片8259A級聯(lián)的大系統(tǒng)中,8259A通過總線收發(fā)器(驅(qū)動器)和數(shù)據(jù)總線相連。M/S位用來在緩沖方式下規(guī)定本8259A是主片還是從片。M/S=0表示是從片,M/S=1表示是主片。在非緩沖方式(BUF=0)下,M/S位無效。SFNM表示中斷嵌套方式。SFNM=0表示全嵌套方式,SFNM=1表示特殊全嵌套方式。,8259A的初始化流程,8259A的初始化命令字(ICW)是在加電之后由CPU按特定的順
65、序?qū)懭氲摹R簿褪钦f,各初始化命令字的識別一方面依賴于地址信號A0和初始化命令字中的特定標識位,另一方面也與寫入的先后次序有關(guān)。8259A的初始化順序及相應的尋址標志如圖13.17所示。,,① 在初始化操作過程的開頭,總要依次寫入命令字ICW1和ICW2。② 只有當ICW1中的SNGL位=0,才需寫入ICW3。對于主片和從片均需寫入ICW3,而且它們的格式不同。③ 只有當ICW1中的IC4=1時,才需寫入ICW4。對于80x8
66、6系統(tǒng),ICW4總是需要設(shè)置的。,,在系統(tǒng)中,單片8259A與80x86 CPU配置時,初始化要寫入的預置命令字是:ICW1、ICW2、ICW4 。而級聯(lián)系統(tǒng)要寫入預置命令字是:ICW1、ICW2、ICW3和ICW4。初始化過程結(jié)束,8259A進入所設(shè)置的狀態(tài)后,才能寫入操作命令字(OCW)。,2. 操作命令字,在8259A工作期間,可通過設(shè)置操作命令字來修改或控制8259A的工作方式。需要說明的是,與初始化命令字ICW1~I
67、CW4需要按規(guī)定的順序進行設(shè)置不同,操作命令字OCW1~OCW3 的設(shè)置沒有規(guī)定其先后順序,使用時可根據(jù)需要靈活選擇不同的操作命令字寫入到8259A中。當然,也需注意奇、偶端口地址及有關(guān)標識位的規(guī)定。,,(1) OCW1OCW1 為中斷屏蔽操作命令字,用來實現(xiàn)中斷屏蔽功能,要求寫入8259A的奇地址端口(A0=1)。OCW1 的內(nèi)容被直接置入中斷屏蔽寄存器IMR中,其格式如下:,操作命令字OCW1,,其中M0~M7 分別對應825
68、9A的IR0~IR7。當OCW1 中的Mi 位為1時,則相應的IRi 的中斷請求就被屏蔽。例如, 若通過OCW1向中斷屏蔽寄存器寫入代碼11110000,將導致中斷輸入IR7~IR4被屏蔽掉,而IR3~IR0撤銷屏蔽。,,(2) OCW2OCW2 用來設(shè)置優(yōu)先級循環(huán)方式和中斷結(jié)束方式。占用偶地址端口(A0=0)。OCW2 的格式如下:,操作命令字OCW2,,其中,D4D3= 00是OCW2 的標識位。R表示中斷優(yōu)先級是否按循
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第5章 中斷系統(tǒng).PDF
- 第5章 中斷系統(tǒng).PDF
- 第7章中斷
- 第8章中斷技術(shù)-
- 第13章 內(nèi)能
- 第13章.doc
- 第13章 典型光學系統(tǒng)
- 第5章at89s51單片機的中斷系統(tǒng)
- 第13章 波動光學
- 第13章 位運算
- 第13章團隊管理
- 第13章作業(yè).pdf
- 第13章內(nèi)分泌系統(tǒng)
- 第13講 第3章 gsm數(shù)字蜂窩移動通信系統(tǒng)
- 第13章文件操作
- 第13章實數(shù)教案
- 第13章-綜合布線系統(tǒng)工程概預算
- 第13章綜合布線系統(tǒng)工程概預算
- 第13章課后練習
- 第13章熱力學
評論
0/150
提交評論