版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章 微機(jī)的中斷系統(tǒng)中斷源:引起程序中斷的事件稱中斷源。中斷源有外部中斷和內(nèi)部中斷。中斷請(qǐng)求、中斷響應(yīng)、中斷返回:中斷請(qǐng)求何時(shí)發(fā)生是隨機(jī)的。CPU在每條指令的最后一個(gè)周期去檢測(cè)INTR引腳,CPU一旦檢測(cè)到有中斷請(qǐng)求,在滿足中斷響應(yīng)的條件下(IF=1),CPU響應(yīng)中斷,向外設(shè)發(fā)中斷響應(yīng)信號(hào)。并保護(hù)斷點(diǎn)(當(dāng)前CS、IP和PSW值入棧),然后轉(zhuǎn)向中斷服務(wù)程序。中斷服務(wù)程序執(zhí)行完畢,CPU返回原執(zhí)行程序的中斷處,繼續(xù)向下執(zhí)行,稱為中斷返回。中斷向量表:CPU響應(yīng)中斷后,必須由中斷源提供地址信息,引導(dǎo)程序進(jìn)入中斷服務(wù)子程序,這些中斷服務(wù)程序的入口地址存放在中斷向量表中。內(nèi)存中專門開辟了一個(gè)區(qū)域,存放中斷向量表(也稱中斷矢量表)。中斷優(yōu)先級(jí)、中斷嵌套:當(dāng)有多個(gè)中斷源請(qǐng)求中斷時(shí),中斷系統(tǒng)判別中斷申請(qǐng)的優(yōu)先級(jí),CPU響應(yīng)優(yōu)先級(jí)高的中斷,掛起優(yōu)先級(jí)低的中斷。當(dāng)CPU在運(yùn)行中斷服務(wù)子程序時(shí),又有新的更高優(yōu)先級(jí)的中斷申請(qǐng)進(jìn)入,CPU要掛起原中斷進(jìn)入更高級(jí)的中斷服務(wù)子程序,實(shí)現(xiàn)中斷嵌套功能。中斷屏蔽:當(dāng)中斷源申請(qǐng)中斷時(shí),CPU可以由軟件設(shè)置,使之不能響應(yīng),稱為中斷屏蔽。中斷意義:分時(shí)處理;響應(yīng)速度快;可處理隨機(jī)事件。
什么是中斷?2023/2/61共98頁中斷系統(tǒng)應(yīng)具有以下功能:(1)能實(shí)現(xiàn)中斷響應(yīng)、中斷服務(wù)、中斷返回、中斷屏蔽;(2)能實(shí)現(xiàn)中斷優(yōu)先級(jí)排隊(duì);(3)能實(shí)現(xiàn)中斷嵌套——優(yōu)先級(jí)高的中斷能中斷低級(jí)的中斷處理。2023/2/62共98頁中斷分類邊沿觸發(fā)、兩個(gè)時(shí)鐘周期高電平高電平觸發(fā)、維持到CPU響應(yīng)中斷才結(jié)束2023/2/63共98頁可屏蔽中斷處理的過程一般分成幾步:中斷請(qǐng)求;中斷響應(yīng);保護(hù)現(xiàn)場(chǎng);轉(zhuǎn)入執(zhí)行中斷服務(wù)子程序;恢復(fù)現(xiàn)場(chǎng)和中斷返回。CPU響應(yīng)可屏蔽中斷要有三個(gè)條件:外設(shè)提出中斷申請(qǐng)中斷允許(IF=1,開中斷)本中斷屏蔽位未被屏蔽
可屏蔽中斷處理過程2023/2/64共98頁開中斷關(guān)中斷可屏蔽中斷的工作流程2023/2/65共98頁中斷響應(yīng)過程(以可屏蔽中斷為例)1、外設(shè)通過INTR向CPU發(fā)出中斷請(qǐng)求;2、CPU在執(zhí)行完現(xiàn)行指令后,響應(yīng)該中斷請(qǐng)求(IF=1);3、外設(shè)向CPU提供中斷類型號(hào);4、CPU將PSW、CS、IP壓入堆棧;5、清除IF、TF(默認(rèn)情況下為不允許中斷嵌套);6、從中斷向量表中取出中斷向量,置入IP、CS;7、執(zhí)行中斷例程;8、在中斷例程中,如果允許中斷嵌套,則開中斷(STI);9、執(zhí)行IRET,從堆棧中彈出IP、CS、PSW。2023/2/66共98頁微機(jī)中斷處理流程圖有些情況要再執(zhí)行完下一條指令才響應(yīng)外部中斷:1、正在執(zhí)行封鎖指令;2、向段寄存器傳送數(shù)據(jù)(MOV、POP);遇到等待指令和串操作指令時(shí),在當(dāng)前指令一個(gè)基本操作完成后即可進(jìn)入中斷響應(yīng)。2023/2/67共98頁例:軟件中斷執(zhí)行的過程中斷向量表2023/2/68共98頁微機(jī)中斷管理控制器管理的中斷注意:系統(tǒng)使用的中斷類型,不允許用戶使用和更改:中斷向量不能修改;在RAM中的中斷服務(wù)程序代碼不能修改。2023/2/69共98頁如何編寫用戶自己的中斷服務(wù)程序?(對(duì)軟中斷而言)(1)確定中斷類型號(hào),設(shè)置中斷向量;(2)使用INTi8指令調(diào)用軟件中斷服務(wù)程序。主程序(1)保護(hù)現(xiàn)場(chǎng)(保存某些寄存器的內(nèi)容)。(2)若允許外部可屏蔽中斷嵌套,則開中斷(STI)。(3)處理中斷服務(wù)。(4)關(guān)中斷。(5)恢復(fù)現(xiàn)場(chǎng)。(6)返回被中斷的程序(IRET)。中斷服務(wù)程序2023/2/610共98頁中斷向量的設(shè)置:1、一種方法用指令來設(shè)置;2、利用DOS功能調(diào)用來設(shè)置。[例]用指令來設(shè)置中斷服務(wù)程序的入口地址到中斷類型號(hào)n所對(duì)應(yīng)的中斷向量表中。
MOV AX,0 ;主程序中設(shè)置中斷向量
MOV ES,AX MOV DI,N*4 ;中斷類型號(hào)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ù)程序和主程序在同一個(gè)代碼段: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í)際上,我們?cè)谠O(shè)置或檢查任何中斷向量時(shí),總是避免直接使用中斷向量的絕對(duì)地址,而是利用DOS功能調(diào)用INT2lH設(shè)置中斷向量和取出中斷向量。此外要注意,在設(shè)置自己的中斷向量時(shí),應(yīng)先保存原中斷向量,再設(shè)置新的中斷向量,在程序結(jié)束前恢復(fù)原中斷向量。中斷向量的設(shè)置(DOS功能調(diào)用INT21H)功能號(hào):AH=25H入口參數(shù): AL=中斷類型號(hào),DS:DX中斷向量(段地址:偏移地址)出口參數(shù):無獲取某個(gè)中斷類型的中斷向量(DOS功能調(diào)用INT21H)功能號(hào):AH=35H入口參數(shù):AL=中斷類型號(hào)出口參數(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。因?yàn)槿绻雀淖僁S, ;就不能準(zhǔn)確獲得INTOFF變量值。
INT21H MOVAX,4C00H INT21H2023/2/617共98頁;80H類型中斷服務(wù)程序:顯示一個(gè)字符串。NEW80HPROCPUSHDX PUSHAX ;保護(hù)現(xiàn)場(chǎng)
STI ;開中斷MOVDX,OFFSETINTMSGMOVAH,09HINT21HCLIPOPAXPOPDX ;恢復(fù)現(xiàn)場(chǎng)
STIIRET ;中斷返回NEW80H ENDP ;中斷服務(wù)程序結(jié)束CODE ENDS ENDSTART2023/2/618共98頁中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)(優(yōu)先權(quán))是指系統(tǒng)設(shè)計(jì)者事先根據(jù)輕重緩急,給每個(gè)中斷源確定的優(yōu)先服務(wù)的級(jí)別。微機(jī)系統(tǒng)需要根據(jù)中斷優(yōu)先級(jí)的高低確定先為那個(gè)中斷源服務(wù)。IBMPC機(jī)中規(guī)定優(yōu)先級(jí)從高到低的次序?yàn)椋簂
除法錯(cuò),INTO,INTnl
不可屏蔽中斷(NMI)l
可屏蔽中斷(INTR)l
單步中斷2023/2/619共98頁可屏蔽中斷優(yōu)先級(jí)的確定方法:(1)軟件查詢的方法:
2023/2/620共98頁可屏蔽中斷優(yōu)先級(jí)的確定方法:(1)軟件查詢的方法:
軟件查詢的方法的流程圖2023/2/621共98頁可屏蔽中斷優(yōu)先級(jí)的確定方法:(2)硬件查詢優(yōu)先方式——菊花鏈法(3)專用芯片的管理方式(Intel8259A)2023/2/622共98頁中斷嵌套是指在中斷服務(wù)過程中,CPU又得到優(yōu)先權(quán)更高的外部可屏蔽中斷的請(qǐng)求,則當(dāng)前的中斷服務(wù)被打斷,優(yōu)先權(quán)更高的中斷優(yōu)先獲得服務(wù),待返回后,再繼續(xù)執(zhí)行被打斷的中斷服務(wù)。只要條件滿足,可以發(fā)生多重嵌套,也被稱為多重中斷。對(duì)于軟件中斷指令和NMI中斷,CPU必須立即無條件響應(yīng),對(duì)于外部可屏蔽中斷請(qǐng)求,只有IF=1,CPU才能響應(yīng)。因此,可屏蔽中斷的嵌套發(fā)生的條件是:(1)IF=1;(2)在外部可屏蔽中斷服務(wù)過程中,CPU又得到優(yōu)先權(quán)更高的外部可屏蔽中斷的請(qǐng)求??善帘沃袛嗟那短?023/2/623共98頁可屏蔽中斷的嵌套對(duì)于8086系統(tǒng)中,什么原因使IF=0?(1)系統(tǒng)復(fù)位操作后;(2)任一中斷響應(yīng)后(包括內(nèi)、外部所有的中斷);(3)執(zhí)行CLI指令后。因此,要實(shí)現(xiàn)可屏蔽中斷的嵌套,必須在當(dāng)前的中斷服務(wù)程序中設(shè)置STI指令。IRET指令對(duì)IF的影響:中斷服務(wù)程序最后執(zhí)行中斷返回指令I(lǐng)RET,將使IF恢復(fù)到進(jìn)入該中斷以前的狀態(tài)。(PSW)2023/2/624共98頁多個(gè)可屏蔽中斷源中斷流程圖響應(yīng)中斷后自動(dòng)設(shè)置防止中斷重復(fù)嵌套由PIC控制允許響應(yīng)優(yōu)先級(jí)高的中斷請(qǐng)求恢復(fù)現(xiàn)場(chǎng)的工作不希望被中斷打斷可屏蔽中斷的嵌套2023/2/625共98頁可屏蔽中斷的嵌套2023/2/626共98頁Intel8259A8259A是8086/8088系統(tǒng)的可編程中斷控制器,它的主要功能是:每片具有8級(jí)優(yōu)先級(jí)控制,通過級(jí)聯(lián)(9片8259A)可以擴(kuò)展到64級(jí)優(yōu)先級(jí)控制。(2)每一級(jí)中斷可由程序單獨(dú)屏蔽或允許。(3)可提供中斷類型號(hào)傳送給CPU。(4)可以通過編程選擇多種不同工作方式。D7~D0:雙向數(shù)據(jù)線,三態(tài),它直接或通過總線驅(qū)動(dòng)器與系統(tǒng)的數(shù)據(jù)總線相連。IR7~I(xiàn)R0:外設(shè)的中斷請(qǐng)求信號(hào)輸入端,輸入,中斷請(qǐng)求信號(hào)可以是電平觸發(fā)或邊沿觸發(fā)。中斷級(jí)聯(lián)時(shí),連接8259A從片INT端。RD:讀命令信號(hào),輸入,低電平有效,用來控制數(shù)據(jù)由8259A讀到CPU。WR:寫命令信號(hào),輸入,低電平有效,用來控制數(shù)據(jù)由CPU寫到8259A。CS:片選信號(hào),輸入,通過譯碼電路與高位地址總線相連。A0:選擇8259A的兩個(gè)端口,輸入,連低位地址線,用于選擇內(nèi)部端口。引腳信號(hào)2023/2/627共98頁Intel8259AINT:向CPU發(fā)出的中斷請(qǐng)求信號(hào),輸出,與CPU的INTR端相連。INTA:CPU給8259A的中斷響應(yīng)信號(hào),輸入。8259A要求兩個(gè)負(fù)脈沖的中斷響應(yīng)信號(hào),第一個(gè)是CPU響應(yīng)中斷的信號(hào),第二個(gè)INTA結(jié)束后,CPU讀取8259A送去的中斷類型號(hào)。CAS2~CAS0:雙向級(jí)聯(lián)信號(hào)線。8259A作主片時(shí),為輸出線,作從片時(shí),為輸入線。與SP/EN配合實(shí)現(xiàn)8259A級(jí)聯(lián)。SP/EN:編程/雙向使能緩沖。采用非緩沖方式,決定本片8259A是主片還是從片:若SP=1,則為主片;若SP=O,則為從片。采用緩沖方式,啟動(dòng)8259A到CPU之間的數(shù)據(jù)總線驅(qū)動(dòng)器,EN=O,表示允許8259A通過緩沖器輸出,EN=1,表示寫8259A
。引腳信號(hào)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送來的讀/寫命令、片選信號(hào)CS及端口選擇信號(hào)A0。高位地址譯碼后送作片選信號(hào)。A0連地址總線A0或A1,用來選擇8259A的兩個(gè)I/O端口,一個(gè)為奇地址,另一個(gè)偶地址。在IBMPC/XT機(jī)中用A9~A1譯碼來產(chǎn)生信號(hào),組合為00001××××b,產(chǎn)生I/O端口地址為20H~3FH,共32個(gè)。而8259A只需要兩個(gè)I/O端口地址,IBMPC/XT取20H(A0=0)、21H(A0=1)兩個(gè)地址在編程時(shí)使用。但其它30個(gè)地址為影象地址,不可能再分配給其它I/O設(shè)備使用。當(dāng)8位I/O接口芯片與8086CPU的l6位數(shù)據(jù)總線相連接時(shí),8259A的D7~D0與CPU數(shù)據(jù)總線低8位相連。為了保證CPU與8259A用低8位傳輸數(shù)據(jù),CPU的A1連8259A的A0。這樣對(duì)CPU來說A0=0,A1可以為1或?yàn)?,CPU讀寫始終是用偶地址。對(duì)8259A來說A1可以為1或?yàn)?,給8259A的端口分配了兩個(gè)地址,一個(gè)奇地址,一個(gè)偶地址,符合了8259A的編程要求。
內(nèi)部結(jié)構(gòu)2023/2/630共98頁2023/2/631共98頁3、級(jí)聯(lián)緩沖/比較器級(jí)聯(lián)緩沖/比較器用于多片8259A級(jí)聯(lián)使用,主從之間專用的總線。4、中斷請(qǐng)求寄存器IRR(InterruptRequestRegister)中斷請(qǐng)求寄存器是一個(gè)8位寄存器,存放外部輸入的中斷請(qǐng)求信號(hào)IR7~I(xiàn)R0。當(dāng)某個(gè)IR端有中斷請(qǐng)求時(shí),IRR相應(yīng)的某位置“1”。可以允許8個(gè)中斷請(qǐng)求信號(hào)同時(shí)進(jìn)入,此時(shí)IRR寄存器被置成全“1”。當(dāng)中斷請(qǐng)求被響應(yīng)時(shí),IRR的相應(yīng)位復(fù)位。5、中斷屏蔽寄存器IMR(InterruptMaskRegister)中斷屏蔽寄存器是一個(gè)8位寄存器,用來存放對(duì)各級(jí)中斷請(qǐng)求的屏蔽信息??捎密浖幊淘O(shè)置IMR寄存器。當(dāng)D5=1,表示由IR5引入的中斷請(qǐng)求不允許進(jìn)入中斷優(yōu)先級(jí)判別器。(與IF的設(shè)置恰恰相反)6、優(yōu)先級(jí)判別器PR優(yōu)先級(jí)判別器對(duì)保存在IRR寄存器中的中斷請(qǐng)求進(jìn)行優(yōu)先級(jí)識(shí)別,送出最高優(yōu)先級(jí)的中斷請(qǐng)求到中斷服務(wù)寄存器ISR中去。當(dāng)出現(xiàn)多重中斷時(shí),PR判定是否允許所出現(xiàn)的中斷去打斷正在處理的中斷,讓優(yōu)先級(jí)更高的中斷優(yōu)先處理。Intel8259A內(nèi)部結(jié)構(gòu)2023/2/632共98頁7、中斷服務(wù)寄存器ISR(InterruptServiceRegister)中斷服務(wù)寄存器是一個(gè)8位寄存器,保存正在處理中的中斷請(qǐng)求信號(hào),某個(gè)IR端的中斷請(qǐng)求被CPU響應(yīng)后,當(dāng)CPU發(fā)出第一個(gè)INTA信號(hào)時(shí),ISR寄存器中的相應(yīng)位置“1”,一直保持到該級(jí)中斷處理結(jié)束為止。允許多重中斷時(shí),ISR多位同時(shí)被置成“1”。此寄存器可被CPU讀出。中斷處理結(jié)束前,要使用指令清除這一位。8、控制電路控制電路是8259A的內(nèi)部控制器。根據(jù)中斷請(qǐng)求寄存器IRR的置位情況和中斷屏蔽寄存器IMR設(shè)置的情況,通過優(yōu)先級(jí)判別器PR判定優(yōu)先級(jí),向8259A內(nèi)部及其它部件發(fā)出控制信號(hào)。并向CPU發(fā)出中斷請(qǐng)求信號(hào)INT和接收CPU的中斷響應(yīng)信號(hào)INTA,使中斷服務(wù)寄存器ISR相應(yīng)位置“1”,并使中斷請(qǐng)求寄存器IRR相應(yīng)位置“0”。當(dāng)CPU第二個(gè)INTA信號(hào)到來,控制8259A送出中斷類型號(hào),使CPU轉(zhuǎn)入中斷服務(wù)子程序。如果命令字ICW4的中斷自動(dòng)結(jié)束位為“1”,則在第二個(gè)INTA脈沖結(jié)束時(shí),將8259A中斷服務(wù)寄存器ISR的相應(yīng)位清“0”。Intel8259A內(nèi)部結(jié)構(gòu)2023/2/633共98頁中斷響應(yīng)時(shí)序
最大模式T2和T32023/2/634共98頁(1)8086要求中斷請(qǐng)求信號(hào)INTR是一個(gè)電平信號(hào),必須維持兩個(gè)時(shí)鐘周期的高電平。否則CPU執(zhí)行完一條指令后,如果總線接口部件正在執(zhí)行總線周期,則會(huì)使中斷請(qǐng)求得不到響應(yīng)而執(zhí)行其他的總線周期。(2)8086工作在最大模式時(shí),不從INTA引腳上發(fā)中斷響應(yīng)脈沖,而是由S2S1S0組合為000,通過總線控制器8288發(fā)出INTA中斷響應(yīng)信號(hào)。(3)8086不允許在兩個(gè)INTA周期之間響應(yīng)總線保持請(qǐng)求(通過HOLD請(qǐng)求),但如果同時(shí)出現(xiàn)中斷請(qǐng)求和總線保持請(qǐng)求,則CPU先對(duì)總線保持請(qǐng)求服務(wù)。(4)外設(shè)的中斷類型號(hào)一般通過16位數(shù)據(jù)總線的低8位傳送給8086,提供中斷向量的外設(shè)接口應(yīng)該接在數(shù)據(jù)總線的低8位上。(5)在兩個(gè)中斷響應(yīng)總線周期中,地址/數(shù)據(jù)/狀態(tài)總線是浮空的,但是M/IO為低電平,而ALE在每個(gè)總線周期的T1狀態(tài)輸出一個(gè)高電平脈沖,作為地址鎖存信號(hào)。(6)軟件中斷和非屏蔽中斷不按照這種時(shí)序來響應(yīng)中斷。中斷響應(yīng)時(shí)序
2023/2/635共98頁8259A中斷管理方式1、8259A的編程結(jié)構(gòu)優(yōu)先級(jí)和結(jié)束方式
屏蔽和查詢方式
2023/2/636共98頁(1)中斷管理方式是通過8259A初始化時(shí)寫入初始化命令字和操作命令字來設(shè)置的。(2)初始化命令字寫入寄存器ICW1~I(xiàn)CW4,它是由初始化程序設(shè)置的,初始化命令字一經(jīng)設(shè)定,在系統(tǒng)工作過程中就不再改變。(3)操作命令字寫入寄存器OCW1~OCW3,它是由應(yīng)用程序設(shè)定的,用來對(duì)中斷處理過程進(jìn)行控制,在系統(tǒng)運(yùn)行過程中,操作命令字可以重新設(shè)置。8259A中斷管理方式1、8259A的編程結(jié)構(gòu)2023/2/637共98頁2、優(yōu)先級(jí)設(shè)置方式8259A中斷管理方式(1)完全嵌套方式若8259A初始化后沒有設(shè)置其它優(yōu)先級(jí)的方式,就自動(dòng)進(jìn)入完全嵌套方式。在這種方式下,中斷優(yōu)先級(jí)分配固定級(jí)別0~7級(jí),IR0具有最高優(yōu)先級(jí),IR7優(yōu)先級(jí)最低。也可用初始化命令字ICW4中SFNM=0,將8259A置成完全嵌套優(yōu)先級(jí)方式。允許打斷正在處理的中斷,優(yōu)先處理更高級(jí)的中斷,實(shí)現(xiàn)中斷嵌套,但禁止同級(jí)與低級(jí)中斷請(qǐng)求進(jìn)入。
有兩種中斷結(jié)束方式:普通EOI結(jié)束方式和自動(dòng)AEOI結(jié)束方式。2023/2/638共98頁(2)特殊全嵌套工作方式在級(jí)聯(lián)時(shí),還有一種特殊全嵌套工作方式,它與全嵌套工作方式基本相同。區(qū)別在于當(dāng)處理某級(jí)中斷時(shí),有同級(jí)中斷請(qǐng)求進(jìn)入,8259A也會(huì)響應(yīng),從而實(shí)現(xiàn)了對(duì)同級(jí)中斷請(qǐng)求的特殊嵌套。2、優(yōu)先級(jí)設(shè)置方式8259A中斷管理方式在級(jí)聯(lián)方式中,主片編程為特殊全嵌套工作方式,從片為其它優(yōu)先級(jí)方式(完全嵌套方式或優(yōu)先級(jí)循環(huán)方式)。特殊全嵌套工作方式的設(shè)置是主片初始化時(shí)ICW4中的SFNM=1,同時(shí)將從片ICW4中AEOI位置“0”,設(shè)成非自動(dòng)結(jié)束方式,通常用特殊EOI結(jié)束方式。2023/2/639共98頁2、優(yōu)先級(jí)設(shè)置方式8259A中斷管理方式(3)優(yōu)先級(jí)自動(dòng)循環(huán)方式在優(yōu)先級(jí)自動(dòng)循環(huán)方式中,優(yōu)先級(jí)別可以改變。初始優(yōu)先級(jí)次序規(guī)定為IR0、IR1、…、IR7,當(dāng)任何一級(jí)中斷被處理完后,它的優(yōu)先級(jí)別變?yōu)樽畹?,將最高?yōu)先級(jí)賦給原來比它低一級(jí)的中斷請(qǐng)求,其它依次類推。
用操作命令字OCW2中R、SL=10就可設(shè)置優(yōu)先級(jí)自動(dòng)循環(huán)方式。根據(jù)結(jié)束方式不同,有兩種自動(dòng)循環(huán)方式:普通EOI循環(huán)方式和自動(dòng)EOI循環(huán)方式。2023/2/640共98頁(4)優(yōu)先級(jí)特殊循環(huán)方式優(yōu)先級(jí)特殊循環(huán)方式和優(yōu)先級(jí)自動(dòng)循環(huán)方式相比,不同之處在于優(yōu)先級(jí)特殊循環(huán)方式中,初始時(shí)最低優(yōu)先級(jí)由程序規(guī)定,最高優(yōu)先級(jí)也就確定了。例如初始時(shí)指定IR1為最低優(yōu)先級(jí),則IR2為最高優(yōu)先級(jí),其它依次類推。而優(yōu)先級(jí)自動(dòng)循環(huán)方式初始時(shí)最高優(yōu)先級(jí)一定是IR0。用操作命令字OCW2中R、SL=11就可設(shè)置優(yōu)先級(jí)特殊循環(huán)方式,結(jié)束方式通常用特殊EOI循環(huán)方式。2、優(yōu)先級(jí)設(shè)置方式8259A中斷管理方式2023/2/641共98頁3、中斷源屏蔽方式
8259A中斷管理方式(1)普通屏蔽方式將中斷屏蔽寄存器IMR中某一位或某幾位置“1”,即可將對(duì)應(yīng)位的中斷請(qǐng)求屏蔽掉。普通屏蔽方式的設(shè)置通過設(shè)置操作命令字OCW1來實(shí)現(xiàn)。[例]屏蔽第2、3、5、6位進(jìn)入的中斷請(qǐng)求,假設(shè)8259A的端口地址為20H,21H。 MOVAL,01101100H ;屏蔽字 OUT21H,AL對(duì)OCW1的設(shè)置可以在主程序中,也可放在中斷服務(wù)程序中,具體根據(jù)中斷處理要求而定。2023/2/642共98頁3、中斷源屏蔽方式
8259A中斷管理方式(2)特殊屏蔽方式此方式能對(duì)本級(jí)中斷進(jìn)行屏蔽,而允許優(yōu)先級(jí)比它高或低的中斷進(jìn)入,特殊屏蔽方式總是在中斷處理程序中使用,特殊屏蔽方式的設(shè)置是通過設(shè)置操作命令字OCW3中的ESMM、SMM=11來實(shí)現(xiàn)的,例如:當(dāng)前正在執(zhí)行IR3的中斷服務(wù)程序,設(shè)置了特殊屏蔽方式后,再用OCW1對(duì)中斷屏蔽寄存器中第3位置“1”時(shí),就會(huì)同時(shí)使當(dāng)前中斷服務(wù)寄存器中對(duì)應(yīng)位自動(dòng)清“0”,這樣可以既屏蔽了當(dāng)前正在處理的中斷,又開放了較低級(jí)別的中斷。待中斷服務(wù)程序結(jié)束時(shí),應(yīng)將IMR寄存器的第3位復(fù)位,并將SMM位復(fù)位,表示退出特殊屏蔽方式。2023/2/643共98頁在固定優(yōu)先級(jí)方式中,對(duì)中斷結(jié)束的處理有自動(dòng)AEOI結(jié)束方式和非自動(dòng)結(jié)束方式,非自動(dòng)結(jié)束方式又分普通EOI結(jié)束方式和特殊SEOI結(jié)束方式。為什么要進(jìn)行中斷結(jié)束處理?中斷結(jié)束處理實(shí)際上就是對(duì)中斷服務(wù)寄存器ISR中對(duì)應(yīng)位的處理。當(dāng)一個(gè)中斷得到響應(yīng)時(shí),8259A使ISR寄存器中對(duì)應(yīng)位置“1”,表明此對(duì)應(yīng)外設(shè)正在服務(wù),并為中斷優(yōu)先級(jí)判別器提供判別依據(jù)。中斷結(jié)束時(shí),必須使ISR寄存器中對(duì)應(yīng)位置“0”,否則中斷優(yōu)先級(jí)判別會(huì)不正常。什么時(shí)刻使ISR中對(duì)應(yīng)位置“0”,就產(chǎn)生不同的中斷結(jié)束方式。8259A中斷管理方式4、中斷結(jié)束方式2023/2/644共98頁(1)普通EOI結(jié)束方式在完全嵌套工作方式下,任何一級(jí)中斷處理結(jié)束返回上一級(jí)程序前,CPU向8259A傳送EOI結(jié)束命令字,8259A收到EOI結(jié)束命令后,自動(dòng)將ISR寄存器中級(jí)別最高的置“1”位清“0”(此位對(duì)應(yīng)當(dāng)前正在處理的中斷)。
EOI結(jié)束命令字必須放在返回指令I(lǐng)RET前,沒有EOI結(jié)束命令,ISR寄存器中對(duì)應(yīng)位仍為“1”,繼續(xù)屏蔽同級(jí)或低級(jí)的中斷請(qǐng)求。普通EOI結(jié)束命令字是設(shè)置OCW2中EOI位為1,即OCW2中R、SL、EOI組合為001。對(duì)IBMPC/XT機(jī),發(fā)EOI結(jié)束命令字指令為:
MOV AL,20H OUT 20H,AL;ALOCW2
8259A中斷管理方式4、中斷結(jié)束方式2023/2/645共98頁(2)特殊EOI結(jié)束方式在非全嵌套工作方式下,中斷服務(wù)寄存器無法確定哪一級(jí)中斷為最后響應(yīng)和處理的,這時(shí)要采用特殊SE0I結(jié)束方式。CPU向8259A發(fā)特殊EOI結(jié)束命令字,命令字中將當(dāng)前要清除的中斷級(jí)別也傳給8259A。此時(shí),8259將ISR寄存器中指定級(jí)別的對(duì)應(yīng)位清“0”,它在任何情況下均可使用。特殊EOI結(jié)束命令字是將OCW2中R、SL、EOI設(shè)置成011,而L2~L0三個(gè)位指明了中斷結(jié)束的對(duì)應(yīng)位。8259A中斷管理方式4、中斷結(jié)束方式2023/2/646共98頁(3)自動(dòng)EOI結(jié)束方式在AEOI方式中,任何一級(jí)中斷被響應(yīng)后,ISR寄存器對(duì)應(yīng)位置“1”,但在CPU進(jìn)入中斷響應(yīng)周期,發(fā)第二個(gè)INTA脈沖后,8259A自動(dòng)將ISR寄存器中對(duì)應(yīng)位清“O”。此時(shí),盡管對(duì)某個(gè)外設(shè)正在進(jìn)行中斷服務(wù),但對(duì)8259A來說,ISR寄存器中沒有指示,好象已結(jié)束了中斷處理一樣。
通常在只有一片8259A,多個(gè)中斷不會(huì)嵌套情況下使用。自動(dòng)AEOI方式設(shè)置是在8259A初始化時(shí),用初始化命令字ICW4中使AEOI=1的方法來實(shí)現(xiàn)的。在級(jí)聯(lián)方式下,一般用非自動(dòng)結(jié)束方式,無論用普通EOI結(jié)束方式,還是用特殊EOI結(jié)束方式,中斷處理結(jié)束時(shí),要發(fā)兩次中斷結(jié)束命令,一次是對(duì)主片發(fā)的,另一次是對(duì)從片發(fā)的。8259A中斷管理方式4、中斷結(jié)束方式2023/2/647共98頁8259A中斷管理方式5、循環(huán)優(yōu)先級(jí)的循環(huán)方式(1)普通EOI循環(huán)方式在主程序或中斷服務(wù)程序中設(shè)置操作命令字,當(dāng)任何一級(jí)中斷被處理完后,使CPU給8259A回送普通EOI循環(huán)命令,8259A收到EOI循環(huán)命令后,將ISR寄存器中,最高優(yōu)先級(jí)的IRi置“1”位清“0”,并賦給它最低優(yōu)先級(jí),將最高優(yōu)先級(jí)賦給它的下一級(jí)IRi+1,其它依次類推。
普通EOI循環(huán)方式命令字是設(shè)置OCW2。在非自動(dòng)結(jié)束方式中,OCW2中的R、SL、EOI設(shè)置成101,L2~L0不起作用。2023/2/648共98頁(2)特殊EOI循環(huán)方式特殊EOI循環(huán)方式即指定最低優(yōu)先級(jí)循環(huán)方式,最低優(yōu)先級(jí)由編程確定,最高優(yōu)先級(jí)也相應(yīng)而定,這樣在當(dāng)前中斷服務(wù)程序結(jié)束前,使CPU給8259A回送特殊EOI結(jié)束命令,同時(shí)將當(dāng)前就要結(jié)束的中斷級(jí)別也傳送給8259A,8259A收到此命令字后,將ISR中相應(yīng)位清“0”。顯然這種結(jié)束方式最為安全可靠。
8259A中斷管理方式5、循環(huán)優(yōu)先級(jí)的循環(huán)方式設(shè)定特殊EOI循環(huán)方式時(shí),設(shè)置OCW2中R、SL、EOI=111,L2~L0指定了一個(gè)最低優(yōu)先級(jí)。2023/2/649共98頁(3)自動(dòng)EOI循環(huán)方式在自動(dòng)EOI循環(huán)方式中,任何一級(jí)中斷被響應(yīng)后,中斷響應(yīng)總線周期中第二個(gè)INTA信號(hào)的后沿自動(dòng)將ISR寄存器中相應(yīng)位清“0”,并立即改變各級(jí)中斷的優(yōu)先級(jí)別,改變方式與普通EOI循環(huán)方式相同。使用這種方式要小心,防止重復(fù)嵌套產(chǎn)生。自動(dòng)EOI循環(huán)方式設(shè)置是OCW2中R、SL、EOI=100。8259A中斷管理方式5、循環(huán)優(yōu)先級(jí)的循環(huán)方式2023/2/650共98頁(1)邊沿觸發(fā)方式在邊沿觸發(fā)方式下,8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào)。中斷請(qǐng)求輸入端出現(xiàn)上升沿觸發(fā)信號(hào)后,可以一直保持高電平。(2)電平觸發(fā)方式在電平觸發(fā)方式下,8259A將中斷請(qǐng)求輸入端出現(xiàn)的高電平作為中斷請(qǐng)求信號(hào)。但當(dāng)中斷得到響應(yīng)后,中斷輸入端必須及時(shí)撤出高電平,否則在CPU進(jìn)入中斷處理過程,并且開中斷的情況下,原輸入端的高電平會(huì)引起第二次中斷的錯(cuò)誤。(3)中斷查詢方式在中斷查詢方式下,外部設(shè)備向8259A發(fā)中斷請(qǐng)求信號(hào),中斷請(qǐng)求可以是邊沿觸發(fā),也可以是電平觸發(fā)。但8259A不通過INT信號(hào)向CPU發(fā)中斷請(qǐng)求信號(hào),CPU要使用軟件查詢來確定中斷源。8259A中斷管理方式6、中斷請(qǐng)求引入方式2023/2/651共98頁2023/2/652共98頁(1)中斷源在IR0—IR7上產(chǎn)生中斷請(qǐng)求;(2)中斷請(qǐng)求被鎖存在IRR中,經(jīng)IMR”屏蔽”,送PR;(3)控制電路接收中斷請(qǐng)求,向CPU輸出INT信號(hào)(4)CPU接收8259A的INT信號(hào),在IF=1下,發(fā)INTA;
(5)設(shè)置ISR中對(duì)應(yīng)位;(6)若8259A作為主片。則在第一個(gè)INTA將級(jí)聯(lián)地址從CAS0—CAS2送出;若8259A單獨(dú)使用或是由CAS0—CAS2選擇的從片,就在第二個(gè)INTA中將中斷類型號(hào)輸出到低8位數(shù)據(jù)總線上;(7)CPU讀出該中斷類型號(hào),轉(zhuǎn)到對(duì)應(yīng)的中斷服務(wù)程序;(8)中斷處理結(jié)束前,中斷處理程序向8259A發(fā)送一條EOI(中斷結(jié)束)命令,使ISR相應(yīng)位復(fù)位,本次中斷結(jié)束;8259A中斷管理方式7、工作過程2023/2/653共98頁(1)固定優(yōu)先級(jí)
各個(gè)中斷源優(yōu)先級(jí)由它所連接的引腳編號(hào)決定;1、全嵌套方式(常用的一種工作方式)若8259A初始化后沒有設(shè)置其它優(yōu)先級(jí)的方式,就自動(dòng)進(jìn)入全嵌套方式。IR0具有最高優(yōu)先級(jí),IR7優(yōu)先級(jí)最低。2、特殊全嵌套方式(一般用于級(jí)聯(lián)情況下)在級(jí)聯(lián)方式中,從片上8個(gè)中斷請(qǐng)求有著不同的優(yōu)先級(jí)別,但從主片來看,屬于同一級(jí)別。假設(shè)從片為全嵌套方式,先后收到兩次中斷請(qǐng)求,且第二次有較高的優(yōu)先級(jí),該從片就會(huì)兩次通過INT向上一級(jí)申請(qǐng)中斷,如果主片為全嵌套工作方式,則它不會(huì)響應(yīng)來自同一個(gè)引腳的第二次中斷請(qǐng)求,而主片處于特殊全嵌套工作方式時(shí),就能響應(yīng)請(qǐng)求。一般情況下:?jiǎn)纹短追绞?;多片,主片特殊全嵌套方式,從片全嵌套方式?259A中斷管理方式優(yōu)先權(quán)管理小結(jié)2023/2/654共98頁(2)循環(huán)優(yōu)先級(jí)方式
各個(gè)中斷申請(qǐng)具有大體相同的優(yōu)先級(jí)。1、優(yōu)先級(jí)自動(dòng)循環(huán)方式初始優(yōu)先級(jí)次序規(guī)定為IR0、IR1、…、IR7,當(dāng)任何一級(jí)中斷被處理完后,它的優(yōu)先級(jí)別變?yōu)樽畹?,將最高?yōu)先級(jí)賦給原來比它低一級(jí)的中斷請(qǐng)求,其它依次類推。2、優(yōu)先級(jí)特殊循環(huán)方式初始時(shí)最低優(yōu)先級(jí)由程序規(guī)定,最高優(yōu)先級(jí)也就確定了。8259A中斷管理方式優(yōu)先權(quán)管理小結(jié)2023/2/655共98頁中斷結(jié)束方式中斷服務(wù)完成時(shí),必須給8259A一個(gè)命令,使這個(gè)中斷級(jí)在ISR中對(duì)應(yīng)位清“0”,表示該中斷處理結(jié)束。(1)自動(dòng)中斷結(jié)束方式(AEOI) 系統(tǒng)一旦進(jìn)入中斷響應(yīng),8259A就在第二個(gè)INTA信號(hào)的后沿,自動(dòng)將ISR中對(duì)應(yīng)位清“0”。最簡(jiǎn)單一種中斷結(jié)束方式;注意:它只能用在系統(tǒng)中只有一個(gè)8259A,且多個(gè)中斷不會(huì)嵌套。(2)非自動(dòng)中斷結(jié)束方式(EOI)從中斷服務(wù)程序返回前,必須在程序中向8259A輸出一個(gè)中斷結(jié)束命令(EOI),把對(duì)應(yīng)于ISR中的位清“0”,具體由兩種:1、一般自動(dòng)中斷結(jié)束方式。指令中不指定清除ISR中哪一位,由8259A自動(dòng)選擇優(yōu)先權(quán)最高的位;2、特殊EOI結(jié)束方式。在指令中指明要清除ISR中某一位。注意:非自動(dòng)中斷結(jié)束方式如果在程序中沒有將ISR中對(duì)應(yīng)位清“0”,那么8259A在一般情況下將不再響應(yīng)這個(gè)中斷以及比他級(jí)別低的中斷請(qǐng)求。8259A中斷管理方式中斷結(jié)束方式小結(jié)2023/2/656共98頁8259A的編程方法對(duì)8259A的編程有兩類命令字:初始化命令字ICW(InitializationCommandWord)和操作命令字OCW(OperationCommandWord)。系統(tǒng)復(fù)位后,初始化程序?qū)?259A置入初始化命令字。初始化后可通過發(fā)出操作命令字OCW來定義8259A的操作方式,實(shí)現(xiàn)對(duì)8259A的狀態(tài)、中斷方式和優(yōu)先級(jí)管理的控制。初始化命令字只發(fā)一次,操作命令字允許重置,以動(dòng)態(tài)改變8259A的操作與控制方式。2023/2/657共98頁初始化命令字ICW對(duì)8259A編程初始化命令字,共預(yù)置4個(gè)命令字:ICW1、ICW2、ICW3、ICW4。初始化命令字必須順序填寫,但并不是任何情況下都要預(yù)置4個(gè)命令字,用戶根據(jù)具體使用情況而定。(1)ICW1——芯片控制初始化命令字注意:ICW1的D4位必須為1,用作ICW1的標(biāo)志。2023/2/658共98頁初始化命令字ICW2、ICW2——設(shè)置中斷類型號(hào)的初始化命令字A0:A0=1,表示ICW2必須寫到8259A的奇地址端口中。8259A中IR0端對(duì)應(yīng)的中斷類型號(hào)為中斷類型號(hào)的基值,它是可以被8整除的正整數(shù),ICW2用來設(shè)置這個(gè)中斷類型號(hào)基值,由此提供外部中斷的中斷類型號(hào)。ICW2低3位為0,高5位由用戶設(shè)定。當(dāng)8259A收到CPU發(fā)來的第二個(gè)INTA信號(hào),它向CPU發(fā)送中斷類型號(hào),其中高5位為ICW2的高5位,低3位根據(jù)IR0~I(xiàn)R7中響應(yīng)哪級(jí)中斷(對(duì)應(yīng)為000~111b)來確定。2023/2/659共98頁初始化命令字ICW3、ICW3——標(biāo)識(shí)主片/從片的初始化命令字2023/2/660共98頁初始化命令字ICW到CPU的INTR引腳2023/2/661共98頁初始化命令字ICW4、ICW4——方式控制初始化命令字ICW1為1時(shí),要求預(yù)置ICW4命令字,對(duì)8086/8088系統(tǒng)必須預(yù)置ICW4。2023/2/662共98頁初始化命令字的設(shè)置有固定次序,端口地址也有明確規(guī)定,并不會(huì)因?yàn)橹挥袃蓚€(gè)端口輸出命令而混淆。初始化命令字必須從ICW1開始設(shè)置,依次順序進(jìn)行設(shè)置,并分別根據(jù)ICW1中的SNGL位和IC4位決定是否設(shè)置ICW3和ICW4。級(jí)聯(lián)時(shí)要設(shè)置ICW3,并且主片與從片的ICW3設(shè)置不同。在初始化命令字設(shè)置完成前,對(duì)A0=1的輸出指令不可能是操作命令字。而初始化命令序列設(shè)置完成后,在操作命令字的設(shè)置中,不可能第二次初始化,因此不會(huì)混淆。初始化命令字ICW2023/2/663共98頁初始化命令字ICW初始化命令字設(shè)置次序2023/2/664共98頁初始化命令字ICW初始化命令字設(shè)置次序結(jié)束2023/2/665共98頁[例]
在IBMPC/XT系統(tǒng)中,ROM-BIOS中的8259A初始化程序?yàn)椋?/p>
…… MOV AL,13H ;單片、邊沿觸發(fā)、要設(shè)置ICW4
OUT 20H,AL ;寫入ICW1
MOV AL,08H ;中斷類型號(hào)基值為08H OUT 21H,AL ;寫入ICW2
MOV AL,0DH ;緩沖方式、非自動(dòng)EOI方式、 ;完全嵌套方式、 ;使用8086/8088微處理器。
OUT 21H,AL ;寫入ICW48259A經(jīng)初始化命令字ICW預(yù)置后已進(jìn)入初始化狀態(tài),可接收來自IRi端的中斷請(qǐng)求,自動(dòng)進(jìn)入操作命令狀態(tài),可以隨時(shí)接受CPU寫入8259A的操作命令字OCW。初始化命令字ICW2023/2/666共98頁例:兩片8259A進(jìn)行級(jí)聯(lián),主片SP/EN連+5V,從片SP/EN接地,邊沿觸發(fā),非緩沖方式,非自動(dòng)中斷結(jié)束,CAS0—CAS2互連,如前圖所示。主片:MOVAL00010001B;ICW1:邊沿觸發(fā),級(jí)聯(lián),設(shè)置
;ICW4OUT20H,ALMOVAL,00001000B;ICW2:中斷類型08H—0FHOUT21H,ALMOVAL,00001000B;ICW3:IR3連有從片OUT21H,ALMOVAL,00010001B;ICW4:特殊全嵌套,非緩沖,;非自動(dòng)中斷結(jié)束,8086微處理器
OUT21H,AL2023/2/667共98頁從片:MOVAL00010001B;ICW1:邊沿觸發(fā),級(jí)聯(lián)OUT0A0H,ALMOVAL,01110000B;ICW2:中斷類型70H—77HOUT0A1H,ALMOVAL,00000011B;ICW3:INT接主片IR3OUT0A1H,ALMOVAL,00000001B;ICW4:全嵌套,非緩沖,非自動(dòng)中斷結(jié)束,8086微處理器
OUT0A1H,AL2023/2/668共98頁操作命令字
操作命令字決定中斷屏蔽、中斷優(yōu)先級(jí)次序、中斷結(jié)束方式等。中斷管理較復(fù)雜,包括:完全嵌套優(yōu)先方式、特殊嵌套優(yōu)先方式、自動(dòng)循環(huán)優(yōu)先方式、特殊循環(huán)優(yōu)先方式、特殊屏蔽方式、查詢方式等。它是由操作命令字的設(shè)置來實(shí)現(xiàn)的,設(shè)置時(shí),次序上沒有嚴(yán)格要求,但端口地址有嚴(yán)格規(guī)定,OCW1必須寫入奇地址端口,OCW2和OCW3必須寫入偶地址端口。
2023/2/669共98頁操作命令字
(1)OCW1——中斷屏蔽操作命令字A0:A0=1,OCW1命令字必須寫入8259A奇地址端口。OCW1命令字的各位直接對(duì)應(yīng)中斷屏蔽寄存器IMR的各位,當(dāng)OCW1中某位Mi為1,對(duì)應(yīng)位的中斷請(qǐng)求受到屏蔽,某位為0,對(duì)應(yīng)位的中斷請(qǐng)求得到允許。(對(duì)比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時(shí),L2~L0有效。L2~L0有兩個(gè)用途,一是當(dāng)OCW2設(shè)置為特殊EOI結(jié)束命令時(shí)(011,111),L2~L0指出清除中斷服務(wù)寄存器中的哪一位;二是當(dāng)OCW2設(shè)置為特殊優(yōu)先級(jí)循環(huán)方式時(shí)(110),L2~L0指出循環(huán)開始時(shí)設(shè)置的最低優(yōu)先級(jí)。R、SL、EOI:組合起來指明優(yōu)先級(jí)設(shè)置方式和中斷結(jié)束方式,每位有各自的意義。R(Rotate):R=1,中斷優(yōu)先級(jí)是按循環(huán)方式設(shè)置的;R=0,設(shè)置為固定優(yōu)先級(jí)。SL(SpecificLevel):指明L2~L0是否有效。EOI(EndOfInterrupt):指定中斷結(jié)束方式。EOI=1,使用中斷結(jié)束命令使中斷服務(wù)寄存器中對(duì)應(yīng)位復(fù)0;EOI=0,不需要執(zhí)行結(jié)束操作命令。(ICW4的AEOI=1,OCW2中的EOI位應(yīng)為0)。OCW2的功能包括兩個(gè)方面,一方面是決定8259A是否采用優(yōu)先級(jí)循環(huán)方式,另一個(gè)方面是中斷結(jié)束采用普通的還是特殊的EOI結(jié)束方式。2023/2/672共98頁RSLEOI功
能100設(shè)置自動(dòng)EOI循環(huán)方式。在中斷響應(yīng)周期的第二個(gè)負(fù)脈沖信號(hào)結(jié)束時(shí),將ISR寄存器中正在服務(wù)的相應(yīng)位置0,本級(jí)賦予最低優(yōu)先級(jí),最高優(yōu)先級(jí)賦給它的下一級(jí),其它中斷優(yōu)先級(jí)依次循環(huán)賦給。000清除自動(dòng)EOI循環(huán)。101設(shè)置普通EOI循環(huán)。一旦中斷結(jié)束,8259A將中斷服務(wù)寄存器ISR中當(dāng)前級(jí)別最高的置1位清0,此級(jí)賦予最低優(yōu)先級(jí),最高優(yōu)先級(jí)賦給它的下一級(jí),其它中斷優(yōu)先級(jí)依次循環(huán)賦給。111設(shè)置特殊EOI循環(huán)。一旦中斷結(jié)束,將中斷服務(wù)寄存器ISR中由L2~L0字段給定級(jí)別的相應(yīng)位清0,此級(jí)賦于最低優(yōu)先級(jí),最高優(yōu)先級(jí)賦給它的下一級(jí),其它中斷優(yōu)先級(jí)依次循環(huán)賦給。110置位優(yōu)先級(jí)循環(huán)。8259A按L2~L0字段確定一個(gè)最低優(yōu)先級(jí),最高優(yōu)先級(jí)賦給它的下一級(jí),其它中斷優(yōu)先級(jí)依次循環(huán)賦給,系統(tǒng)工作在優(yōu)先級(jí)特殊循環(huán)方式。001普通EOI結(jié)束方式。一旦中斷處理結(jié)束,CPU向8259A發(fā)出EOI結(jié)束命令,將中斷服務(wù)寄存器ISR中當(dāng)前級(jí)別最高的置1位清0。一般用在完全嵌套(包括特殊全嵌套)工作方式。011特殊EOI結(jié)束方式。一旦中斷處理結(jié)束,CPU向8259A發(fā)出EOI結(jié)束命令,8259A將中斷服務(wù)寄存器ISR中,由L2~L0字段指定的中斷級(jí)別的相應(yīng)位清0。010OCW2無效。2023/2/673共98頁操作命令字
(3)OCW3——特殊屏蔽方式和查詢方式操作命令字OCW3功能有三個(gè):設(shè)定特殊屏蔽方式,設(shè)置對(duì)8259A寄存器的讀出及設(shè)置中斷查詢工作方式。INAL,20H(IRR,ISR)INAL,20H(P=1,查詢字)INAL,21H(IMR)(任何時(shí)候)2023/2/674共98頁A0D7D6D5D4D3D2D1D00IR××××W2W1W0ESMMSMM功
能10復(fù)位為普通屏蔽方式11置位為特殊屏蔽方式0×無效注意:通過OCW3設(shè)置P=1的查詢命令字后,8259A不再通過INT引腳向CPU發(fā)中斷請(qǐng)求;要取消查詢方式,可以再次發(fā)送OCW3,并使P=0。
2023/2/675共98頁操作控制字OCW1~OCW3的設(shè)置,安排在初始化命令字設(shè)置之后,用戶根據(jù)需要可在程序的任何位置去設(shè)置。盡管8259A只有兩個(gè)端口地址,但不會(huì)混淆4個(gè)初始化命令字和3個(gè)操作命令字。ICW2、ICW3、ICW4和OCW1寫入8259A奇地址端口,初始化時(shí)ICW1后面緊跟ICW2、ICW3、ICW4,而OCW1是單獨(dú)寫入的,不會(huì)緊跟在ICW1后面。ICW1、OCW2、OCW3寫入8259A偶地址端口,但一方面ICW1是在初始化時(shí)寫入,另一方面可用D4位區(qū)分,D4=1為ICW1,D4=0為OCW;再用D3位區(qū)分,D3=0為OCW2,D3=1為OCW3。因此對(duì)8259A編程時(shí)寫入的命令字是不會(huì)混淆的。從8259A能夠讀出的狀態(tài)字有4個(gè):IMR、IRR、ISR和查詢字。A0=1,讀出的一定是IMR;在OCW3的P、RR和RIS位的控制下,可相應(yīng)讀出IRR、ISR和查詢字。2023/2/676共98頁微機(jī)系統(tǒng)區(qū)別接口電路(或接口芯片)中不同的寄存器(或控制信息、狀態(tài)信息等)的主要方法:
利用讀/寫控制信號(hào)區(qū)別寫入的控制寄存器和讀出的狀態(tài)寄存器;
利用地址信號(hào)區(qū)別不同I/O端口地址的寄存器;
由命令字中的標(biāo)志位說明是哪個(gè)寄存器;
由芯片內(nèi)部順序控制邏輯按一定順序識(shí)別不同的寄存器;
由前面寫入的命令字決定后續(xù)操作的寄存器。2023/2/677共98頁8259A的中斷級(jí)聯(lián)一片8259A管理8級(jí)中斷,當(dāng)申請(qǐng)中斷的外設(shè)多于8級(jí)時(shí),可以將8259A級(jí)聯(lián)使用,最簡(jiǎn)單的級(jí)聯(lián)方式為兩級(jí),第一級(jí)為8259A主片,第二級(jí)為8259A從片,主片可接1~8片8259A從片,這樣最多可管理64級(jí)中斷源。
在級(jí)聯(lián)系統(tǒng)中,主片和從片都要設(shè)置初始化命令字進(jìn)行初始化,設(shè)置主片初始化命令字與無級(jí)聯(lián)單片8259A初始化時(shí)不同之處有以下幾點(diǎn):(1)級(jí)聯(lián)時(shí),ICW1中SNGL=0;單片時(shí),SNGL=1。(2)級(jí)聯(lián)時(shí),要求設(shè)置ICW3,若某個(gè)IRi引腳上連有從片,主片ICW3的對(duì)應(yīng)位設(shè)為1,未連接從片的對(duì)應(yīng)位設(shè)為0。單片不需要設(shè)置ICW3。(3)級(jí)聯(lián)時(shí),主片可設(shè)置為特殊全嵌套工作方式,ICW4中SFNM=1。
2023/2/678共98頁8259A級(jí)聯(lián)方式連接圖
2023/2/679共98頁8259A的中斷級(jí)聯(lián)設(shè)置從片初始化命令字時(shí),要注意以下兩點(diǎn):(1)從片的ICW1中,SNGL=0。(2)從片必須設(shè)置ICW3,由ICW3中三個(gè)最低有效位ID2~I(xiàn)D0的組合來標(biāo)記此從片連到主片哪個(gè)IRi引腳上。級(jí)聯(lián)時(shí)中斷優(yōu)先級(jí)判別是由從片判別本片內(nèi)最高優(yōu)先級(jí)后,向8259A主片再申請(qǐng)中斷,然后由主片判別當(dāng)前最高優(yōu)先級(jí),向CPU發(fā)中斷請(qǐng)求信號(hào)INT。注意當(dāng)8259A主片設(shè)置為特殊全嵌套工作方式時(shí),允許相同級(jí)別的中斷請(qǐng)求通過。2023/2/680共98頁例:一個(gè)8259A主片,連接2片8259A從片,從片分別經(jīng)主片的IR3及IR5引腳接入,若主片設(shè)置為特殊全嵌套工作方式,從片設(shè)置為完全嵌套工作方式,則系統(tǒng)中優(yōu)先級(jí)排列次序?yàn)椋褐髌琁R0、IR1、IR2
從片IR0、IR1、…、IR7
主片IR4
從片IR0、IR1、…、IR7
主片IR6、IR7中斷處理結(jié)束時(shí),CPU應(yīng)發(fā)出兩個(gè)EOI結(jié)束命令,一個(gè)送給主片8259A,另一個(gè)送給從片8259A,使8259A主片和從片的ISR寄存器相應(yīng)位清“0”,這樣一次中斷處理過程結(jié)束。2023/2/681共98頁例:特殊全嵌套工作方式:假設(shè)某微機(jī)系統(tǒng)的8086CPU工作在最小模式,中斷系統(tǒng)有1片8259A主片,2片8259A從片構(gòu)成級(jí)聯(lián)工作方式。從片1#從8259A主片IR6端引入,從片2#從8259A主片IR3端引入,8259A主片的IR0及IR4引入2個(gè)中斷請(qǐng)求信號(hào)。8259A從片1#由IR6端收到一個(gè)中斷請(qǐng)求信號(hào)IRRD7D6D5D4D3D2D1D0(從片1#)01000000ISRD7D6D5D4D3D2D1D0(從片1#)01000000IRRD7D6D5D4D3D2D1D0(主片)01000000ISRD7D6D5D4D3D2D1D0(主片)01000000IRRD7D6D5D4D3D2D1D0(從片1#)00000010ISRD7D6D5D4D3D2D1D0(從片1#)01000010在CPU中斷服務(wù)過程中,8259A從片1#收到IR1端來的中斷請(qǐng)求
2023/2/682共98頁例:某系統(tǒng)中兩片8259A采用中斷級(jí)聯(lián)方式組成中斷系統(tǒng),從片的INT端連8259A主片的IR3端。若當(dāng)前8259A主片從IR1、IR5端引入兩個(gè)中斷請(qǐng)求,中斷類型號(hào)為31H、35H。中斷服務(wù)程序的段基址為1000H,偏移地址分別為2000H及3000H。8259A從片由IR4、IR5端引入兩個(gè)中斷請(qǐng)求,中斷類型號(hào)為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 ;中斷類型號(hào)31H INT 21H MOV DX,3000H MOV AL,35H ;中斷類型號(hào)35H INT 21HMOV AX,2000H MOV DS,AX MOV DX,3600H MOV AX,2544H ;中斷類型號(hào)44H INT 21H MOV DX,4800H MOV AL,45H ;中斷類型號(hào)45H INT 21H2023/2/686共98頁(2)主片8259A初始化編程:假設(shè)主片的端口地址為0FFC8H和0FFC9H。
MOV AL,11H ;定義ICW1:級(jí)聯(lián)使用,邊沿觸發(fā),要設(shè)置ICW4
MOV DX,0FFC8H OUT DX,AL MOVAL,30H ;定義ICW2:主片中斷類型號(hào)為30H~37H MOVDX,0FFC9H OUT DX,AL MOV AL,08H ;定義ICW3:主片IR3連接從片的INT端
OUT DX,AL MOV AL,11H ;定義ICW4:特殊全嵌套方式,非緩沖方式, ;非自動(dòng)EOI結(jié)束方式
OUT DX,AL MOV AL,0D5H ;定義OCW1:允許IR1、IR3、IR5中斷,其余;中斷請(qǐng)求輸入端的中斷請(qǐng)求被屏蔽
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:級(jí)聯(lián)使用,邊沿觸發(fā),要設(shè)置ICW4
MOV DX,0FFCAH OUT DX,AL MOV AL,40H ;定義ICW2:從片中斷類型號(hào)為40H~47H MOV DX,0FFCBH OUT DX,AL MOV AL,03H ;定義ICW3:從片的INT端連接主片IR3端
OUT DX,AL MOV AL,01H ;定義ICW4:完全嵌套方式,非緩沖方式, ;非自動(dòng)EOI結(jié)束方式
OUT DX,AL MOV AL,0CFH ;定義OCW1:允許IR4、IR5中斷,其余;中斷請(qǐng)求輸入端的中斷請(qǐng)求被屏蔽
OUT DX,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 居間合同上海中原地產(chǎn)
- 文化傳媒項(xiàng)目策劃與實(shí)施合同
- 建筑勞動(dòng)合同模板
- 二零二五年度離職員工保密合同范本(知識(shí)產(chǎn)權(quán)保護(hù))3篇
- 物流貨物運(yùn)輸合同書
- 工業(yè)自動(dòng)化控制系統(tǒng)研發(fā)合同
- 二零二五版學(xué)校餐飲安全與衛(wèi)生監(jiān)督合同3篇
- 二零二五年電子產(chǎn)品銷售簡(jiǎn)易合同模板
- 二零二五年度旅游產(chǎn)品銷售服務(wù)居間合同
- 二零二五版私人汽車租賃合同違約責(zé)任約定3篇
- 火龍罐綜合灸療法
- 藥物制劑工(三級(jí))理論試題題庫及答案
- 高強(qiáng)度間歇訓(xùn)練(HIIT)對(duì)代謝健康的長(zhǎng)期影響
- ICU患者導(dǎo)管留置登記表
- 紅色中國(guó)風(fēng)西安旅游PPT模板
- 中建商務(wù)工作指南手冊(cè)
- 耳鼻咽喉:頭頸外科疾病診斷流程與冶療策略
- 貴州省2023年中考英語真題
- 個(gè)人借條電子版模板
- 中國(guó)思想史 馬工程329P
- 數(shù)字信號(hào)處理(第3版)ch8-4小波變換分解與重構(gòu)算法
評(píng)論
0/150
提交評(píng)論