第九章中斷控制器及DMA控制器_第1頁
第九章中斷控制器及DMA控制器_第2頁
第九章中斷控制器及DMA控制器_第3頁
第九章中斷控制器及DMA控制器_第4頁
第九章中斷控制器及DMA控制器_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第九章中斷控制器及DMA控制器

中斷的概念可編程中斷控制器Intel8259ADMA控制器9.1中斷的概念

9.1.1中斷源

中斷源:引起中斷的條件。PC機的中斷源通常有以下幾種:1.輸入、輸出設(shè)備

2.實時時鐘

3.故障源

4.為程序調(diào)試而設(shè)置中斷源

中斷是指計算機的CPU在執(zhí)行主程序時,收到了外部的或內(nèi)部的中斷請求,因而暫時中止主程序的執(zhí)行,轉(zhuǎn)去執(zhí)行一段預(yù)先編制好的中斷服務(wù)程序來處理這一中斷請求,待處理完畢之后,又返回主程序接著被中斷處繼續(xù)執(zhí)行,這樣的一個過程就稱為中斷。NMIINTR中斷邏輯軟件中斷指令溢出中斷除法錯單步中斷非屏蔽中斷請求中斷控制器8259APIC8086/8088CPU內(nèi)部邏輯斷點中斷可屏蔽中斷請求n430128086/8088中斷源類型:┇┇00000H003FFH9.1.2中斷方式工作的優(yōu)點

1.并行操作2.實現(xiàn)實時處理9.1.3中斷系統(tǒng)應(yīng)具有的功能

1.能夠?qū)崿F(xiàn)中斷及返回

(1)CPU中斷允許控制:執(zhí)行指令STI置IF=1

(2)斷點自動保護:自動保護斷點處的程序地址(3)自動地轉(zhuǎn)到中斷服務(wù)程序:

CPU能夠提供中斷處理程序的入口地址,轉(zhuǎn)入中斷服務(wù)程序進行中斷處理。(4)正確地返回原程序:自動恢復(fù)斷點,轉(zhuǎn)原程序。

2.實現(xiàn)優(yōu)先級排隊對多個中斷源同時提出中斷請求時,根據(jù)任務(wù)的輕重緩急,確定一個中斷優(yōu)先級,級別高的中斷請求先被響應(yīng)。

3.中斷嵌套當(dāng)CPU響應(yīng)某一中斷請求時,出現(xiàn)級別更高的中斷申請,允許高級別的中斷請求中斷正在執(zhí)行的低級別中斷處理,CPU為高級中斷服務(wù)。9.2可編程中斷控制器Intel8259A

特點:協(xié)助CPU實現(xiàn)對外部中斷請求的管理具有優(yōu)先級排隊和向CPU發(fā)中斷的功能能管理8個外部中斷源采用級聯(lián)方式,可擴展8片8259A構(gòu)成64級主從式中斷系統(tǒng)??梢杂卸喾N功能和工作的方式9.2.18259A的引腳功能與內(nèi)部結(jié)構(gòu)一、引腳功能

D0~D7

數(shù)據(jù)線,雙向,與CPU進行數(shù)據(jù)通信。/WR

寫控制信號輸入端,低電平有效。/RD

讀控制信號輸入端,低電平有效。/CS

片選輸入端,低電平有效。A0

地址線輸入端,提供奇地址和偶地址,用于選擇內(nèi)部寄存器。PC機8259的兩個端口地址為:20H,21H。IR0∽IR78級中斷申請輸入端,上升沿或高電平觸發(fā)有效。INT

中斷請求信號輸出端/INTA

中斷響應(yīng)信號輸入端。CPU在中斷響應(yīng)后,向8259A連續(xù)發(fā)兩個中斷響應(yīng)脈沖。/SP//EN

級連/緩沖允許信號線。在級連工作方式中,該端信號方向為輸入,若輸入高電平則本片為“主”8259A,若輸入低電平則本片為“從”8259A。在緩沖器工作方式中,該端信號方向為輸出,輸出為允許緩沖器選通信號;但在此方式下,該端不能用于表示主從關(guān)系,而由ICW4中的M/S位來設(shè)置主從關(guān)系。CAS0~CAS2

級聯(lián)控制信號。對于“主”8259A,CAS0~CAS2為輸出信號,對于“從”8259A,CAS0~CAS2

為輸入信號。二、8259A內(nèi)部結(jié)構(gòu)1.中斷請求寄存器(IRR)用于接收8位由外部引腳IR0-IR7輸入的中斷請求。當(dāng)IRi端由高電平或上升沿觸發(fā)時,IRRi位置“1”,沒有中斷申請的端,與IRR對應(yīng)位清“0”。2.中斷服務(wù)寄存器(ISR)用來記錄正在服務(wù)中的所有中斷請求。當(dāng)IRi中斷請求被響應(yīng)時,ISR中相應(yīng)位ISRi被置“1”,并將一直保持到該級中斷處理過程結(jié)束或處理過程中被清除為止。在多重中斷時,ISR中可能有多位同時被置“1”。3.中斷屏蔽寄存器(IMR)用來屏蔽已被鎖存在IRR中的任何一個中斷請求。對所有要屏蔽的中斷請求線,IMR相應(yīng)位置“1”,即請求不能進入PR去判優(yōu)。4.優(yōu)先級判別器(PR)用于判別已進入IRR中的各中斷請求的優(yōu)先級別,或與ISR中正在服務(wù)的中斷比較優(yōu)先級。由PR決定是否響應(yīng)當(dāng)前IRR請求級。若PR判定出新進入的中斷請求比當(dāng)前鎖存在ISR中的中斷請求優(yōu)先級為高時,則通過邏輯使8259A的INT輸出端為“1”,從而向CPU發(fā)出一個新的中斷請求。9.2.28088/8086的外部中斷響應(yīng)過程

一、8088/8086與中斷有關(guān)的引腳功能

1.非可屏蔽中斷申請輸入端NMI

NMI不受中斷允許標(biāo)志位IF的控制。只要NMI端有中斷請求,CPU就在當(dāng)前指令執(zhí)行結(jié)束后立即響應(yīng)。常用于緊急故障處理或緊迫事件的處理。

2.可屏蔽中斷申請輸入端INTR

INTR受中斷標(biāo)志位IF狀態(tài)的控制,當(dāng)CPU執(zhí)行開中斷指令STI(IF=1)時,CPU接受外部中斷請求。當(dāng)CPU執(zhí)行關(guān)中斷指令CLI(IF=0)時,CPU不接受外部的中斷請求,即屏蔽所有外部硬件的中斷請求。

3.可屏蔽中斷響應(yīng)輸出端/INTA

CPU中斷響應(yīng)頭兩個總線周期中,/INTA輸出兩個響應(yīng)負脈沖。第一個負脈沖通知外設(shè)(8259)中斷得到允許,清相應(yīng)的IRR位,置相應(yīng)的ISR位;第二個負脈沖,控制外設(shè)(8259)接口向數(shù)據(jù)總線送中斷類型碼n。對于可屏蔽的外部中斷INTR,中斷類型號則由8259提供。8259的中斷類型號用輸出指令寫入中斷類型號寄存器中,當(dāng)CPU響應(yīng)中斷,發(fā)第二個脈沖時,將中斷類型號寄存器中的n送到數(shù)據(jù)總線,此時CPU讀數(shù)據(jù)總線,而獲得該中斷類型號。

二、外部中斷過程

1.當(dāng)一條或幾條中斷請求線(IR0∽IR7)變成高電平或上沿脈沖時,則使IRR相應(yīng)位置“1”。2.可用IMR對IRR進行屏蔽,但至少有一位是中斷允許的。中斷請求狀態(tài)通過優(yōu)先級電路PR分析,把當(dāng)前未屏蔽的最高優(yōu)先級的中斷請求從INT輸出,送至CPU的INTR。3.若CPU是處于開中斷狀態(tài),中斷允許標(biāo)志IF=1,則在CPU執(zhí)行完當(dāng)前指令后,就可以響應(yīng)中斷,8086CPU將從端向8259A的端回送兩個負脈沖。4.8259A在收到CPU的第1個中斷響應(yīng)脈沖后,將ISR中的中斷優(yōu)先級最高的那一個位置“1”,而將IRR的相應(yīng)位復(fù)位成“0”。5.8259A在收到第2個脈沖后,將把對應(yīng)的中斷類型號n送到數(shù)據(jù)線,CPU自動讀入數(shù)據(jù)線得到中斷類型號n。6.CPU自動地將標(biāo)志位寄存器FLAGS內(nèi)容入棧,并清標(biāo)志位IF和TF為零,關(guān)閉可屏蔽中斷和禁止單步中斷。7.把當(dāng)前CS及IP的內(nèi)容(斷點地址)入棧:

SPSP-2,(SP)CS;SPSP-2,(SP)IP,8.CPU根據(jù)中斷類型號n,指向中斷矢量表4n地址處,從矢量表中取出中斷處理程序的段地址值和偏移值送入CS和IP中,轉(zhuǎn)入中斷處理程序執(zhí)行:

IP(4n+1,4n),CS(4n+3,4n+2)IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG中斷返回后

9.發(fā)中斷響應(yīng)結(jié)束命令若在自動結(jié)束中斷(AEOI)方式下,8259A在第2個INTA脈沖結(jié)束時,將正在服務(wù)中斷的ISR中的對相位自行復(fù)位成“0”;若是非自動結(jié)束中斷方式(EOI),則該位的“1”狀態(tài)將一直保持到中斷過程結(jié)束,由CPU發(fā)EOI命令才能復(fù)位成“0”。10.在中斷處理程序中應(yīng)有一個開中斷指令STI,使IF=1,以準備接收新的中斷。若開中斷指令STI放在中斷服務(wù)程序的開始處,則可以實現(xiàn)中斷嵌套。11.中斷處理程序完成后,執(zhí)行IRET:IP←(SP),SP←SP+2,CS←(SP),SP←SP+2,Flags←(SP),SP←SP+29.2.38259A中斷管理方式一、中斷觸發(fā)方式1.電平觸發(fā)方式

當(dāng)IR0∽IR7出現(xiàn)高電平時,表示有中斷請求。高電平要持續(xù)到8259A收到第一個中斷響應(yīng)脈沖之前。當(dāng)中斷服務(wù)結(jié)束,ISR的對應(yīng)位被清0之前,IRi的高電平必須撤消,否則可能引起第二次中斷。2.邊沿觸發(fā)方式

IR0∽IR7出現(xiàn)低電平到高電平的躍變,表示有中斷請求。在CPU響應(yīng)中斷,8259A收到第一個中斷響應(yīng)脈沖之前,同一個輸入端不應(yīng)當(dāng)出現(xiàn)第二次躍變,否則第一次中斷請求可能被丟失。二、中斷屏蔽方式1.常規(guī)屏蔽方式將中斷屏蔽寄存器的某一位置1,即可屏蔽相應(yīng)級別的中斷請求。

常規(guī)屏蔽方式,當(dāng)一個中斷被響應(yīng)時,禁止同級和較低級別的中斷請求。若開放同級和較低級別的中斷請求,則要將屏蔽寄存器中本級中斷的對應(yīng)位置“1”,但這樣不會屏蔽中斷服務(wù)寄存器中的本級標(biāo)志位,8259A還會據(jù)此禁止優(yōu)先級別比它低的中斷請求。2.特殊屏蔽方式特殊屏蔽的功能:當(dāng)屏蔽寄存器中本級中斷的對應(yīng)位置“1”,會同時屏蔽中斷服務(wù)寄存器中的本級標(biāo)志位,真正開放了較低級別的中斷。

一、嵌套中斷方式

1.完全嵌套方式

完全嵌套簡稱全嵌套方式,在這種方式下,中斷請求按IR0到IR7處理,其中IR0中斷的優(yōu)先級最高,IR7的優(yōu)先級最低。在全嵌套方式下,只允許高一級中斷進入嵌套,在低級中斷服務(wù)程序中能響應(yīng)高一級中斷,不允許低級中斷和同級中斷進入嵌套。

2.特殊全嵌套方式

本方式,主要用于多片8259A系統(tǒng)中的主片8259A。因為主片的某個中斷請求輸入引腳要接另一從片8259A的中斷請求輸出瑞,而一個從片8259A又接8個外部中斷源,對于主片8259A的輸入端而言,從片輸入引腳是同一級,但對于從片8259A的8個輸入端而言是不同級的,特殊嵌套方式,使從片8259A的各個中斷輸入端的高一級中斷能夠進入低級中斷的嵌套。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:從片的INT被主片封鎖,故更高級別的IR0-IR2中斷也無法得到響應(yīng)特殊嵌套方式:因主片不封鎖從片的INT,故級別高的IR0-IR2中斷可以得到響應(yīng)。(但IR3-IR7仍被本從片封鎖)C.假定IR3發(fā)生中斷,并獲得服務(wù)一般嵌套方式:IR4的中斷被服務(wù)時,這些中斷將被封鎖。B.特殊嵌套方式:IR4的中斷被服務(wù)時,只封鎖IR5-IR7。A.INTE.從8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式與特殊全嵌套方式的區(qū)別

去CPU

主片為特殊全嵌套方式:

當(dāng)處理一級中斷時,如果有同級的中斷請求,也會給予響應(yīng)。

否則:當(dāng)從片有中斷請求,若主片是普通全嵌套方式,則會屏蔽從片上它優(yōu)先級高的中斷請求。因為從片上的8個IRi變成了主片的同一級。

而特殊全嵌套方式,對來自同一從片的較高優(yōu)先級請求不會屏蔽。四、中斷優(yōu)先級管理方式1.固定優(yōu)先級方式(1)IR0∽IR7的優(yōu)先級固定,IR0為最高級,IR1次之,IR7為最低級。(2)CPU響應(yīng)某一級中斷時,8259A將ISR中與該中斷源對應(yīng)的位置1,并自動禁止同級和較低級的中斷請求。2.優(yōu)先級循環(huán)方式

IR0∽IR7的中斷級別不是固定的。當(dāng)任一中斷服務(wù)程序結(jié)束后,該中斷源就自動降為最低級,而原先比它低一級的中斷源自動升為最高級

IR0IR1IR2IR3IR4IR5IR6IR7初始

五、中斷結(jié)束方式(EOI)在對IRi中斷源的中斷服務(wù)結(jié)束時,把ISR寄存器中斷服務(wù)標(biāo)志位ISRi清0的方式:1.自動EOI方式自動中斷結(jié)束方式的功能是:8259A在收到第2個中斷響應(yīng)(/INTA)信號之后,自動把ISR中置1的最高優(yōu)先級服務(wù)標(biāo)志ISRi位清0,但實際上中斷還沒有結(jié)束。若在IRi服務(wù)程序執(zhí)行過程中,如果有新的中斷請求,不論它的級別高低,只要CPU是處于開中斷狀態(tài),都將中斷IRi服務(wù)程序,出現(xiàn)“重復(fù)嵌套”。為了防止“重復(fù)嵌套”,服務(wù)程序必須在關(guān)中斷的前提下執(zhí)行。2.常規(guī)EOI方式在服務(wù)程序執(zhí)行IRET指令前,向8259A送一個“常規(guī)中斷結(jié)束”命令字。8259A收到EOI命令字之后,把ISR中優(yōu)先級最高的置1位清0。適合全嵌套方式下結(jié)束中斷。但是EOI不適合在特殊屏蔽方式應(yīng)用,因為特殊屏蔽方式下,正在執(zhí)行的高級中斷源服務(wù)程序可能被“掛起”,而響應(yīng)新的低級中斷。如果在低級服務(wù)程序中發(fā)出常規(guī)EOI命令,它所清0的不是本身的ISRi位,而是級別比它高的ISRi置1位。所以,在特殊屏蔽方式,應(yīng)使用特殊中斷結(jié)束命令。3.特殊中斷結(jié)束方式在服務(wù)程序執(zhí)行IRET之前,向8259A送一個“特殊中斷結(jié)束”命令字。8259A根據(jù)命令字L2∽L0位的編碼,把ISR中的指定位清0。該命令可在任何情況下使用。4.自動EOI,優(yōu)先級循環(huán)方式

8259A收到第二個中斷響應(yīng)信號時,自動把ISR中置1的最高優(yōu)先級ISRi位清0,并且優(yōu)先級按循環(huán)方式進行。5.常規(guī)EOI,優(yōu)先級循環(huán)方式

8259A收到此命令后,把ISR中最高優(yōu)先級置1位清0,同時完成優(yōu)先級循環(huán)。6.特殊EOI,優(yōu)先級循環(huán)方式“特殊EOI,優(yōu)先級循環(huán)”可將指定的ISRi位清0,并完成優(yōu)先級循環(huán)。

不管是正常、還是特殊的中斷結(jié)束方式,對于級聯(lián)系統(tǒng)中,在從片的中斷處理程序快結(jié)束時,必須發(fā)送兩次EOI:一次給從片,一次給主片(向從片發(fā)EOI后,須檢查從片中的所有申請中斷的源是否全服務(wù)過。只有都服務(wù)過了,才能向主8259送另一個EOI命令)。在從片的中斷處理程序快結(jié)束時,應(yīng)給8259A發(fā)EOI命令,方法是:(a)向從片發(fā)EOI;

(b)讀從片的ISR內(nèi)容:若為0,表示從片只有一個中斷源申請中斷,再向主片發(fā)一個EOI命令。若不為0,表示從片存在兩個以上的中斷源在申請中斷,則不應(yīng)發(fā)EOI給主片。六、總線連接方式1.緩沖方式緩沖方式是8259A通過總線驅(qū)動器和系統(tǒng)數(shù)據(jù)線相連,此時/SP//EN端為輸出。在8259A輸出中斷類型號的時候,/SP//EN

輸出一個低電平,作為總線驅(qū)動器的啟動信號。2.非緩沖方式非緩沖方式,8259A數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)線直接相連,/SP//EN為輸入端。當(dāng)系統(tǒng)只有一片8259A時,/SP//EN

接+5V,多片級連時,主8259A/SP//EN

接+5V,從8259A/SP//EN接地。級聯(lián)(中斷最多擴展到64級)一片8259A只能接收8級中斷,當(dāng)超過8級時,可用多片8259A級聯(lián)使用,構(gòu)成主從關(guān)系。n片8259A可支持7n+1個中斷源;連線要求:.主8259A:級聯(lián)信號CAS2~

CAS0是輸出信號;SP端為“1”.從8259A:級聯(lián)信號CAS2~

CAS0是輸入信號;SP端為“0”,從8259A的INT接到主的中斷輸入端IR上例子:3片級聯(lián)七、中斷查詢方式中斷源超過64個或一個中斷服務(wù)程序中n個模塊分別為n個中斷設(shè)備服務(wù)時,8259A可以工作在中斷查詢方式,CPU用軟件查詢確認中斷源,外設(shè)靠中斷方式請求服務(wù)。中斷查詢方式系統(tǒng)先關(guān)中斷,然后用OUT指令將操作命令字OCW3中的P位置1發(fā)送到8259A的偶地址端口,發(fā)出了查詢命令,組成查詢字。如果在這以前,正好有外設(shè)發(fā)出過中斷請求,接著用輸入指令從偶地址端口讀取8259A的查詢字,則ISR寄存器中相應(yīng)的ISRn位置“1”,查詢字指示當(dāng)前中斷服務(wù)寄存器中優(yōu)先級最高的一級中斷,CPU轉(zhuǎn)到優(yōu)先級最高的一級中斷服務(wù)程序,為指定的外部設(shè)備進行服務(wù)。9.2.48259A初始化編程8259內(nèi)部有7個寄存器:ICW1~ICW4為初始化寄存器組,OCW1~OCW3為工作寄存器組。

一、初始化命令字ICW的格式1.初始化命令字ICW1

(A0=0

I3I4ICW1

芯片控制

ICW2

中斷類型號

ICW3

主從片關(guān)系

ICW4

方式控制處理部分控制部分00000000

ISR在服務(wù)寄存器PR優(yōu)先級判別器IRR中斷請求寄存器00000000

中斷屏蔽寄存器IMROCW2

10010100

00

01

OCW3OCW18259A中斷控制器用于確定級聯(lián)方式和觸發(fā)方式A0=0

表示ICW1的端口為偶地址,以下各寄存器的本項依次類推。D4=1ICW1的特征;D0(IC4)后邊是否要設(shè)置ICW4。若DO=0,則不要設(shè)置;D0=1,則要設(shè)置。而8088/8086是要設(shè)置ICW4的,所以D0=1;D1(SNGL)系統(tǒng)中使用單片/多片8259A。D1=1為單片;D1=0為多片。PC/XT中設(shè)定為單片,所以D1=1;D2(ADI)地址間距(8085)。8088不用,可為0;也可為1。D3(LTIM)中斷請求信號類型?!?”為邊沿觸發(fā)方式;“1”為電平觸發(fā)方式。D5∽D7(8085)

8088不用,可為“0”,也可為“1”。

2.ICW2(中斷類型號,A0=1)提供中斷類型號

ICW2為中斷類型號初始化命令字,用戶可用該命令字定義中斷矢量的高5位碼D7∽D3(中斷矢量的基值)

。中斷類型號的后3位D2~D0,由8259A根據(jù)中斷請求的IRi引腳號自動插入(見表9.2.1),則在初始化時,可以寫入任意值。3.ICW3(A0=1)用于確定主片和從片的級聯(lián)狀態(tài)ICW3是主/從片的初始化命令字,只有在ICW1的D1位(SNGL)=0時,即一個系統(tǒng)中包含多片8259A時,才設(shè)置ICW3。對于主片來講,D7~D0與IR7~IR0引腳中是否連有從片相對應(yīng)。若對應(yīng)位為1,則引腳上連有從片;反之,沒有連從片。

從片初始化時,ICW3中D7~D3不用,設(shè)為0。D2~D0為從片的識別碼,即指示該片接于主片IR7~IR0相應(yīng)的輸入端,級聯(lián)時從片的編碼如表9.2.2。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7T6 T5 T4 T3

x

x

xA0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7S6 S5 S4 S3

S2

S1

S0A0 D7 D6 D5 D4 D3 D2 D1 D0

1 00 0 0 0

ID2 ID1 ID04.ICW4

(A0=1

)完成中斷管理方式的設(shè)定只有當(dāng)ICW1的D0=1時才有必要設(shè)置ICW4。D7∽D5=000ICW4的特征。D4(SFNM)

嵌套方式。D4=1表示8259A工作于特殊全嵌套方式,用于多片8259A系統(tǒng)中;D4=0,工作于全嵌套方式或其它。D3(BUF)連接系統(tǒng)總線方式。D3=1,為緩沖方式,8259A的D7∽D0通過總線驅(qū)動器與系統(tǒng)的數(shù)據(jù)總線相連;D3=0為直接連接方式,8259A的D7∽D0直接與系統(tǒng)的數(shù)據(jù)總線相連。D2(M/S)選擇主片/從片。因當(dāng)D3=1為緩沖方式時,不能用/來識別主片/從片,所以用該位進行識別。D2=1,本片為主片;D2=0為從片。當(dāng)D3=0時,則D2不起作用。D1(AEOI)設(shè)置中斷結(jié)束方式。D1=1設(shè)置中斷自動結(jié)束方式。D1=0中斷非自動結(jié)束方式。D0(μPM)選擇CPU系統(tǒng)。D0=1,表示當(dāng)前處于8086/8088系統(tǒng);D0=0,表示處于8080/8085系統(tǒng)。 D7 D6 D5D4 D3 D2 D1 D0

00 0SFNM BUF M/S AEOI 1二、8259A的初始化編程1.寫入初始化命令字順序向8259A初始化命令字的順序,如圖9.2.8所示。第一個命令字ICW1寫入8259A的偶地址端口,而ICW2、ICW3、ICW4要按順序?qū)懭?259A的奇地址端口,編程時順序不能顛倒。2.初始化編程的主要內(nèi)容設(shè)定主要內(nèi)容:中斷請求信號的類式;單片/多片方式;中斷類型號;優(yōu)先排隊規(guī)則;中斷結(jié)束方式。寫ICW1寫ICW2級連?寫ICW3需ICW4?寫ICW4NNYY初始化結(jié)束3.初始化編程舉例例9.2.1PC/XT機的BIOS對8259A初始化的條件是:單片8259A,8088模式,與系統(tǒng)連接采用緩沖方式,優(yōu)先級設(shè)置為全嵌套中斷方式,中斷請求信號為邊沿觸發(fā),中斷類型號的基值=00001B。8259A的端口地址為:20H,21H。初始化程序段如下:MOVAL,13H;單片8259A,邊沿觸發(fā),要ICW4OUT20H,AL;初始化ICW1MOVAL,08H;8259A中斷向量高5位為00001BOUT21H,AL;初始化ICW2MOVAL,09H;8088模式、緩沖方式、全嵌套OUT21H,AL;初始化ICW4例9.2.2PC/AT中,硬件中斷管理采用兩片8259A,各輸入端中斷源如表9.2.3。從片的INT與主片IR2相連,系統(tǒng)中主片8259A的端口地址為20H和21H,從片口地址為OAOH和OA1H,系統(tǒng)對主片8259A初始化的要求是:主片:邊沿觸發(fā)方式,級聯(lián)但無緩沖,起始中斷類型號為08H(IRO),正常的中斷結(jié)束,全嵌套方式。從片:起始中斷類型號為70H,其它條件與主片相同。主片初始化程序段:

MOVAL,00010101B;ICW1,邊沿觸發(fā),要ICW4,級連要ICW3OUT20HAL;寫入ICW1MOVAL,00001000H;ICW2,設(shè)置IRO的中斷類型號為08HOUT21HAL;寫入ICW2MOVAL,00000100B;ICW3,主片8259A的IR2接從片INTOUT21HAL;寫人ICW3MOVAL,00000101B;ICW4,不用緩沖,正常中斷結(jié)束,全嵌套方式

OUT21HAL;寫入ICW4從片初始化程序段:

MOVAL,0001000lB;ICW1,邊沿觸發(fā),要ICW4,級連要ICW3OUT0A0H,AL;寫入ICW1MOVAL,01110000H;ICW2,設(shè)置IR0的中斷類型號為70HOUT0A1H,AL;寫入ICW2MOVAL,00000010B;ICW3,從片8259A的INT接主片的IR2OUT0A1HAL;寫入ICW3MOVAL,00000001B;ICW4,不用緩沖,正常中斷結(jié)束,全嵌套方式

OUT0A1HAL;寫入ICW4三、操作命令字OCW8259A操作命令字OCW1~OCW3,在應(yīng)用程序內(nèi)設(shè)置,寫入次序要求不嚴,但OCW1必須寫入奇地址,OCW2,OCW3要寫入偶地址。

1.操作命令字OCW1(A0=1)OCW1是中斷屏蔽命令字。D0~D7對應(yīng)于IR0~IR7線的屏蔽/開放位。當(dāng)OCW1某位為1,則相對應(yīng)的中斷源IRi位被屏蔽;若某位為0,則開放。例:

MOVAL,OFCH

OUT21H,ALA0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7M6 M5 M4 M3

M2

M1

M02.操作命令字OCW2(A0=0)

OCW2是用來設(shè)置中斷優(yōu)先級循環(huán)方式和中斷結(jié)束方式的操作命令字。OCW2的標(biāo)志為:D3=D4=0R(D7)

決定系統(tǒng)的中斷優(yōu)先級是否按自動循環(huán)方式設(shè)置。R=1,采用優(yōu)先級自動循環(huán)方式;R=0,則為非自動循環(huán)方式。SL(D6)

決定OCW2中的L2、L1、L0是否有效。若SL=1則L2、L1、L03位有效,否則為無效。

L2、L1、L0這3位有兩個功能,一是在設(shè)置為特殊的中斷結(jié)束命令字時,L2、L1、L0指出要清除當(dāng)前ISR中的哪一位;二是在特殊的優(yōu)先級循環(huán)方式命令字時,L2、L1、L0將指出循環(huán)開始時哪個中斷的優(yōu)先級最低。EOI(D5)中斷結(jié)束命令位。當(dāng)EOI=1時,使當(dāng)前ISR中對應(yīng)的最高級別位ISRi復(fù)位。此時,ICW4中的AEOI位為0,則ISRi位就要用EOI命令位來清除。A0 D7 D6 D5 D4 D3 D2 D1 D0

0 RSL EOI 0 0

L2

L1

L0RSLEOI

功能說明001普通中斷結(jié)束命令。使當(dāng)前中斷服務(wù)程序?qū)?yīng)的最高級別的ISRi位清“0”。011特殊中斷結(jié)束命令。由L2、L1、L0組成一個特殊的中斷結(jié)束命令。101普通優(yōu)先級循環(huán)中斷結(jié)束命令。某中斷服務(wù)結(jié)束,8259A一方面將ISR中當(dāng)前中斷處理程序?qū)?yīng)的ISRi位清“0”,另一方面將剛結(jié)束的中斷請求IRi降為最低優(yōu)先級,而將最高優(yōu)先級賦給中斷請求IRi+1,。111特殊優(yōu)先級循環(huán)的中斷結(jié)束命令。某中斷服務(wù)結(jié)束,由L2L1L0給定的ISRi清“0”,而最高優(yōu)先級將賦給ISRi+1。100設(shè)置優(yōu)先級自動循環(huán)命令(置位)。在中斷優(yōu)先級自動循環(huán)方式時,CPU在中斷響應(yīng)總線周期中第2個中斷響應(yīng)信號INTA結(jié)束時,將ISR中的相應(yīng)位ISRi清“0”,并將最低優(yōu)先級賦給這一級,而最高優(yōu)先級賦給ISRi+1。000結(jié)束優(yōu)先級自動循環(huán)命令(復(fù)位)。110特殊優(yōu)先級循環(huán)命令。由L2L1L0指定中斷請求IRi最低優(yōu)先級,而最高優(yōu)先級賦給IRi+1,其它各級則依次類推。010

OCW2無意義。3.操作命令字OCW3

(A0=0)

該命令字用來設(shè)置中斷查詢方式、設(shè)置和撤消特殊屏蔽方式、設(shè)置對8259A內(nèi)部寄存器IRR,ISR,IMR的讀出命令:D4=0,D3=1OCW3的特征位。D7=0

固定值;D6(ESMM)特殊屏蔽允許位,ESMM=1允許特殊屏蔽,否則不允許;D5(SMM)特殊屏蔽模式位,SMM=1選擇特殊屏蔽方式,SMM=0選擇非特殊屏蔽方式。當(dāng)D6D5=11時,置位特殊屏蔽方式。即如果系統(tǒng)正在執(zhí)行高級中斷處理程序,希望能響應(yīng)低級中斷,可以用該命令字將高級中斷中止,而響應(yīng)低級中斷,執(zhí)行完低級中斷。D6D5=10時,解除對高級中斷的特殊屏蔽。A0D7D6D5 D4 D3 D2 D1D0

00ESMMSMM 0 1 P RRRISD2(P)中斷查詢方式位。查詢中斷方式,不使用中斷類型號和中斷矢量表。當(dāng)P=1,使8259A設(shè)置為中斷查詢方式,CPU不是靠中斷請求信號而是靠讀取查詢字進入中斷處理過程。P=0,為非中斷查詢方式,該方式下可以讀取IRR、ISR的狀態(tài)。若設(shè)置OCW3的D2D1D0=100后,CPU讀取OCW3的同一地址(8259A的A0=0)的內(nèi)容,可得到中斷識別狀態(tài)字(查詢字):D7~D0=I0000W2W1W0

I

指示是否有中斷設(shè)備。I=1,表示有設(shè)備請求中斷,I=0,表示沒有設(shè)備申請中斷。W2W1W0指示請求中斷的最高優(yōu)先級。I=1時,CPU查詢中斷方式才有效,CPU讀取查詢字(IN),使ISR的對應(yīng)位置1,復(fù)位對應(yīng)最高優(yōu)先級的IRR位,并送查詢字到數(shù)據(jù)線進入AL,CPU根據(jù)W2W1W0的值進入最高優(yōu)先級的IRi的中斷處理過程。例:CPU讀8259A查詢字進入中斷的過程如下:...CLIMOVAL,0CHOUT20H,AL;OCW3設(shè)置查詢命令字WWW:INAL,20HTEST80H;讀取查詢字JZWWW;I=0,繼續(xù)查詢或執(zhí)行其它程序MOVBL,AL;I=1轉(zhuǎn)入W2W1W0指出的最高級編碼中斷處理程序ANDBX,0007HJMP(BX)..;D1(RR)

讀寄存器命令位,RR=1允許讀寄存器IRR和ISR,RR=0禁止讀這兩個寄存的內(nèi)容。D0(RIS)寄存器選擇位,在RR=1的情況下,該位才有意義。RIS=0讀IRR,RIS=l讀ISR寄存器的內(nèi)容。

讀寄存器IRR和ISR的狀態(tài)端口為偶地址。IMR的狀態(tài),可以通過輸入指令從8259A奇地址讀取,即對OCW1讀得到IMR的狀態(tài)。例如當(dāng)D2D1D0=010,表示要讀中斷請求寄存器IRR;當(dāng)D2D1D0=011,表示要讀中斷服務(wù)寄存器ISR;當(dāng)A0=1,對OCW1讀出,即可讀得IMR的狀態(tài)。無需向8259A寫入OCW3字。例:;讀ISRMOVAL,0BH;P=0,RR=1,RIS=1,表示要讀ISROUT20H,ALNOPINAL,20H;(AL)為ISR寄存器里的內(nèi)容;讀IRRMOVAL,0AH;P=0,RR=1,RIS=0表示要讀IRROUT20H,ALNOPINAL,20H;(AL)為IRR寄存器里的內(nèi)容.;讀IMRINAL,21H;讀取IMR(OCW1)狀態(tài)四、命令字特征及寫入順序說明

1.ICW1,OCW2,OCW3都寫入偶地址端口,8259A通過它們的特征加以區(qū)分:ICW1的特征是D4=1;而OCW2的特征是D4D3=00,OCW3的特征是D4D3=01。2.ICW2,ICW3,ICW4,OCW1均寫入奇地址端口,8259A是通過這些命令字的位置和寫入時間來區(qū)分的。初始化命令字ICW2,ICW3,ICW4在ICW1的后面順序?qū)懭?次序不可顛倒。對于一片8259A,ICW1,ICW2是必須設(shè)置的;ICW3,ICW4并非每片8259A都要設(shè)置,只有在級聯(lián)方式下才需設(shè)置ICW3(由ICW1的D1位才設(shè)置ICW3)。在8086/8088系統(tǒng)或需要設(shè)置特殊全嵌套方式、緩沖模式、中斷自動結(jié)束方式的情況下(由ICW1的D0位=1)才設(shè)置ICW4。OCW1操作命令字,總是單獨寫入的,可以由任何程序在任何時間多次寫入。例1:按以下要求初始化8259A:接口地址為20H和21H;中斷為上升沿觸發(fā);單片8259A;一般EOI;與IR0-IR3對應(yīng)的中斷向量碼為08H-0BH;IR4-IR7不使用。分析:根據(jù)要求,各初始化參數(shù)及工作參數(shù)如下:ICW1=00010011=13HICW2=08H中斷向量碼ICW4=01HOCW1=11110000=0F0H中斷屏蔽字初始化程序如下:INIT8259A:

MOV AL,13H;A0=0,寫ICW1

OUT 20H,AL;上升沿觸發(fā),單片,寫ICW4

;A0=1,寫ICW2,ICW4,OCW1 MOV AL,08H ;ICW2 OUT 21H,ALMOVAL,01H;ICW4OUT21H,AL MOV AL,0F0H ;OCW1:屏蔽IR4-IR7

OUT21H

,AL例:設(shè)PC/XT機正在為IRQ3中斷服務(wù),希望響應(yīng)比IRQ3低的中斷。用特殊命令字將IRQ3暫時屏蔽,響應(yīng)低級中斷,響應(yīng)結(jié)束,解除對IRQ3的中斷屏蔽,執(zhí)行IRQ3的服務(wù)程序,IRQ3中斷服務(wù)程序如下:.CLIMOVAL,08H;送屏蔽IRQ3的字給OCW1OUT21H,ALMOVAL,68H;D6D5=11,即特殊屏蔽字送OCW3OUT20H,ALSTI;若有低級中斷可以響應(yīng),并為其服務(wù).CLIMOVAL,48H;D6D5=10,即解除特殊屏蔽字送OCW3OUT20H,ALMOVAL,00H;解除對IRQ3的屏蔽字送OCW1OUT21H,ALSTI.IRET例2:若8259A以兩片級聯(lián)方式管理15級中斷,從片INT接到主片的IR2上,主、從片的中斷請求采用邊沿觸發(fā)方式,選用非緩沖方式,一般EOI。主片的中斷類型碼為8~0FH,從片的中斷類型碼為70H~77H,設(shè)主片的地址為20H,21H;從片的地址為0A0H,0A1H。請初始化8259A。(1)8259A初始化編程對主片8259A的初始化:

MOVAL,00010001H;ICW1

OUT20H,ALJMPINTR1INTR1:MOVAL,00001000H;ICW2OUT21H,ALJMPINTR2INTR2:MOVAL,00000100H;ICW3OUT21H,ALJMPINTR3JNTR3:MOVAL,11H;ICW4主片特殊全嵌套

OUT21H,AL

對從片8259A的初始化:

MOVAL,11H OUT0A0H,AL JMPINTR5INTR5:MOVAL,70HOUT0A1H,AL JMPINTR6INTR6:MOVAL,02HOUT 0A1H,ALJMPINTR7INTR7:MOVAL,01HOUT0A1H,AL

;從片普通全嵌套(2)級聯(lián)工作編程讀ISR的內(nèi)容(OCW3):

MOVAL,0BHOUT0A0H,ALNOP INAL,0A0H從片發(fā)EOI命令

溫馨提示

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

最新文檔

評論

0/150

提交評論