第七章中斷控制器8259A_第1頁
第七章中斷控制器8259A_第2頁
第七章中斷控制器8259A_第3頁
第七章中斷控制器8259A_第4頁
第七章中斷控制器8259A_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第六章 微機的中斷系統(tǒng)中斷源:引起程序中斷的事件稱中斷源。中斷源有外部中斷和內(nèi)部中斷。中斷請求、中斷響應(yīng)、中斷返回:中斷請求何時發(fā)生是隨機的。CPU在每條指令的最后一個周期去檢測INTR引腳,CPU一旦檢測到有中斷請求,在滿足中斷響應(yīng)的條件下(IF=1),CPU響應(yīng)中斷,向外設(shè)發(fā)中斷響應(yīng)信號。并保護斷點(當(dāng)前CS、IP和PSW值入棧),然后轉(zhuǎn)向中斷服務(wù)程序。中斷服務(wù)程序執(zhí)行完畢,CPU返回原執(zhí)行程序的中斷處,繼續(xù)向下執(zhí)行,稱為中斷返回。中斷向量表:CPU響應(yīng)中斷后,必須由中斷源提供地址信息,引導(dǎo)程序進入中斷服務(wù)子程序,這些中斷服務(wù)程序的入口地址存放在中斷向量表中。內(nèi)存中專門開辟了一個區(qū)域,存放中斷向量表(也稱中斷矢量表)。中斷優(yōu)先級、中斷嵌套:當(dāng)有多個中斷源請求中斷時,中斷系統(tǒng)判別中斷申請的優(yōu)先級,CPU響應(yīng)優(yōu)先級高的中斷,掛起優(yōu)先級低的中斷。當(dāng)CPU在運行中斷服務(wù)子程序時,又有新的更高優(yōu)先級的中斷申請進入,CPU要掛起原中斷進入更高級的中斷服務(wù)子程序,實現(xiàn)中斷嵌套功能。中斷屏蔽:當(dāng)中斷源申請中斷時,CPU可以由軟件設(shè)置,使之不能響應(yīng),稱為中斷屏蔽。中斷意義:分時處理;響應(yīng)速度快;可處理隨機事件。

什么是中斷?2023/2/61共98頁中斷系統(tǒng)應(yīng)具有以下功能:(1)能實現(xiàn)中斷響應(yīng)、中斷服務(wù)、中斷返回、中斷屏蔽;(2)能實現(xiàn)中斷優(yōu)先級排隊;(3)能實現(xiàn)中斷嵌套——優(yōu)先級高的中斷能中斷低級的中斷處理。2023/2/62共98頁中斷分類邊沿觸發(fā)、兩個時鐘周期高電平高電平觸發(fā)、維持到CPU響應(yīng)中斷才結(jié)束2023/2/63共98頁可屏蔽中斷處理的過程一般分成幾步:中斷請求;中斷響應(yīng);保護現(xiàn)場;轉(zhuǎn)入執(zhí)行中斷服務(wù)子程序;恢復(fù)現(xiàn)場和中斷返回。CPU響應(yīng)可屏蔽中斷要有三個條件:外設(shè)提出中斷申請中斷允許(IF=1,開中斷)本中斷屏蔽位未被屏蔽

可屏蔽中斷處理過程2023/2/64共98頁開中斷關(guān)中斷可屏蔽中斷的工作流程2023/2/65共98頁中斷響應(yīng)過程(以可屏蔽中斷為例)1、外設(shè)通過INTR向CPU發(fā)出中斷請求;2、CPU在執(zhí)行完現(xiàn)行指令后,響應(yīng)該中斷請求(IF=1);3、外設(shè)向CPU提供中斷類型號;4、CPU將PSW、CS、IP壓入堆棧;5、清除IF、TF(默認情況下為不允許中斷嵌套);6、從中斷向量表中取出中斷向量,置入IP、CS;7、執(zhí)行中斷例程;8、在中斷例程中,如果允許中斷嵌套,則開中斷(STI);9、執(zhí)行IRET,從堆棧中彈出IP、CS、PSW。2023/2/66共98頁微機中斷處理流程圖有些情況要再執(zhí)行完下一條指令才響應(yīng)外部中斷:1、正在執(zhí)行封鎖指令;2、向段寄存器傳送數(shù)據(jù)(MOV、POP);遇到等待指令和串操作指令時,在當(dāng)前指令一個基本操作完成后即可進入中斷響應(yīng)。2023/2/67共98頁例:軟件中斷執(zhí)行的過程中斷向量表2023/2/68共98頁微機中斷管理控制器管理的中斷注意:系統(tǒng)使用的中斷類型,不允許用戶使用和更改:中斷向量不能修改;在RAM中的中斷服務(wù)程序代碼不能修改。2023/2/69共98頁如何編寫用戶自己的中斷服務(wù)程序?(對軟中斷而言)(1)確定中斷類型號,設(shè)置中斷向量;(2)使用INTi8指令調(diào)用軟件中斷服務(wù)程序。主程序(1)保護現(xiàn)場(保存某些寄存器的內(nèi)容)。(2)若允許外部可屏蔽中斷嵌套,則開中斷(STI)。(3)處理中斷服務(wù)。(4)關(guān)中斷。(5)恢復(fù)現(xiàn)場。(6)返回被中斷的程序(IRET)。中斷服務(wù)程序2023/2/610共98頁中斷向量的設(shè)置:1、一種方法用指令來設(shè)置;2、利用DOS功能調(diào)用來設(shè)置。[例]用指令來設(shè)置中斷服務(wù)程序的入口地址到中斷類型號n所對應(yīng)的中斷向量表中。

MOV AX,0 ;主程序中設(shè)置中斷向量

MOV ES,AX MOV DI,N*4 ;中斷類型號N*4

MOV AX,OFFSETINTR_PROG CLD STOSW ;偏移地址送[4n],[4n+1]單元

MOV AX,CS STOSW ;段地址送[4n+2],[4n+3]單元 ……2023/2/611共98頁INTR_PROG: ;中斷服務(wù)子程序 PUSH AX STI …… CLIPOP AX IRET ……假設(shè)中斷服務(wù)程序和主程序在同一個代碼段:2023/2/612共98頁 ……

MOV AX,0 MOV ES,AX MOV BX,N*4 MOV AX,OFFSETINTRP MOV ES:WORDPTR[BX],AX ;設(shè)置偏移地址

MOV AX,SEGINTRP MOV ES:WORDPTR[BX+2],AX ;設(shè)置段地址

……INTRP: …… IRET ……中斷向量的設(shè)置2023/2/613共98頁實際上,我們在設(shè)置或檢查任何中斷向量時,總是避免直接使用中斷向量的絕對地址,而是利用DOS功能調(diào)用INT2lH設(shè)置中斷向量和取出中斷向量。此外要注意,在設(shè)置自己的中斷向量時,應(yīng)先保存原中斷向量,再設(shè)置新的中斷向量,在程序結(jié)束前恢復(fù)原中斷向量。中斷向量的設(shè)置(DOS功能調(diào)用INT21H)功能號:AH=25H入口參數(shù): AL=中斷類型號,DS:DX中斷向量(段地址:偏移地址)出口參數(shù):無獲取某個中斷類型的中斷向量(DOS功能調(diào)用INT21H)功能號:AH=35H入口參數(shù):AL=中斷類型號出口參數(shù):ES:BX中斷向量(段地址:偏移地址)2023/2/614共98頁[例]利用DOS功能調(diào)用設(shè)置中斷向量和獲取中斷向量。DATASEGMENTINTOFFDW?;用于保存原中斷服務(wù)程序的偏移地址

INTSEGDW? ;用于保存原中斷服務(wù)程序的段地址

INTMSGDB‘AINSTRUCTIONINTERRUPT!',‘$'DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX ;初始化數(shù)據(jù)段寄存器2023/2/615共98頁

MOVAX,3580HINT21H ;獲取系統(tǒng)原80H的中斷向量

MOVINTOFF,BX ;保存偏移地址

MOVINTSEG,ES ;保存段地址

PUSHDSMOVDX,OFFSETNEW80HMOVAX,SEGNEW80HMOVDS,AX

MOVAX,2580H INT21H ;設(shè)置本程序的80H中斷向量

POPDSINT80H ;調(diào)用自己的80H中斷服務(wù)程序2023/2/616共98頁

MOVDX,INTOFF MOVAX,INTSEG MOVDS,AX MOVAX,2580H;恢復(fù)系統(tǒng)原80H中斷向量 ;注意:先設(shè)置DX,再設(shè)置DS。因為如果先改變DS, ;就不能準確獲得INTOFF變量值。

INT21H MOVAX,4C00H INT21H2023/2/617共98頁;80H類型中斷服務(wù)程序:顯示一個字符串。NEW80HPROCPUSHDX PUSHAX ;保護現(xiàn)場

STI ;開中斷MOVDX,OFFSETINTMSGMOVAH,09HINT21HCLIPOPAXPOPDX ;恢復(fù)現(xiàn)場

STIIRET ;中斷返回NEW80H ENDP ;中斷服務(wù)程序結(jié)束CODE ENDS ENDSTART2023/2/618共98頁中斷優(yōu)先級中斷優(yōu)先級(優(yōu)先權(quán))是指系統(tǒng)設(shè)計者事先根據(jù)輕重緩急,給每個中斷源確定的優(yōu)先服務(wù)的級別。微機系統(tǒng)需要根據(jù)中斷優(yōu)先級的高低確定先為那個中斷源服務(wù)。IBMPC機中規(guī)定優(yōu)先級從高到低的次序為:l

除法錯,INTO,INTnl

不可屏蔽中斷(NMI)l

可屏蔽中斷(INTR)l

單步中斷2023/2/619共98頁可屏蔽中斷優(yōu)先級的確定方法:(1)軟件查詢的方法:

2023/2/620共98頁可屏蔽中斷優(yōu)先級的確定方法:(1)軟件查詢的方法:

軟件查詢的方法的流程圖2023/2/621共98頁可屏蔽中斷優(yōu)先級的確定方法:(2)硬件查詢優(yōu)先方式——菊花鏈法(3)專用芯片的管理方式(Intel8259A)2023/2/622共98頁中斷嵌套是指在中斷服務(wù)過程中,CPU又得到優(yōu)先權(quán)更高的外部可屏蔽中斷的請求,則當(dāng)前的中斷服務(wù)被打斷,優(yōu)先權(quán)更高的中斷優(yōu)先獲得服務(wù),待返回后,再繼續(xù)執(zhí)行被打斷的中斷服務(wù)。只要條件滿足,可以發(fā)生多重嵌套,也被稱為多重中斷。對于軟件中斷指令和NMI中斷,CPU必須立即無條件響應(yīng),對于外部可屏蔽中斷請求,只有IF=1,CPU才能響應(yīng)。因此,可屏蔽中斷的嵌套發(fā)生的條件是:(1)IF=1;(2)在外部可屏蔽中斷服務(wù)過程中,CPU又得到優(yōu)先權(quán)更高的外部可屏蔽中斷的請求。可屏蔽中斷的嵌套2023/2/623共98頁可屏蔽中斷的嵌套對于8086系統(tǒng)中,什么原因使IF=0?(1)系統(tǒng)復(fù)位操作后;(2)任一中斷響應(yīng)后(包括內(nèi)、外部所有的中斷);(3)執(zhí)行CLI指令后。因此,要實現(xiàn)可屏蔽中斷的嵌套,必須在當(dāng)前的中斷服務(wù)程序中設(shè)置STI指令。IRET指令對IF的影響:中斷服務(wù)程序最后執(zhí)行中斷返回指令I(lǐng)RET,將使IF恢復(fù)到進入該中斷以前的狀態(tài)。(PSW)2023/2/624共98頁多個可屏蔽中斷源中斷流程圖響應(yīng)中斷后自動設(shè)置防止中斷重復(fù)嵌套由PIC控制允許響應(yīng)優(yōu)先級高的中斷請求恢復(fù)現(xiàn)場的工作不希望被中斷打斷可屏蔽中斷的嵌套2023/2/625共98頁可屏蔽中斷的嵌套2023/2/626共98頁Intel8259A8259A是8086/8088系統(tǒng)的可編程中斷控制器,它的主要功能是:每片具有8級優(yōu)先級控制,通過級聯(lián)(9片8259A)可以擴展到64級優(yōu)先級控制。(2)每一級中斷可由程序單獨屏蔽或允許。(3)可提供中斷類型號傳送給CPU。(4)可以通過編程選擇多種不同工作方式。D7~D0:雙向數(shù)據(jù)線,三態(tài),它直接或通過總線驅(qū)動器與系統(tǒng)的數(shù)據(jù)總線相連。IR7~IR0:外設(shè)的中斷請求信號輸入端,輸入,中斷請求信號可以是電平觸發(fā)或邊沿觸發(fā)。中斷級聯(lián)時,連接8259A從片INT端。RD:讀命令信號,輸入,低電平有效,用來控制數(shù)據(jù)由8259A讀到CPU。WR:寫命令信號,輸入,低電平有效,用來控制數(shù)據(jù)由CPU寫到8259A。CS:片選信號,輸入,通過譯碼電路與高位地址總線相連。A0:選擇8259A的兩個端口,輸入,連低位地址線,用于選擇內(nèi)部端口。引腳信號2023/2/627共98頁Intel8259AINT:向CPU發(fā)出的中斷請求信號,輸出,與CPU的INTR端相連。INTA:CPU給8259A的中斷響應(yīng)信號,輸入。8259A要求兩個負脈沖的中斷響應(yīng)信號,第一個是CPU響應(yīng)中斷的信號,第二個INTA結(jié)束后,CPU讀取8259A送去的中斷類型號。CAS2~CAS0:雙向級聯(lián)信號線。8259A作主片時,為輸出線,作從片時,為輸入線。與SP/EN配合實現(xiàn)8259A級聯(lián)。SP/EN:編程/雙向使能緩沖。采用非緩沖方式,決定本片8259A是主片還是從片:若SP=1,則為主片;若SP=O,則為從片。采用緩沖方式,啟動8259A到CPU之間的數(shù)據(jù)總線驅(qū)動器,EN=O,表示允許8259A通過緩沖器輸出,EN=1,表示寫8259A

。引腳信號2023/2/628共98頁Intel8259A8259A內(nèi)部結(jié)構(gòu)框圖2023/2/629共98頁Intel8259A1、數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是8位雙向三態(tài)緩沖器,是8259A與系統(tǒng)數(shù)據(jù)總線接口,通常連接低8位數(shù)據(jù)總線D7~D0。2、讀寫控制電路讀寫控制電路接收CPU送來的讀/寫命令、片選信號CS及端口選擇信號A0。高位地址譯碼后送作片選信號。A0連地址總線A0或A1,用來選擇8259A的兩個I/O端口,一個為奇地址,另一個偶地址。在IBMPC/XT機中用A9~A1譯碼來產(chǎn)生信號,組合為00001××××b,產(chǎn)生I/O端口地址為20H~3FH,共32個。而8259A只需要兩個I/O端口地址,IBMPC/XT取20H(A0=0)、21H(A0=1)兩個地址在編程時使用。但其它30個地址為影象地址,不可能再分配給其它I/O設(shè)備使用。當(dāng)8位I/O接口芯片與8086CPU的l6位數(shù)據(jù)總線相連接時,8259A的D7~D0與CPU數(shù)據(jù)總線低8位相連。為了保證CPU與8259A用低8位傳輸數(shù)據(jù),CPU的A1連8259A的A0。這樣對CPU來說A0=0,A1可以為1或為0,CPU讀寫始終是用偶地址。對8259A來說A1可以為1或為0,給8259A的端口分配了兩個地址,一個奇地址,一個偶地址,符合了8259A的編程要求。

內(nèi)部結(jié)構(gòu)2023/2/630共98頁2023/2/631共98頁3、級聯(lián)緩沖/比較器級聯(lián)緩沖/比較器用于多片8259A級聯(lián)使用,主從之間專用的總線。4、中斷請求寄存器IRR(InterruptRequestRegister)中斷請求寄存器是一個8位寄存器,存放外部輸入的中斷請求信號IR7~IR0。當(dāng)某個IR端有中斷請求時,IRR相應(yīng)的某位置“1”??梢栽试S8個中斷請求信號同時進入,此時IRR寄存器被置成全“1”。當(dāng)中斷請求被響應(yīng)時,IRR的相應(yīng)位復(fù)位。5、中斷屏蔽寄存器IMR(InterruptMaskRegister)中斷屏蔽寄存器是一個8位寄存器,用來存放對各級中斷請求的屏蔽信息??捎密浖幊淘O(shè)置IMR寄存器。當(dāng)D5=1,表示由IR5引入的中斷請求不允許進入中斷優(yōu)先級判別器。(與IF的設(shè)置恰恰相反)6、優(yōu)先級判別器PR優(yōu)先級判別器對保存在IRR寄存器中的中斷請求進行優(yōu)先級識別,送出最高優(yōu)先級的中斷請求到中斷服務(wù)寄存器ISR中去。當(dāng)出現(xiàn)多重中斷時,PR判定是否允許所出現(xiàn)的中斷去打斷正在處理的中斷,讓優(yōu)先級更高的中斷優(yōu)先處理。Intel8259A內(nèi)部結(jié)構(gòu)2023/2/632共98頁7、中斷服務(wù)寄存器ISR(InterruptServiceRegister)中斷服務(wù)寄存器是一個8位寄存器,保存正在處理中的中斷請求信號,某個IR端的中斷請求被CPU響應(yīng)后,當(dāng)CPU發(fā)出第一個INTA信號時,ISR寄存器中的相應(yīng)位置“1”,一直保持到該級中斷處理結(jié)束為止。允許多重中斷時,ISR多位同時被置成“1”。此寄存器可被CPU讀出。中斷處理結(jié)束前,要使用指令清除這一位。8、控制電路控制電路是8259A的內(nèi)部控制器。根據(jù)中斷請求寄存器IRR的置位情況和中斷屏蔽寄存器IMR設(shè)置的情況,通過優(yōu)先級判別器PR判定優(yōu)先級,向8259A內(nèi)部及其它部件發(fā)出控制信號。并向CPU發(fā)出中斷請求信號INT和接收CPU的中斷響應(yīng)信號INTA,使中斷服務(wù)寄存器ISR相應(yīng)位置“1”,并使中斷請求寄存器IRR相應(yīng)位置“0”。當(dāng)CPU第二個INTA信號到來,控制8259A送出中斷類型號,使CPU轉(zhuǎn)入中斷服務(wù)子程序。如果命令字ICW4的中斷自動結(jié)束位為“1”,則在第二個INTA脈沖結(jié)束時,將8259A中斷服務(wù)寄存器ISR的相應(yīng)位清“0”。Intel8259A內(nèi)部結(jié)構(gòu)2023/2/633共98頁中斷響應(yīng)時序

最大模式T2和T32023/2/634共98頁(1)8086要求中斷請求信號INTR是一個電平信號,必須維持兩個時鐘周期的高電平。否則CPU執(zhí)行完一條指令后,如果總線接口部件正在執(zhí)行總線周期,則會使中斷請求得不到響應(yīng)而執(zhí)行其他的總線周期。(2)8086工作在最大模式時,不從INTA引腳上發(fā)中斷響應(yīng)脈沖,而是由S2S1S0組合為000,通過總線控制器8288發(fā)出INTA中斷響應(yīng)信號。(3)8086不允許在兩個INTA周期之間響應(yīng)總線保持請求(通過HOLD請求),但如果同時出現(xiàn)中斷請求和總線保持請求,則CPU先對總線保持請求服務(wù)。(4)外設(shè)的中斷類型號一般通過16位數(shù)據(jù)總線的低8位傳送給8086,提供中斷向量的外設(shè)接口應(yīng)該接在數(shù)據(jù)總線的低8位上。(5)在兩個中斷響應(yīng)總線周期中,地址/數(shù)據(jù)/狀態(tài)總線是浮空的,但是M/IO為低電平,而ALE在每個總線周期的T1狀態(tài)輸出一個高電平脈沖,作為地址鎖存信號。(6)軟件中斷和非屏蔽中斷不按照這種時序來響應(yīng)中斷。中斷響應(yīng)時序

2023/2/635共98頁8259A中斷管理方式1、8259A的編程結(jié)構(gòu)優(yōu)先級和結(jié)束方式

屏蔽和查詢方式

2023/2/636共98頁(1)中斷管理方式是通過8259A初始化時寫入初始化命令字和操作命令字來設(shè)置的。(2)初始化命令字寫入寄存器ICW1~ICW4,它是由初始化程序設(shè)置的,初始化命令字一經(jīng)設(shè)定,在系統(tǒng)工作過程中就不再改變。(3)操作命令字寫入寄存器OCW1~OCW3,它是由應(yīng)用程序設(shè)定的,用來對中斷處理過程進行控制,在系統(tǒng)運行過程中,操作命令字可以重新設(shè)置。8259A中斷管理方式1、8259A的編程結(jié)構(gòu)2023/2/637共98頁2、優(yōu)先級設(shè)置方式8259A中斷管理方式(1)完全嵌套方式若8259A初始化后沒有設(shè)置其它優(yōu)先級的方式,就自動進入完全嵌套方式。在這種方式下,中斷優(yōu)先級分配固定級別0~7級,IR0具有最高優(yōu)先級,IR7優(yōu)先級最低。也可用初始化命令字ICW4中SFNM=0,將8259A置成完全嵌套優(yōu)先級方式。允許打斷正在處理的中斷,優(yōu)先處理更高級的中斷,實現(xiàn)中斷嵌套,但禁止同級與低級中斷請求進入。

有兩種中斷結(jié)束方式:普通EOI結(jié)束方式和自動AEOI結(jié)束方式。2023/2/638共98頁(2)特殊全嵌套工作方式在級聯(lián)時,還有一種特殊全嵌套工作方式,它與全嵌套工作方式基本相同。區(qū)別在于當(dāng)處理某級中斷時,有同級中斷請求進入,8259A也會響應(yīng),從而實現(xiàn)了對同級中斷請求的特殊嵌套。2、優(yōu)先級設(shè)置方式8259A中斷管理方式在級聯(lián)方式中,主片編程為特殊全嵌套工作方式,從片為其它優(yōu)先級方式(完全嵌套方式或優(yōu)先級循環(huán)方式)。特殊全嵌套工作方式的設(shè)置是主片初始化時ICW4中的SFNM=1,同時將從片ICW4中AEOI位置“0”,設(shè)成非自動結(jié)束方式,通常用特殊EOI結(jié)束方式。2023/2/639共98頁2、優(yōu)先級設(shè)置方式8259A中斷管理方式(3)優(yōu)先級自動循環(huán)方式在優(yōu)先級自動循環(huán)方式中,優(yōu)先級別可以改變。初始優(yōu)先級次序規(guī)定為IR0、IR1、…、IR7,當(dāng)任何一級中斷被處理完后,它的優(yōu)先級別變?yōu)樽畹?,將最高?yōu)先級賦給原來比它低一級的中斷請求,其它依次類推。

用操作命令字OCW2中R、SL=10就可設(shè)置優(yōu)先級自動循環(huán)方式。根據(jù)結(jié)束方式不同,有兩種自動循環(huán)方式:普通EOI循環(huán)方式和自動EOI循環(huán)方式。2023/2/640共98頁(4)優(yōu)先級特殊循環(huán)方式優(yōu)先級特殊循環(huán)方式和優(yōu)先級自動循環(huán)方式相比,不同之處在于優(yōu)先級特殊循環(huán)方式中,初始時最低優(yōu)先級由程序規(guī)定,最高優(yōu)先級也就確定了。例如初始時指定IR1為最低優(yōu)先級,則IR2為最高優(yōu)先級,其它依次類推。而優(yōu)先級自動循環(huán)方式初始時最高優(yōu)先級一定是IR0。用操作命令字OCW2中R、SL=11就可設(shè)置優(yōu)先級特殊循環(huán)方式,結(jié)束方式通常用特殊EOI循環(huán)方式。2、優(yōu)先級設(shè)置方式8259A中斷管理方式2023/2/641共98頁3、中斷源屏蔽方式

8259A中斷管理方式(1)普通屏蔽方式將中斷屏蔽寄存器IMR中某一位或某幾位置“1”,即可將對應(yīng)位的中斷請求屏蔽掉。普通屏蔽方式的設(shè)置通過設(shè)置操作命令字OCW1來實現(xiàn)。[例]屏蔽第2、3、5、6位進入的中斷請求,假設(shè)8259A的端口地址為20H,21H。 MOVAL,01101100H ;屏蔽字 OUT21H,AL對OCW1的設(shè)置可以在主程序中,也可放在中斷服務(wù)程序中,具體根據(jù)中斷處理要求而定。2023/2/642共98頁3、中斷源屏蔽方式

8259A中斷管理方式(2)特殊屏蔽方式此方式能對本級中斷進行屏蔽,而允許優(yōu)先級比它高或低的中斷進入,特殊屏蔽方式總是在中斷處理程序中使用,特殊屏蔽方式的設(shè)置是通過設(shè)置操作命令字OCW3中的ESMM、SMM=11來實現(xiàn)的,例如:當(dāng)前正在執(zhí)行IR3的中斷服務(wù)程序,設(shè)置了特殊屏蔽方式后,再用OCW1對中斷屏蔽寄存器中第3位置“1”時,就會同時使當(dāng)前中斷服務(wù)寄存器中對應(yīng)位自動清“0”,這樣可以既屏蔽了當(dāng)前正在處理的中斷,又開放了較低級別的中斷。待中斷服務(wù)程序結(jié)束時,應(yīng)將IMR寄存器的第3位復(fù)位,并將SMM位復(fù)位,表示退出特殊屏蔽方式。2023/2/643共98頁在固定優(yōu)先級方式中,對中斷結(jié)束的處理有自動AEOI結(jié)束方式和非自動結(jié)束方式,非自動結(jié)束方式又分普通EOI結(jié)束方式和特殊SEOI結(jié)束方式。為什么要進行中斷結(jié)束處理?中斷結(jié)束處理實際上就是對中斷服務(wù)寄存器ISR中對應(yīng)位的處理。當(dāng)一個中斷得到響應(yīng)時,8259A使ISR寄存器中對應(yīng)位置“1”,表明此對應(yīng)外設(shè)正在服務(wù),并為中斷優(yōu)先級判別器提供判別依據(jù)。中斷結(jié)束時,必須使ISR寄存器中對應(yīng)位置“0”,否則中斷優(yōu)先級判別會不正常。什么時刻使ISR中對應(yīng)位置“0”,就產(chǎn)生不同的中斷結(jié)束方式。8259A中斷管理方式4、中斷結(jié)束方式2023/2/644共98頁(1)普通EOI結(jié)束方式在完全嵌套工作方式下,任何一級中斷處理結(jié)束返回上一級程序前,CPU向8259A傳送EOI結(jié)束命令字,8259A收到EOI結(jié)束命令后,自動將ISR寄存器中級別最高的置“1”位清“0”(此位對應(yīng)當(dāng)前正在處理的中斷)。

EOI結(jié)束命令字必須放在返回指令I(lǐng)RET前,沒有EOI結(jié)束命令,ISR寄存器中對應(yīng)位仍為“1”,繼續(xù)屏蔽同級或低級的中斷請求。普通EOI結(jié)束命令字是設(shè)置OCW2中EOI位為1,即OCW2中R、SL、EOI組合為001。對IBMPC/XT機,發(fā)EOI結(jié)束命令字指令為:

MOV AL,20H OUT 20H,AL;ALOCW2

8259A中斷管理方式4、中斷結(jié)束方式2023/2/645共98頁(2)特殊EOI結(jié)束方式在非全嵌套工作方式下,中斷服務(wù)寄存器無法確定哪一級中斷為最后響應(yīng)和處理的,這時要采用特殊SE0I結(jié)束方式。CPU向8259A發(fā)特殊EOI結(jié)束命令字,命令字中將當(dāng)前要清除的中斷級別也傳給8259A。此時,8259將ISR寄存器中指定級別的對應(yīng)位清“0”,它在任何情況下均可使用。特殊EOI結(jié)束命令字是將OCW2中R、SL、EOI設(shè)置成011,而L2~L0三個位指明了中斷結(jié)束的對應(yīng)位。8259A中斷管理方式4、中斷結(jié)束方式2023/2/646共98頁(3)自動EOI結(jié)束方式在AEOI方式中,任何一級中斷被響應(yīng)后,ISR寄存器對應(yīng)位置“1”,但在CPU進入中斷響應(yīng)周期,發(fā)第二個INTA脈沖后,8259A自動將ISR寄存器中對應(yīng)位清“O”。此時,盡管對某個外設(shè)正在進行中斷服務(wù),但對8259A來說,ISR寄存器中沒有指示,好象已結(jié)束了中斷處理一樣。

通常在只有一片8259A,多個中斷不會嵌套情況下使用。自動AEOI方式設(shè)置是在8259A初始化時,用初始化命令字ICW4中使AEOI=1的方法來實現(xiàn)的。在級聯(lián)方式下,一般用非自動結(jié)束方式,無論用普通EOI結(jié)束方式,還是用特殊EOI結(jié)束方式,中斷處理結(jié)束時,要發(fā)兩次中斷結(jié)束命令,一次是對主片發(fā)的,另一次是對從片發(fā)的。8259A中斷管理方式4、中斷結(jié)束方式2023/2/647共98頁8259A中斷管理方式5、循環(huán)優(yōu)先級的循環(huán)方式(1)普通EOI循環(huán)方式在主程序或中斷服務(wù)程序中設(shè)置操作命令字,當(dāng)任何一級中斷被處理完后,使CPU給8259A回送普通EOI循環(huán)命令,8259A收到EOI循環(huán)命令后,將ISR寄存器中,最高優(yōu)先級的IRi置“1”位清“0”,并賦給它最低優(yōu)先級,將最高優(yōu)先級賦給它的下一級IRi+1,其它依次類推。

普通EOI循環(huán)方式命令字是設(shè)置OCW2。在非自動結(jié)束方式中,OCW2中的R、SL、EOI設(shè)置成101,L2~L0不起作用。2023/2/648共98頁(2)特殊EOI循環(huán)方式特殊EOI循環(huán)方式即指定最低優(yōu)先級循環(huán)方式,最低優(yōu)先級由編程確定,最高優(yōu)先級也相應(yīng)而定,這樣在當(dāng)前中斷服務(wù)程序結(jié)束前,使CPU給8259A回送特殊EOI結(jié)束命令,同時將當(dāng)前就要結(jié)束的中斷級別也傳送給8259A,8259A收到此命令字后,將ISR中相應(yīng)位清“0”。顯然這種結(jié)束方式最為安全可靠。

8259A中斷管理方式5、循環(huán)優(yōu)先級的循環(huán)方式設(shè)定特殊EOI循環(huán)方式時,設(shè)置OCW2中R、SL、EOI=111,L2~L0指定了一個最低優(yōu)先級。2023/2/649共98頁(3)自動EOI循環(huán)方式在自動EOI循環(huán)方式中,任何一級中斷被響應(yīng)后,中斷響應(yīng)總線周期中第二個INTA信號的后沿自動將ISR寄存器中相應(yīng)位清“0”,并立即改變各級中斷的優(yōu)先級別,改變方式與普通EOI循環(huán)方式相同。使用這種方式要小心,防止重復(fù)嵌套產(chǎn)生。自動EOI循環(huán)方式設(shè)置是OCW2中R、SL、EOI=100。8259A中斷管理方式5、循環(huán)優(yōu)先級的循環(huán)方式2023/2/650共98頁(1)邊沿觸發(fā)方式在邊沿觸發(fā)方式下,8259A將中斷請求輸入端出現(xiàn)的上升沿作為中斷請求信號。中斷請求輸入端出現(xiàn)上升沿觸發(fā)信號后,可以一直保持高電平。(2)電平觸發(fā)方式在電平觸發(fā)方式下,8259A將中斷請求輸入端出現(xiàn)的高電平作為中斷請求信號。但當(dāng)中斷得到響應(yīng)后,中斷輸入端必須及時撤出高電平,否則在CPU進入中斷處理過程,并且開中斷的情況下,原輸入端的高電平會引起第二次中斷的錯誤。(3)中斷查詢方式在中斷查詢方式下,外部設(shè)備向8259A發(fā)中斷請求信號,中斷請求可以是邊沿觸發(fā),也可以是電平觸發(fā)。但8259A不通過INT信號向CPU發(fā)中斷請求信號,CPU要使用軟件查詢來確定中斷源。8259A中斷管理方式6、中斷請求引入方式2023/2/651共98頁2023/2/652共98頁(1)中斷源在IR0—IR7上產(chǎn)生中斷請求;(2)中斷請求被鎖存在IRR中,經(jīng)IMR”屏蔽”,送PR;(3)控制電路接收中斷請求,向CPU輸出INT信號(4)CPU接收8259A的INT信號,在IF=1下,發(fā)INTA;

(5)設(shè)置ISR中對應(yīng)位;(6)若8259A作為主片。則在第一個INTA將級聯(lián)地址從CAS0—CAS2送出;若8259A單獨使用或是由CAS0—CAS2選擇的從片,就在第二個INTA中將中斷類型號輸出到低8位數(shù)據(jù)總線上;(7)CPU讀出該中斷類型號,轉(zhuǎn)到對應(yīng)的中斷服務(wù)程序;(8)中斷處理結(jié)束前,中斷處理程序向8259A發(fā)送一條EOI(中斷結(jié)束)命令,使ISR相應(yīng)位復(fù)位,本次中斷結(jié)束;8259A中斷管理方式7、工作過程2023/2/653共98頁(1)固定優(yōu)先級

各個中斷源優(yōu)先級由它所連接的引腳編號決定;1、全嵌套方式(常用的一種工作方式)若8259A初始化后沒有設(shè)置其它優(yōu)先級的方式,就自動進入全嵌套方式。IR0具有最高優(yōu)先級,IR7優(yōu)先級最低。2、特殊全嵌套方式(一般用于級聯(lián)情況下)在級聯(lián)方式中,從片上8個中斷請求有著不同的優(yōu)先級別,但從主片來看,屬于同一級別。假設(shè)從片為全嵌套方式,先后收到兩次中斷請求,且第二次有較高的優(yōu)先級,該從片就會兩次通過INT向上一級申請中斷,如果主片為全嵌套工作方式,則它不會響應(yīng)來自同一個引腳的第二次中斷請求,而主片處于特殊全嵌套工作方式時,就能響應(yīng)請求。一般情況下:單片全嵌套方式;多片,主片特殊全嵌套方式,從片全嵌套方式。8259A中斷管理方式優(yōu)先權(quán)管理小結(jié)2023/2/654共98頁(2)循環(huán)優(yōu)先級方式

各個中斷申請具有大體相同的優(yōu)先級。1、優(yōu)先級自動循環(huán)方式初始優(yōu)先級次序規(guī)定為IR0、IR1、…、IR7,當(dāng)任何一級中斷被處理完后,它的優(yōu)先級別變?yōu)樽畹?,將最高?yōu)先級賦給原來比它低一級的中斷請求,其它依次類推。2、優(yōu)先級特殊循環(huán)方式初始時最低優(yōu)先級由程序規(guī)定,最高優(yōu)先級也就確定了。8259A中斷管理方式優(yōu)先權(quán)管理小結(jié)2023/2/655共98頁中斷結(jié)束方式中斷服務(wù)完成時,必須給8259A一個命令,使這個中斷級在ISR中對應(yīng)位清“0”,表示該中斷處理結(jié)束。(1)自動中斷結(jié)束方式(AEOI) 系統(tǒng)一旦進入中斷響應(yīng),8259A就在第二個INTA信號的后沿,自動將ISR中對應(yīng)位清“0”。最簡單一種中斷結(jié)束方式;注意:它只能用在系統(tǒng)中只有一個8259A,且多個中斷不會嵌套。(2)非自動中斷結(jié)束方式(EOI)從中斷服務(wù)程序返回前,必須在程序中向8259A輸出一個中斷結(jié)束命令(EOI),把對應(yīng)于ISR中的位清“0”,具體由兩種:1、一般自動中斷結(jié)束方式。指令中不指定清除ISR中哪一位,由8259A自動選擇優(yōu)先權(quán)最高的位;2、特殊EOI結(jié)束方式。在指令中指明要清除ISR中某一位。注意:非自動中斷結(jié)束方式如果在程序中沒有將ISR中對應(yīng)位清“0”,那么8259A在一般情況下將不再響應(yīng)這個中斷以及比他級別低的中斷請求。8259A中斷管理方式中斷結(jié)束方式小結(jié)2023/2/656共98頁8259A的編程方法對8259A的編程有兩類命令字:初始化命令字ICW(InitializationCommandWord)和操作命令字OCW(OperationCommandWord)。系統(tǒng)復(fù)位后,初始化程序?qū)?259A置入初始化命令字。初始化后可通過發(fā)出操作命令字OCW來定義8259A的操作方式,實現(xiàn)對8259A的狀態(tài)、中斷方式和優(yōu)先級管理的控制。初始化命令字只發(fā)一次,操作命令字允許重置,以動態(tài)改變8259A的操作與控制方式。2023/2/657共98頁初始化命令字ICW對8259A編程初始化命令字,共預(yù)置4個命令字:ICW1、ICW2、ICW3、ICW4。初始化命令字必須順序填寫,但并不是任何情況下都要預(yù)置4個命令字,用戶根據(jù)具體使用情況而定。(1)ICW1——芯片控制初始化命令字注意:ICW1的D4位必須為1,用作ICW1的標(biāo)志。2023/2/658共98頁初始化命令字ICW2、ICW2——設(shè)置中斷類型號的初始化命令字A0:A0=1,表示ICW2必須寫到8259A的奇地址端口中。8259A中IR0端對應(yīng)的中斷類型號為中斷類型號的基值,它是可以被8整除的正整數(shù),ICW2用來設(shè)置這個中斷類型號基值,由此提供外部中斷的中斷類型號。ICW2低3位為0,高5位由用戶設(shè)定。當(dāng)8259A收到CPU發(fā)來的第二個INTA信號,它向CPU發(fā)送中斷類型號,其中高5位為ICW2的高5位,低3位根據(jù)IR0~IR7中響應(yīng)哪級中斷(對應(yīng)為000~111b)來確定。2023/2/659共98頁初始化命令字ICW3、ICW3——標(biāo)識主片/從片的初始化命令字2023/2/660共98頁初始化命令字ICW到CPU的INTR引腳2023/2/661共98頁初始化命令字ICW4、ICW4——方式控制初始化命令字ICW1為1時,要求預(yù)置ICW4命令字,對8086/8088系統(tǒng)必須預(yù)置ICW4。2023/2/662共98頁初始化命令字的設(shè)置有固定次序,端口地址也有明確規(guī)定,并不會因為只有兩個端口輸出命令而混淆。初始化命令字必須從ICW1開始設(shè)置,依次順序進行設(shè)置,并分別根據(jù)ICW1中的SNGL位和IC4位決定是否設(shè)置ICW3和ICW4。級聯(lián)時要設(shè)置ICW3,并且主片與從片的ICW3設(shè)置不同。在初始化命令字設(shè)置完成前,對A0=1的輸出指令不可能是操作命令字。而初始化命令序列設(shè)置完成后,在操作命令字的設(shè)置中,不可能第二次初始化,因此不會混淆。初始化命令字ICW2023/2/663共98頁初始化命令字ICW初始化命令字設(shè)置次序2023/2/664共98頁初始化命令字ICW初始化命令字設(shè)置次序結(jié)束2023/2/665共98頁[例]

在IBMPC/XT系統(tǒng)中,ROM-BIOS中的8259A初始化程序為:

…… MOV AL,13H ;單片、邊沿觸發(fā)、要設(shè)置ICW4

OUT 20H,AL ;寫入ICW1

MOV AL,08H ;中斷類型號基值為08H OUT 21H,AL ;寫入ICW2

MOV AL,0DH ;緩沖方式、非自動EOI方式、 ;完全嵌套方式、 ;使用8086/8088微處理器。

OUT 21H,AL ;寫入ICW48259A經(jīng)初始化命令字ICW預(yù)置后已進入初始化狀態(tài),可接收來自IRi端的中斷請求,自動進入操作命令狀態(tài),可以隨時接受CPU寫入8259A的操作命令字OCW。初始化命令字ICW2023/2/666共98頁例:兩片8259A進行級聯(lián),主片SP/EN連+5V,從片SP/EN接地,邊沿觸發(fā),非緩沖方式,非自動中斷結(jié)束,CAS0—CAS2互連,如前圖所示。主片:MOVAL00010001B;ICW1:邊沿觸發(fā),級聯(lián),設(shè)置

;ICW4OUT20H,ALMOVAL,00001000B;ICW2:中斷類型08H—0FHOUT21H,ALMOVAL,00001000B;ICW3:IR3連有從片OUT21H,ALMOVAL,00010001B;ICW4:特殊全嵌套,非緩沖,;非自動中斷結(jié)束,8086微處理器

OUT21H,AL2023/2/667共98頁從片:MOVAL00010001B;ICW1:邊沿觸發(fā),級聯(lián)OUT0A0H,ALMOVAL,01110000B;ICW2:中斷類型70H—77HOUT0A1H,ALMOVAL,00000011B;ICW3:INT接主片IR3OUT0A1H,ALMOVAL,00000001B;ICW4:全嵌套,非緩沖,非自動中斷結(jié)束,8086微處理器

OUT0A1H,AL2023/2/668共98頁操作命令字

操作命令字決定中斷屏蔽、中斷優(yōu)先級次序、中斷結(jié)束方式等。中斷管理較復(fù)雜,包括:完全嵌套優(yōu)先方式、特殊嵌套優(yōu)先方式、自動循環(huán)優(yōu)先方式、特殊循環(huán)優(yōu)先方式、特殊屏蔽方式、查詢方式等。它是由操作命令字的設(shè)置來實現(xiàn)的,設(shè)置時,次序上沒有嚴格要求,但端口地址有嚴格規(guī)定,OCW1必須寫入奇地址端口,OCW2和OCW3必須寫入偶地址端口。

2023/2/669共98頁操作命令字

(1)OCW1——中斷屏蔽操作命令字A0:A0=1,OCW1命令字必須寫入8259A奇地址端口。OCW1命令字的各位直接對應(yīng)中斷屏蔽寄存器IMR的各位,當(dāng)OCW1中某位Mi為1,對應(yīng)位的中斷請求受到屏蔽,某位為0,對應(yīng)位的中斷請求得到允許。(對比IF的設(shè)置,正好相反。)2023/2/670共98頁(2)OCW2——優(yōu)先權(quán)循環(huán)方式和中斷結(jié)束方式操作命令字操作命令字

2023/2/671共98頁A0:A0=0,OCW2寫入偶地址端口。D4、D3:OCW2的標(biāo)志位,等于00,區(qū)別ICW1和OCW3。L2~L0:SL=1時,L2~L0有效。L2~L0有兩個用途,一是當(dāng)OCW2設(shè)置為特殊EOI結(jié)束命令時(011,111),L2~L0指出清除中斷服務(wù)寄存器中的哪一位;二是當(dāng)OCW2設(shè)置為特殊優(yōu)先級循環(huán)方式時(110),L2~L0指出循環(huán)開始時設(shè)置的最低優(yōu)先級。R、SL、EOI:組合起來指明優(yōu)先級設(shè)置方式和中斷結(jié)束方式,每位有各自的意義。R(Rotate):R=1,中斷優(yōu)先級是按循環(huán)方式設(shè)置的;R=0,設(shè)置為固定優(yōu)先級。SL(SpecificLevel):指明L2~L0是否有效。EOI(EndOfInterrupt):指定中斷結(jié)束方式。EOI=1,使用中斷結(jié)束命令使中斷服務(wù)寄存器中對應(yīng)位復(fù)0;EOI=0,不需要執(zhí)行結(jié)束操作命令。(ICW4的AEOI=1,OCW2中的EOI位應(yīng)為0)。OCW2的功能包括兩個方面,一方面是決定8259A是否采用優(yōu)先級循環(huán)方式,另一個方面是中斷結(jié)束采用普通的還是特殊的EOI結(jié)束方式。2023/2/672共98頁RSLEOI功

能100設(shè)置自動EOI循環(huán)方式。在中斷響應(yīng)周期的第二個負脈沖信號結(jié)束時,將ISR寄存器中正在服務(wù)的相應(yīng)位置0,本級賦予最低優(yōu)先級,最高優(yōu)先級賦給它的下一級,其它中斷優(yōu)先級依次循環(huán)賦給。000清除自動EOI循環(huán)。101設(shè)置普通EOI循環(huán)。一旦中斷結(jié)束,8259A將中斷服務(wù)寄存器ISR中當(dāng)前級別最高的置1位清0,此級賦予最低優(yōu)先級,最高優(yōu)先級賦給它的下一級,其它中斷優(yōu)先級依次循環(huán)賦給。111設(shè)置特殊EOI循環(huán)。一旦中斷結(jié)束,將中斷服務(wù)寄存器ISR中由L2~L0字段給定級別的相應(yīng)位清0,此級賦于最低優(yōu)先級,最高優(yōu)先級賦給它的下一級,其它中斷優(yōu)先級依次循環(huán)賦給。110置位優(yōu)先級循環(huán)。8259A按L2~L0字段確定一個最低優(yōu)先級,最高優(yōu)先級賦給它的下一級,其它中斷優(yōu)先級依次循環(huán)賦給,系統(tǒng)工作在優(yōu)先級特殊循環(huán)方式。001普通EOI結(jié)束方式。一旦中斷處理結(jié)束,CPU向8259A發(fā)出EOI結(jié)束命令,將中斷服務(wù)寄存器ISR中當(dāng)前級別最高的置1位清0。一般用在完全嵌套(包括特殊全嵌套)工作方式。011特殊EOI結(jié)束方式。一旦中斷處理結(jié)束,CPU向8259A發(fā)出EOI結(jié)束命令,8259A將中斷服務(wù)寄存器ISR中,由L2~L0字段指定的中斷級別的相應(yīng)位清0。010OCW2無效。2023/2/673共98頁操作命令字

(3)OCW3——特殊屏蔽方式和查詢方式操作命令字OCW3功能有三個:設(shè)定特殊屏蔽方式,設(shè)置對8259A寄存器的讀出及設(shè)置中斷查詢工作方式。INAL,20H(IRR,ISR)INAL,20H(P=1,查詢字)INAL,21H(IMR)(任何時候)2023/2/674共98頁A0D7D6D5D4D3D2D1D00IR××××W2W1W0ESMMSMM功

能10復(fù)位為普通屏蔽方式11置位為特殊屏蔽方式0×無效注意:通過OCW3設(shè)置P=1的查詢命令字后,8259A不再通過INT引腳向CPU發(fā)中斷請求;要取消查詢方式,可以再次發(fā)送OCW3,并使P=0。

2023/2/675共98頁操作控制字OCW1~OCW3的設(shè)置,安排在初始化命令字設(shè)置之后,用戶根據(jù)需要可在程序的任何位置去設(shè)置。盡管8259A只有兩個端口地址,但不會混淆4個初始化命令字和3個操作命令字。ICW2、ICW3、ICW4和OCW1寫入8259A奇地址端口,初始化時ICW1后面緊跟ICW2、ICW3、ICW4,而OCW1是單獨寫入的,不會緊跟在ICW1后面。ICW1、OCW2、OCW3寫入8259A偶地址端口,但一方面ICW1是在初始化時寫入,另一方面可用D4位區(qū)分,D4=1為ICW1,D4=0為OCW;再用D3位區(qū)分,D3=0為OCW2,D3=1為OCW3。因此對8259A編程時寫入的命令字是不會混淆的。從8259A能夠讀出的狀態(tài)字有4個:IMR、IRR、ISR和查詢字。A0=1,讀出的一定是IMR;在OCW3的P、RR和RIS位的控制下,可相應(yīng)讀出IRR、ISR和查詢字。2023/2/676共98頁微機系統(tǒng)區(qū)別接口電路(或接口芯片)中不同的寄存器(或控制信息、狀態(tài)信息等)的主要方法:

利用讀/寫控制信號區(qū)別寫入的控制寄存器和讀出的狀態(tài)寄存器;

利用地址信號區(qū)別不同I/O端口地址的寄存器;

由命令字中的標(biāo)志位說明是哪個寄存器;

由芯片內(nèi)部順序控制邏輯按一定順序識別不同的寄存器;

由前面寫入的命令字決定后續(xù)操作的寄存器。2023/2/677共98頁8259A的中斷級聯(lián)一片8259A管理8級中斷,當(dāng)申請中斷的外設(shè)多于8級時,可以將8259A級聯(lián)使用,最簡單的級聯(lián)方式為兩級,第一級為8259A主片,第二級為8259A從片,主片可接1~8片8259A從片,這樣最多可管理64級中斷源。

在級聯(lián)系統(tǒng)中,主片和從片都要設(shè)置初始化命令字進行初始化,設(shè)置主片初始化命令字與無級聯(lián)單片8259A初始化時不同之處有以下幾點:(1)級聯(lián)時,ICW1中SNGL=0;單片時,SNGL=1。(2)級聯(lián)時,要求設(shè)置ICW3,若某個IRi引腳上連有從片,主片ICW3的對應(yīng)位設(shè)為1,未連接從片的對應(yīng)位設(shè)為0。單片不需要設(shè)置ICW3。(3)級聯(lián)時,主片可設(shè)置為特殊全嵌套工作方式,ICW4中SFNM=1。

2023/2/678共98頁8259A級聯(lián)方式連接圖

2023/2/679共98頁8259A的中斷級聯(lián)設(shè)置從片初始化命令字時,要注意以下兩點:(1)從片的ICW1中,SNGL=0。(2)從片必須設(shè)置ICW3,由ICW3中三個最低有效位ID2~ID0的組合來標(biāo)記此從片連到主片哪個IRi引腳上。級聯(lián)時中斷優(yōu)先級判別是由從片判別本片內(nèi)最高優(yōu)先級后,向8259A主片再申請中斷,然后由主片判別當(dāng)前最高優(yōu)先級,向CPU發(fā)中斷請求信號INT。注意當(dāng)8259A主片設(shè)置為特殊全嵌套工作方式時,允許相同級別的中斷請求通過。2023/2/680共98頁例:一個8259A主片,連接2片8259A從片,從片分別經(jīng)主片的IR3及IR5引腳接入,若主片設(shè)置為特殊全嵌套工作方式,從片設(shè)置為完全嵌套工作方式,則系統(tǒng)中優(yōu)先級排列次序為:主片IR0、IR1、IR2

從片IR0、IR1、…、IR7

主片IR4

從片IR0、IR1、…、IR7

主片IR6、IR7中斷處理結(jié)束時,CPU應(yīng)發(fā)出兩個EOI結(jié)束命令,一個送給主片8259A,另一個送給從片8259A,使8259A主片和從片的ISR寄存器相應(yīng)位清“0”,這樣一次中斷處理過程結(jié)束。2023/2/681共98頁例:特殊全嵌套工作方式:假設(shè)某微機系統(tǒng)的8086CPU工作在最小模式,中斷系統(tǒng)有1片8259A主片,2片8259A從片構(gòu)成級聯(lián)工作方式。從片1#從8259A主片IR6端引入,從片2#從8259A主片IR3端引入,8259A主片的IR0及IR4引入2個中斷請求信號。8259A從片1#由IR6端收到一個中斷請求信號IRRD7D6D5D4D3D2D1D0(從片1#)01000000ISRD7D6D5D4D3D2D1D0(從片1#)01000000IRRD7D6D5D4D3D2D1D0(主片)01000000ISRD7D6D5D4D3D2D1D0(主片)01000000IRRD7D6D5D4D3D2D1D0(從片1#)00000010ISRD7D6D5D4D3D2D1D0(從片1#)01000010在CPU中斷服務(wù)過程中,8259A從片1#收到IR1端來的中斷請求

2023/2/682共98頁例:某系統(tǒng)中兩片8259A采用中斷級聯(lián)方式組成中斷系統(tǒng),從片的INT端連8259A主片的IR3端。若當(dāng)前8259A主片從IR1、IR5端引入兩個中斷請求,中斷類型號為31H、35H。中斷服務(wù)程序的段基址為1000H,偏移地址分別為2000H及3000H。8259A從片由IR4、IR5端引入兩個中斷請求,中斷類型號為44H和45H,中斷服務(wù)程序段基址為2000H,偏移地址為3600H及4800H。2023/2/683共98頁2023/2/684共98頁2023/2/685共98頁(1)中斷向量表的設(shè)置:

MOV AX,1000H MOV DS,AX ;送入段地址

MOV DX,2000H ;送入偏移地址

MOV AX,2531H ;中斷類型號31H INT 21H MOV DX,3000H MOV AL,35H ;中斷類型號35H INT 21HMOV AX,2000H MOV DS,AX MOV DX,3600H MOV AX,2544H ;中斷類型號44H INT 21H MOV DX,4800H MOV AL,45H ;中斷類型號45H INT 21H2023/2/686共98頁(2)主片8259A初始化編程:假設(shè)主片的端口地址為0FFC8H和0FFC9H。

MOV AL,11H ;定義ICW1:級聯(lián)使用,邊沿觸發(fā),要設(shè)置ICW4

MOV DX,0FFC8H OUT DX,AL MOVAL,30H ;定義ICW2:主片中斷類型號為30H~37H MOVDX,0FFC9H OUT DX,AL MOV AL,08H ;定義ICW3:主片IR3連接從片的INT端

OUT DX,AL MOV AL,11H ;定義ICW4:特殊全嵌套方式,非緩沖方式, ;非自動EOI結(jié)束方式

OUT DX,AL MOV AL,0D5H ;定義OCW1:允許IR1、IR3、IR5中斷,其余;中斷請求輸入端的中斷請求被屏蔽

OUT DX,ALMOV AL,20H ;定義OCW2:普通EOI結(jié)束方式MOV DX,0FFC8HOUT DX,AL2023/2/687共98頁(3)8259A從片初始化編程:假設(shè)從片的端口地址為0FFCAH和0FFCBH。

MOV AL,11H ;定義ICW1:級聯(lián)使用,邊沿觸發(fā),要設(shè)置ICW4

MOV DX,0FFCAH OUT DX,AL MOV AL,40H ;定義ICW2:從片中斷類型號為40H~47H MOV DX,0FFCBH OUT DX,AL MOV AL,03H ;定義ICW3:從片的INT端連接主片IR3端

OUT DX,AL MOV AL,01H ;定義ICW4:完全嵌套方式,非緩沖方式, ;非自動EOI結(jié)束方式

OUT DX,AL MOV AL,0CFH ;定義OCW1:允許IR4、IR5中斷,其余;中斷請求輸入端的中斷請求被屏蔽

OUT DX,

溫馨提示

  • 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

提交評論