微機(jī)原理及接口技術(shù)含單片機(jī)七中斷_第1頁
微機(jī)原理及接口技術(shù)含單片機(jī)七中斷_第2頁
微機(jī)原理及接口技術(shù)含單片機(jī)七中斷_第3頁
微機(jī)原理及接口技術(shù)含單片機(jī)七中斷_第4頁
微機(jī)原理及接口技術(shù)含單片機(jī)七中斷_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第六章 中斷12教學(xué)重點(diǎn) 8086 CPU的中斷系統(tǒng) 8259A的中斷工作過程和工作方式 中斷服務(wù)程序的編寫3第一節(jié) 概述一、中斷的基本概念二、中斷處理過程三、中斷優(yōu)先級(jí)四、中斷嵌套1、中斷 在CPU正常運(yùn)行程序時(shí),由于內(nèi)部或外部某個(gè)非預(yù)料事件的發(fā)生,使CPU暫停正在運(yùn)行的程序,而轉(zhuǎn)去執(zhí)行處理引起中斷事件的程序,然后再返回被中斷了的程序,繼續(xù)執(zhí)行。這個(gè)過程就是中斷。4一、中斷的基本概念5中斷服務(wù)程序1中斷服務(wù)程序 2非預(yù)料事件1CPU執(zhí)行流程非預(yù)料事件 262、中斷源和中斷優(yōu)先權(quán) 引起中斷的因素很多,將發(fā)出中斷申請(qǐng)的外設(shè)或內(nèi)部原因,稱為中斷源常見中斷源: 外設(shè)的請(qǐng)求(輸入輸出設(shè)備、實(shí)時(shí)時(shí)鐘82

2、53等) 硬件故障信號(hào),如電源掉電等。 軟件中斷,INT中斷指令或CPU運(yùn)算產(chǎn)生的某些錯(cuò) 誤(除數(shù)為0、運(yùn)算溢出)給每個(gè)中斷源指定一個(gè)優(yōu)先權(quán),稱為中斷優(yōu)先權(quán)當(dāng)多個(gè)中斷源同時(shí)發(fā)出中斷請(qǐng)求時(shí), CPU按照中斷優(yōu)先權(quán)的高低順序,依次響應(yīng)。73、中斷服務(wù)程序 處理中斷源,完成其所要求功能的程序, 稱中斷服務(wù)程序(中斷例行程序、中斷子程)。CPU執(zhí)行流程中斷服務(wù)程序1中斷服務(wù)程序2非預(yù)料事件2非預(yù)料事件18非預(yù)料事件是指事件發(fā)生的時(shí)間無法預(yù)知, 即中斷源何時(shí)產(chǎn)生中斷不確定,是隨機(jī)的。但事件的性質(zhì)及處理方法則是已知的, 確定的, 即中斷服務(wù)程序是事先編寫好的, 只是何時(shí)執(zhí)行未知。中斷源產(chǎn)生中斷的隨機(jī)性,使

3、中斷服務(wù)程序的執(zhí)行也具有隨機(jī)性,即何時(shí)執(zhí)行中斷服務(wù)程序不是在程序中安排好的。94、斷點(diǎn)和中斷現(xiàn)場斷點(diǎn): 是指CPU執(zhí)行的現(xiàn)行程序被中斷時(shí)的下一條指令的地址,又稱斷點(diǎn)地址。中斷現(xiàn)場: 是指CPU轉(zhuǎn)去執(zhí)行中斷服務(wù)程序前的運(yùn)行狀態(tài),包括CPU內(nèi)部各寄存器、斷點(diǎn)地址等。101000:150H 、 、 、 、 、MOV AX, 0ADD AX, DXMOV DI , AX、 PUSH AX 、 、 IRETCPU在執(zhí)行此指令時(shí),某中斷源發(fā)申請(qǐng)中斷;CPU在執(zhí)行完該指令后,轉(zhuǎn)去執(zhí)行中斷子程地址1000:150H為斷點(diǎn)斷點(diǎn)概念:11二、中斷處理過程1、CPU響應(yīng)中斷的條件在現(xiàn)行指令周期內(nèi)無總線請(qǐng)求中斷允許標(biāo)

4、志IF=1現(xiàn)行指令執(zhí)行完畢122、CPU對(duì)中斷響應(yīng)中斷響應(yīng)過程:關(guān)中斷禁止接受其他的中斷請(qǐng)求。保護(hù)斷點(diǎn)斷點(diǎn)處IP和CS值壓入堆棧保留,以便中斷返回。識(shí)別中斷源找到中斷服務(wù)程序的入口地址兩種識(shí)別方法:查詢中斷軟件查詢向量中斷硬件實(shí)現(xiàn),提供入口地址信息保護(hù)現(xiàn)場 為了不使中斷服務(wù)程序的運(yùn)行影響主程序的狀態(tài),把在中斷服務(wù)程序中要使用的寄存器的內(nèi)容壓入堆棧保護(hù)執(zhí)行中斷服務(wù)程序恢復(fù)現(xiàn)場 壓入堆棧的現(xiàn)場信息彈出恢復(fù)到原寄存器中。開中斷與返回13三、中斷優(yōu)先級(jí) 解決中斷優(yōu)先級(jí)的方法:軟件查詢確定優(yōu)先級(jí)查詢程序的查詢順序決定了外設(shè)中斷的優(yōu)先級(jí)別的高低。優(yōu)點(diǎn):硬件簡單,不需要改動(dòng)硬件就可改變優(yōu)先級(jí)順序。缺點(diǎn):實(shí)時(shí)

5、性差,尤其在中斷源較多的情況下,由查轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序的入口地址時(shí)間較長。14IN AL,XX TEST AL,01H JNZ INT0 TEST AL,02H JNZ INT1 TEST AL,04H JNZ INT2 TEST AL,80H JNZ INT7 INTDB1寄存器INT0INT1INT7軟件查詢確定優(yōu)先級(jí)15解決中斷優(yōu)先級(jí)的方法:簡單硬件查詢方式菊花鏈法 外設(shè)的中斷優(yōu)先級(jí)由其在鏈?zhǔn)脚抨?duì)電路中的先后順序來決定。中斷控制專用硬件方式使用一個(gè)專門的中斷優(yōu)先級(jí)控制器來解決中斷優(yōu)先級(jí)的排隊(duì)管理。16菊花鏈優(yōu)先級(jí)查詢?cè)?P21317四、中斷嵌套(多重中斷) CPU執(zhí)行優(yōu)先級(jí)較低的中

6、斷服務(wù)程序時(shí),允許響應(yīng)比他優(yōu)先級(jí)更高的中斷源請(qǐng)求,而掛起正在處理的中斷。嵌套可多級(jí),具體級(jí)數(shù)原則上不受限制,取決于堆棧深度。18第二節(jié) 8086/8088CPU的中斷系統(tǒng)一、 8086/8088CPU的中斷分類二、8086/8088CPU的中斷優(yōu)先權(quán)三、8086/8088CPU響應(yīng)中斷的過程四、中斷向量和中斷向量表五、8086/8088CPU如何獲取中斷類型號(hào)19一、8086/ 8088CPU的中斷分類按中斷源的不同,中斷分為內(nèi)部中斷和外部中斷。1、內(nèi)部中斷(軟中斷)指CPU執(zhí)行某些特殊操作或由INT指令引起的中斷 被零除操作或OF=1時(shí)執(zhí)行INTO指令引起 使用DEBUG中的單步或斷點(diǎn)設(shè)置操

7、作引起 執(zhí)行INT n 指令引起20指外部芯片通過CPU的INTR引腳或NMI引腳發(fā)出中斷申請(qǐng)引起的中斷。當(dāng)INTR上有高電平信號(hào)當(dāng)NMI上有上升沿信號(hào)2、外中斷(硬中斷)8088GNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND最大模式(最小模式)VCCA15A16/S3A17/S4A18/S5A19/S6(HIGH)(SSO)MN/MXRDRQ/GT0(HOLD)RQ/GT1(HLDA)LOCK(WR)S2(IO/M)S1(DT/R)S0(DEN)QS0(ALE)QS1(INTA)TESTREADYRESET21 可屏蔽中

8、斷 由INTR引腳引起的中斷,稱可屏蔽中斷。 CPU是否響應(yīng)INTR引腳上的中斷請(qǐng)求取決于IF標(biāo)志: IF=1,CPU響應(yīng)INTR引腳上的中斷請(qǐng)求 IF=0,CPU不響應(yīng)INTR引腳上的中斷請(qǐng)求 即當(dāng)IF=0時(shí),將INTR引腳上的中斷申請(qǐng)屏蔽。 非屏蔽中斷 由NMI引腳引起的中斷,稱非屏蔽中斷。 當(dāng)NMI引腳上產(chǎn)生上升沿信號(hào),CPU必響應(yīng)此中斷請(qǐng)求,即NMI引腳上的中斷請(qǐng)求不受IF標(biāo)志的控制, IF不能屏蔽NMI引腳上的中斷請(qǐng)求。22保留(ALT打印機(jī))中斷邏輯INTn指令I(lǐng)NTO指令除法錯(cuò)誤單步TF=1非屏蔽中斷請(qǐng)求IR0IR6IR5IR4IR3IR2IR1IR7可編程中 斷控制器(PIC)

9、8259AINTn4012CPUINTRNMI08090A0B0C0D0E0F系統(tǒng)定時(shí)器鍵盤保留(打印機(jī))軟盤串行通信接口保留(通信)彩色/圖形接口8086/8088中斷源23當(dāng)有多個(gè)中斷源同時(shí)產(chǎn)生中斷申請(qǐng)時(shí),CPU先響應(yīng)優(yōu)先權(quán)最高的中斷源,再響應(yīng)優(yōu)先級(jí)較低的中斷源。二、8086/8088CPU的中斷優(yōu)先權(quán)優(yōu)先級(jí) 高 低 內(nèi)中斷 ( 除零,INT 指令,斷點(diǎn),INTO指令 ) 非屏蔽中斷 可屏蔽中斷 低 內(nèi)中斷( 單步 ) 24三、8086CPU響應(yīng)中斷的過程當(dāng)中斷源產(chǎn)生中斷申請(qǐng)后,不論是內(nèi)中斷、非屏蔽中斷,還是可屏蔽中斷,只要滿足響應(yīng)條件,在執(zhí)行完當(dāng)前指令后,CPU內(nèi)部硬件會(huì)自動(dòng)完成下列響應(yīng)

10、中斷的過程: 獲取中斷類型號(hào)N 當(dāng)前PSW的內(nèi)容入棧 清IF、TF標(biāo)志為0 當(dāng)前CS的內(nèi)容入棧 當(dāng)前IP的內(nèi)容入棧 取內(nèi)存單元( 0 : N 4 )字內(nèi)容送IP 取中斷子程 取內(nèi)存單元( 0 : N 4 + 2 )字內(nèi)容送CS 入口地址 此時(shí)CS:IP指向中斷程序的入口,開始執(zhí)行中斷程序。保存現(xiàn)場25內(nèi) 存中斷向量表0:0 3FFH1000:150h3000:200h0: N40: N4+20: 0000 、 、 0200h 3000h 、 、 、 MOV AX, 0 ADD AX, DX MOV DI, AX、 MOV BX,CX、 IRET、類型N中斷子程 某中斷源發(fā)申請(qǐng)中斷,申請(qǐng)執(zhí)行類型

11、號(hào)為N的中斷子程響應(yīng)中斷前 SS:SP 響應(yīng)中斷后SS:SP 堆棧執(zhí)行IRET后 (IP) (CS)(PSW)01501000(PSW)SS:SP (IP)=0200h(CS)=3000h0:3FFH0:026從中斷子程返回?cái)帱c(diǎn)處,靠的是執(zhí)行中斷子程最后的指令I(lǐng)RET,從堆棧中取出斷點(diǎn)地址給CS:IP,繼續(xù)執(zhí)行被中斷的程序。故中斷子程最后應(yīng)安排 IRET 指令。1000:150h3000:200h0: N40: N4+20: 0000 、 、 0200h 3000h 、 、 、 MOV AX, 0 ADD AX, DX MOV DI, AX、 MOV BX,CX、 IRET、響應(yīng)中斷前 SS:

12、SP 響應(yīng)中斷后SS:SP 堆棧執(zhí)行IRET后 (IP) (CS)(PSW)01501000(PSW)SS:SP (IP)=0200h(CS)=3000h四、中斷向量和中斷向量表中斷向量:中斷服務(wù)程序的入口地址(首地址)邏輯地址含有段地址CS和偏移地址IP(32位)每個(gè)中斷向量的低字是偏移地址、高字是段地址,需占用4個(gè)字節(jié)8088微處理器從物理地址000H開始,依次安排各個(gè)中斷向量,向量號(hào)也從0開始256個(gè)中斷占用1KB區(qū)域,就形成中斷向量表27向量號(hào)為N的中斷向量的物理地址N4288086/8088的中斷向量表向量號(hào)255的CS值用戶中斷(向量號(hào)255)3FCH向量號(hào)255的IP值向量號(hào)2的

13、CS值非屏蔽中斷(向量號(hào)2)008H向量號(hào)2的IP值向量號(hào)1的CS值單步中斷(向量號(hào)1)004H向量號(hào)1的IP值向量號(hào)0的CS值除法錯(cuò)中斷(向量號(hào)0)000H向量號(hào)0的IP值29中斷向量求法若中斷類型號(hào)為n,IP (4n,4n+1) CS (4n+2,4n+3)例1:中斷類型號(hào)20,中斷向量表地址從0段0080H開始的4個(gè)單元,80H(10H),81H(20H),82H(30H),83H(40H) ,則中斷向量為?例1 結(jié)果: CS : IP中斷向量為(4030H:2010H) 例2:在一個(gè)系統(tǒng)中,對(duì)應(yīng)于中斷類型號(hào)27H的中斷處理程序放在2345H:7890H開始的內(nèi)存區(qū)域,請(qǐng)計(jì)算相應(yīng)的中斷向

14、量表地址及內(nèi)容。例2結(jié)果:0段:009CH009FH 存放90H、78H、45H、23H四、中斷向量和中斷向量表 30由三部分組成:專用中斷(04)凡是8086/8088系統(tǒng)中統(tǒng)一規(guī)定的中斷類型。保留中斷27個(gè)(531)為系統(tǒng)開發(fā)所保留的中斷類型。用戶自定義中斷(32255)中斷向量表組成四、中斷向量和中斷向量表 31五、8086CPU如何獲取中斷類型號(hào)由前面介紹知,當(dāng)中斷源產(chǎn)生中斷請(qǐng)求后,不論是內(nèi)中斷、非屏蔽中斷,還是可屏蔽中斷,只要滿足響應(yīng)條件,在執(zhí)行完當(dāng)前指令后,CPU內(nèi)部硬件會(huì)自動(dòng)完成響應(yīng)中斷的過程,共七個(gè)步驟而第一步就是獲取中斷類型號(hào)。不同的中斷源,8086CPU獲取中斷類型號(hào)的方法

15、不同。32根據(jù)8086CPU對(duì)中斷的分類,各中斷獲取類型號(hào)的方法33向量類型 INTACLKAD7AD0T1T2T3T4第 一 個(gè)中斷響應(yīng)周期T1T2T3T4第 二 個(gè)中斷響應(yīng)周期 可屏蔽中斷響應(yīng)周期時(shí)序 CPU從引腳 INTA 發(fā)中斷響應(yīng)信號(hào), 接口芯片接收此信號(hào),把中斷類型號(hào)準(zhǔn)備好;同時(shí) ISRi=1,IRRi=0。 CPU再從引腳 INTA 發(fā)中斷響應(yīng)信號(hào), 接口芯片接此信號(hào)后,將中斷類型號(hào)送至數(shù)據(jù)總線上; CPU從數(shù)據(jù)總線獲取中斷類型號(hào)。34第三節(jié) 可編程中斷控制器8259A 一、引言 二、8259A的內(nèi)部結(jié)構(gòu)和引腳及工作過程 三、8259A的編程四、8259A在IBM PC/XT系統(tǒng)

16、中的應(yīng)用五、 8259A在 Pentium機(jī)中的應(yīng)用35一、引言中斷申請(qǐng)管理接口INT中斷申請(qǐng)接口1網(wǎng)絡(luò)接口2硬盤接口3軟盤接口4打印機(jī)8088CPUINTRIF361. 向CPU的引腳INTR發(fā)中斷申請(qǐng)信號(hào)當(dāng)有多個(gè)外設(shè)同時(shí)發(fā)出中斷請(qǐng)求時(shí),能按照一定的優(yōu)先級(jí)順序,向CPU發(fā)出中斷申請(qǐng),使CPU能優(yōu)先響應(yīng)優(yōu)先級(jí)最高的外部設(shè)備的中斷申請(qǐng)。2. 送中斷類型號(hào) 在CPU中斷響應(yīng)周期,針對(duì)不同外設(shè)的中斷請(qǐng)求, 向CPU傳送不同的中斷類型號(hào),使CPU執(zhí)行相應(yīng)的中斷子程。中斷申請(qǐng)管理接口的主要功能:在IBM PC機(jī)由8259A可編程中斷控制器(PIC)來完成。37二、 8259A的內(nèi)部結(jié)構(gòu)和引腳及工作過程1

17、. 8259A的內(nèi)部結(jié)構(gòu)和引腳2. 8259A的工作過程381 8259A的內(nèi)部結(jié)構(gòu)和引腳 p270、272D7D0INTAINT中斷請(qǐng)求寄存器中斷屏蔽寄存器數(shù)據(jù)總線緩沖器IR0IR7讀/寫控制邏輯級(jí)聯(lián)緩沖器比較器RDWRA0CSCAS0CSA1CAS2SP/EN優(yōu)先權(quán)判別電路中斷服務(wù)寄存器控制邏輯39(1) 中斷控制中斷請(qǐng)求寄存器IRR保存8條外界中斷請(qǐng)求信號(hào)IR0IR7的請(qǐng)求狀態(tài)Di位為1表示IRi引腳有中斷請(qǐng)求;為0表示無請(qǐng)求中斷服務(wù)寄存器ISR保存正在被8259A服務(wù)著的中斷狀態(tài)Di位為1表示IRi中斷正在服務(wù)中;為0表示沒有被服務(wù)中斷屏蔽寄存器IMR保存對(duì)中斷請(qǐng)求信號(hào)IR的屏蔽狀態(tài)D

18、i位為1表示IRi中斷被屏蔽(禁止);為0表示允許40(2) 與處理器接口 A0 RD* WR* CS*功能 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1寫入ICW1、OCW2和OCW3寫入ICW2ICW4和OCW1讀出IRR、ISR和查詢字讀出IMR數(shù)據(jù)總線高阻狀態(tài)數(shù)據(jù)總線高阻狀態(tài)41(3)中斷級(jí)連一個(gè)系統(tǒng)中,8259A可以級(jí)連,有一個(gè)主8259A,若干個(gè)(最多8個(gè))從8259A級(jí)連時(shí),主8259A的三條級(jí)連線CAS0CAS2作為輸出線,連至每個(gè)從8259A的CAS0CAS2每個(gè)從8259A的中斷請(qǐng)求信號(hào)INT,連至主8259A的一個(gè)中斷請(qǐng)求輸入端IR主82

19、59A的INT線連至CPU的中斷請(qǐng)求輸入端SP*/EN*在非緩沖方式下,規(guī)定該8259A是主片(SP*1)還是從片(SP*0)動(dòng)畫示例42分兩步: (1)處理外設(shè)中斷申請(qǐng),決定是否向CPU發(fā)中斷申請(qǐng)信號(hào)。 (2)若發(fā)中斷申請(qǐng)信號(hào),且CPU響應(yīng),則在CPU中斷響應(yīng)周期送出中斷類型號(hào)。2. 8259A 的工作過程43(1) 處理外設(shè)中斷申請(qǐng),決定是否向CPU發(fā)中斷申請(qǐng)信號(hào) 中斷屏蔽寄存器 IMR 決定 IRR 中的中斷申請(qǐng) 是否進(jìn)入優(yōu)先級(jí)裁決器 PR。 IMR對(duì)應(yīng)位為 0,允許中斷申請(qǐng)進(jìn)入優(yōu)先級(jí)裁決器, 為 1,不允許進(jìn)入,中斷申請(qǐng)被IMR屏蔽。 中斷申請(qǐng)寄存器IRR 鎖存外部的中斷申請(qǐng)。 若 I

20、R0IR7 引腳上有中斷申請(qǐng),則將 IRR 相應(yīng)位置1 當(dāng)前中斷服務(wù)寄存器 ISR 記錄CPU正在響應(yīng)的中斷。 ISR中的某位為1,表示CPU正在響應(yīng)此級(jí)中斷, ISR中的某位為 0,表示CPU沒有或已響應(yīng)完此級(jí)中斷, 優(yōu)先級(jí)裁決器PR 據(jù)新進(jìn)入的中斷申請(qǐng)和 ISR的內(nèi)容, 決定是否發(fā)中斷申請(qǐng)信號(hào)。 如果進(jìn)入的中斷申請(qǐng)比 ISR 中記錄的中斷優(yōu)先級(jí)高, 則通過 8259A 的 INT 引腳向 CPU發(fā)出中斷請(qǐng)求信號(hào); 如果進(jìn)入的中斷申請(qǐng)不比 ISR 中記錄的中斷優(yōu)先級(jí)高, 同級(jí)或低級(jí),則不向 CPU 發(fā)中斷請(qǐng)求信號(hào)。44 中斷申請(qǐng)寄存器IRR 鎖存外部的中斷申請(qǐng)。 若 IR0IR7 引腳上有中

21、斷申請(qǐng),則將 IRR 相應(yīng)位置1IORIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制000 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中斷屏蔽寄存器 IMR 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器000 0 0 0 0 0 10010100INTR1145 中斷屏蔽寄存器 IMR 決定 IRR 中的中斷申請(qǐng) 是否進(jìn)入優(yōu)先級(jí)裁決器 PR。 IMR對(duì)應(yīng)位

22、為 0,允許中斷申請(qǐng)進(jìn)入優(yōu)先級(jí)裁決器, 為 1,不允許進(jìn)入,中斷申請(qǐng)被IMR屏蔽。IORIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制000 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中斷屏蔽寄存器 IMR 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器100 0 0 0 0 1 10010100INTR46 當(dāng)前中斷服務(wù)寄存器 ISR 記錄CPU正在響應(yīng)的

23、中斷。ISR中的某位為1,表示CPU正在響應(yīng)此級(jí)中斷, 即正在執(zhí)行此中斷源的中斷子程;ISR中的某位為 0,表示CPU沒有或已響應(yīng)完此級(jí)中斷, 即不在執(zhí)行此中斷源的中斷子程IORIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制001 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中斷屏蔽寄存器 IMR 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器100 0 0

24、0 0 1 10010100INTR47 優(yōu)先級(jí)裁決器PR據(jù)新進(jìn)入的中斷申請(qǐng)和 ISR的內(nèi)容, 決定是否發(fā)中斷申請(qǐng)信號(hào)。 如果進(jìn)入的中斷申請(qǐng)比 ISR 中記錄的中斷優(yōu)先級(jí)高, 則通過 8259A 的 INT 引腳向 CPU發(fā)出中斷請(qǐng)求信號(hào); 如果進(jìn)入的中斷申請(qǐng)不比 ISR 中記錄的中斷優(yōu)先級(jí)高,同級(jí)或低級(jí),則不向 CPU 發(fā)中斷請(qǐng)求信號(hào)。IORIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制001 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR

25、3IR4IR5IR6IR7OCW1 中斷屏蔽寄存器 IMR 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器100 0 0 0 0 1 10010100INTR48(2) 若發(fā)中斷申請(qǐng)信號(hào),且CPU響應(yīng), 則在CPU中斷響應(yīng)周期送出中斷類型號(hào) CPU接收到 INTR上的中斷申請(qǐng)信號(hào)后:如果 IF 標(biāo)志為0,則CPU不響應(yīng)此中斷申請(qǐng)信號(hào), 即中斷申請(qǐng)被IF屏蔽。如果 IF 標(biāo)志為1, 則處理完當(dāng)前的指令后, 進(jìn)入中斷響應(yīng)周期 通過 INTA 引腳發(fā)出兩個(gè)負(fù)脈沖信號(hào), 從數(shù)據(jù)總線上獲取中斷類型號(hào), 進(jìn)入中斷響應(yīng)的過程。49向量類型 INTACLKAD7A

26、D0T1T2T3T4第 一 個(gè)中斷響應(yīng)周期T1T2T3T4第 二 個(gè)中斷響應(yīng)周期 8088CPU中斷響應(yīng)周期時(shí)序50 將 ISR 中相應(yīng)位置1,表示 CPU 響應(yīng)此級(jí)中斷,執(zhí)行此中斷源的中斷子程。8259A在接收到第一個(gè)INTA中斷響應(yīng)信號(hào)后:001 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器100 0 0 0 0 1 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制OCW1 中斷屏蔽寄存器 IMR 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置10010100IO

27、RIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RDWR INTAINTD0D7INTR01 把 IRR中對(duì)應(yīng)的位清0,清除IRR中鎖存的中斷申請(qǐng)信號(hào)。51 通過數(shù)據(jù)線,將被響應(yīng)申請(qǐng)的中斷類型號(hào)送給CPU。類型號(hào)由ICW2提供,在初始化8259A時(shí)已設(shè)定好。8259A在接收到第二個(gè)INTA中斷響應(yīng)信號(hào)后:001 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器100 0 0 0 0 1 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制OCW1 中斷屏蔽寄存器 IM

28、R 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置10010100IORIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RDWR INTAINTD0D7INTR01 CPU獲得中斷類型號(hào)后,進(jìn)入CPU響應(yīng)中斷的過程, 執(zhí)行中斷子程,處理中斷源申請(qǐng)的功能。52 取中斷類型號(hào)N 當(dāng)前PSW的內(nèi)容入棧 清IF、TF標(biāo)志為0當(dāng)前CS的內(nèi)容入棧 當(dāng)前IP的內(nèi)容入棧 取內(nèi)存單元( 0 : N 4 )字內(nèi)容送IP 取中斷子程 取內(nèi)存單元( 0 : N 4 + 2 )字內(nèi)容送CS 入口地址 此時(shí)CS:IP指向中斷程序的入口,開始執(zhí)行中斷程序。保存現(xiàn)場CPU響應(yīng)中斷過程:執(zhí)行完中斷子程

29、中最后一條指令I(lǐng)RET后,返回被中斷處,繼續(xù)執(zhí)行被中斷的程序。53三、8259A的編程8259A的編程結(jié)構(gòu)8259A的工作方式8259的初始化命令字和操作命令字8259A的編程方法 544個(gè)初始化命令寄存器 ICW1、ICW2 ICW3、ICW4 3個(gè)操作命令寄存器 OCW1(IMR) OCW2、OCW3當(dāng)前中斷服務(wù)寄存器 ISR中斷申請(qǐng)寄存器 IRR 8259A內(nèi)部有9個(gè) 可讀寫的寄存器1. 8259A的編程結(jié)構(gòu) 1 I3I4ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制處理部分控制部分000 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器PR優(yōu)先級(jí)裁決器I

30、RR中斷申請(qǐng)寄存器000 0 0 0 0 0 中斷屏蔽寄存器 IMROCW2 10010100 00 01 OCW3OCW18259A中斷控制器558259A有兩個(gè)I/O端口地址A0=0 偶地址端口A0=1 奇地址端口 對(duì) 9個(gè)寄存器的讀寫 均通過這兩個(gè)端口實(shí)現(xiàn) 寫入數(shù)據(jù)的特征位 寫入的先后順序 區(qū)分是對(duì)哪個(gè)寄存器 進(jìn)行操作根據(jù) 1 I3I4ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制處理部分控制部分000 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器000 0 0 0 0 0 中斷屏蔽寄存器OCW2 10010100

31、00 01 OCW3OCW18259A中斷控制器D0D7A0CSRDWR80111A0100A056(1) 初始化命令字(ICW1- ICW4) 決定8259A的工作方式 通常是在計(jì)算機(jī)系統(tǒng)啟動(dòng)時(shí)在初始程序設(shè)置, 一旦設(shè)定,一般在系統(tǒng)工作過程不再改變。例 開機(jī)后,BIOS將8259A初始化為: IR0IR7中斷申請(qǐng)信號(hào)為上升沿觸發(fā)方式; IR0IR7對(duì)應(yīng)的中斷類型號(hào)分別為08H0FH; 優(yōu)先級(jí)IR0最高, IR7最低;(2) 操作命令字(OCW1,OCW2,OCW3) 在應(yīng)用程序中設(shè)定,可以在初始化以后的任意時(shí)刻寫入8259A,動(dòng)態(tài)地控制CPU處理中斷的過程(3) ISR和IRR存放當(dāng)前825

32、9A的狀態(tài) 通過讀取 ISR 和 IRR 的內(nèi)容,可了解當(dāng)前8259A工作情況572 8259A的工作方式普通全嵌套方式特殊全嵌套方式自動(dòng)循環(huán)方式特殊循環(huán)方式優(yōu)先權(quán)固定方式優(yōu)先權(quán)循環(huán)方式設(shè)置優(yōu)先權(quán)方式普通中斷結(jié)束方式特殊中斷結(jié)束方式自動(dòng)中斷結(jié)束方式非自動(dòng)中斷結(jié)束方式結(jié)束中斷處理方式屏蔽中斷源方式普通屏蔽方式特殊屏蔽方式中斷觸發(fā)方式邊沿觸發(fā)方式電平觸發(fā)方式數(shù)據(jù)線連接方式緩沖方式非緩沖方式58(1)設(shè)置優(yōu)先權(quán)方式普通全嵌套方式8259A的中斷優(yōu)先權(quán)順序固定不變,從高到低依次為IR0、IR1、IR2、IR7中斷請(qǐng)求后,8259A對(duì)當(dāng)前請(qǐng)求中斷中優(yōu)先權(quán)最高的中斷IRi予以響應(yīng),將其向量號(hào)送上數(shù)據(jù)總線,

33、對(duì)應(yīng)ISR的Di位置位,至到中斷結(jié)束(ISR的Di位復(fù)位)在ISR的Di位置位期間,禁止再發(fā)生同級(jí)和低級(jí)優(yōu)先權(quán)的中斷,但允許高級(jí)優(yōu)先權(quán)中斷的嵌套特殊全嵌套方式優(yōu)先權(quán)自動(dòng)循環(huán)方式優(yōu)先權(quán)特殊循環(huán)方式59(2)結(jié)束中斷處理方式什么是8259A的中斷結(jié)束?8259A利用中斷服務(wù)寄存器ISR判斷:某位為1,表示正在進(jìn)行中斷服務(wù);該位為0,就是該中斷結(jié)束服務(wù)。這里說明如何使ISR某位為0,不反映CPU的工作狀態(tài)。60(2)結(jié)束中斷處理方式自動(dòng)中斷結(jié)束方式普通中斷結(jié)束方式配合全嵌套優(yōu)先權(quán)方式使用當(dāng)CPU用輸出指令往8259A發(fā)出普通中斷結(jié)束EOI命令時(shí),8259A就會(huì)把所有正在服務(wù)的中斷中優(yōu)先權(quán)最高的ISR

34、位復(fù)位特殊中斷結(jié)束方式配合循環(huán)優(yōu)先權(quán)方式使用CPU在程序中向8259A發(fā)送一條特殊中斷結(jié)束命令,這個(gè)命令中指出了要清除哪個(gè)ISR位61(3)屏蔽中斷源方式普通屏蔽方式將IMR的Di位置1,則對(duì)應(yīng)的中斷IRi被屏蔽,該中斷請(qǐng)求不能從8259A送到CPU如果IMR的Di位置0,則允許IRi中斷產(chǎn)生特殊屏蔽方式將IMR的Di位置1,對(duì)應(yīng)的中斷IRi被屏蔽的同時(shí),使ISR的Di位置062(4)中斷觸發(fā)方式邊沿觸發(fā)方式8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào)電平觸發(fā)方式中斷請(qǐng)求端出現(xiàn)的高電平是有效的中斷請(qǐng)求信號(hào)63(5)數(shù)據(jù)線連接方式緩沖方式8259A的數(shù)據(jù)線需加緩沖器予以驅(qū)動(dòng)8259A把

35、SP*/EN*引腳作為輸出端,輸出允許信號(hào),用以鎖存或開啟緩沖器非緩沖方式SP*/EN*引腳為輸入端若8259A級(jí)連,由其確定是主片或從片 643、 8259A的初始化命令字和操作命令字初始化編程8259A開始工作前,必須進(jìn)行初始化編程給8259A寫入初始化命令字ICW中斷操作編程在8259A工作期間可以寫入操作命令字OCW將選定的操作傳送給8259A,使之按新的要求工作還可以讀取8259A的信息,以便了解他的工作狀態(tài)65(1) 初始化命令字ICW初始化命令字ICW最多有4個(gè)8259A在開始工作前必須寫入必須按照ICW1ICW4順序?qū)懭隝CW1和ICW2是必須送的ICW3和ICW4由工作方式?jīng)Q

36、定流程D7D6D5D4D3D2D1D066ICW11LTIMSNGLIC4D7D6D5D4D3D2D1D0表示可以任意為1為0都可以(建議為0) 1只能為1,作為標(biāo)志中斷觸發(fā)方式:LTIM1,電平觸發(fā)方式LTIM0,邊沿觸發(fā)方式 規(guī)定單片或級(jí)連方式:SNGL1,單片方式SNGL0,級(jí)連方式是否寫入ICW4IC41,要寫入ICW4IC40,不寫入ICW4,即ICW4規(guī)定的位全為067ICW2T7T6T5T4T3D7D6D5D4D3D2D1D0設(shè)置中斷向量號(hào)T7T3為中斷向量號(hào)的高5位低3位由8259A自動(dòng)確定:IR0為000、IR1為001、IR7為11168ICW3S7S6S5S4S3S2/I

37、D2S1/ID1S0/ID0D7D6D5D4D3D2D1D0級(jí)連命令字主片8259A:Si1對(duì)應(yīng)IRi接有從片;否則IRi沒有連接從片從片8259A:ID0ID2編碼說明從片INT引腳接到主片哪個(gè)IR引腳69ICW4000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:特殊全嵌套方式(SFNM1)普通全嵌套方式(SFNM0)數(shù)據(jù)線的緩沖方式:緩沖方式(BUF1)非緩沖方式(BUF0) 主片/從片選擇:主片(M/S=1)從片(M/S=0)中斷結(jié)束方式:自動(dòng)中斷結(jié)束(AEOI1)非自動(dòng)中斷結(jié)束(AEOI0)微處理器類型:16位80 x86(PM1)8位8080/8085(

38、PM0)70初始化主片8259Amov al,11h;寫入ICW1,多片,邊沿觸發(fā)out 20h,aljmp intr1intr1:mov al,08h;寫入ICW2out 21h,aljmp intr2intr2:mov al,04h;寫入ICW3out 21h,aljmp intr3intr3:mov al,1h;寫入ICW4out 21h,al中斷控制器的初始化程序段71初始化從片8259Amov al,11h;寫入ICW1out 0a0h,aljmp intr5intr5:mov al,70h;寫入ICW2out 0a1h,aljmp intr6intr6:mov al,02h;寫入I

39、CW3out 0a1h,aljmp intr7intr7:mov al, 01h;寫入ICW4out 0a1h,al中斷控制器的初始化程序段72(2) 操作命令字OCW8259A工作期間,可以隨時(shí)接受操作命令字OCWOCW共有3個(gè):OCW1OCW3寫入時(shí)沒有順序要求,需要哪個(gè)OCW就寫入那個(gè)OCWD7D6D5D4D3D2D1D073OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字內(nèi)容寫入中斷屏蔽寄存器IMRDiMi對(duì)應(yīng)IRi,為1禁止IRi中斷;為0允許IRi中斷。各位互相獨(dú)立。74OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和

40、EOI配合使用產(chǎn)生中斷結(jié)束EOI命令和改變優(yōu)先權(quán)順序L2L0的3位編碼指定IR引腳 75OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM設(shè)置中斷屏蔽方式P、RR和RIS規(guī)定隨后讀取的狀態(tài)字含義76(3) 讀取狀態(tài)字CPU可讀出IRR、ISR、IMR和查詢字A0為低,由OCW3中RR和RIS位設(shè)定讀取IRR或ISR,由OCW3中P位設(shè)定讀取查詢字而A0引腳為高電平時(shí)讀取的都是IMR查詢字反映8259A是否有中斷請(qǐng)求D7D6D5D4D3D2D1D077查詢字IW2W1W0D7D6D5D4D3D2D1D0中斷位I位為1,有外設(shè)請(qǐng)求中斷W2W0的編碼決定當(dāng)前中斷

41、請(qǐng)求的最高優(yōu)先級(jí)78(4) 命令字和狀態(tài)字的區(qū)別方法 利用讀寫信號(hào)區(qū)別寫入的控制寄存器和讀出的狀態(tài)寄存器 利用地址信號(hào)區(qū)別不同I/O地址的寄存器 由控制字中的標(biāo)志位說明是哪個(gè)寄存器 由芯片內(nèi)順序控制邏輯按一定順序識(shí)別不同的寄存器 由前面的控制字決定后續(xù)操作的寄存器接口電路中常用的方法79(1)通過中斷屏蔽寄存器IMR的讀寫,設(shè)置中斷屏蔽字(2) 通過OCW2操作命令寄存器,發(fā)中斷結(jié)束EOI命令由于課時(shí)所限,只要求掌握如下編程:4. 8259A的編程方法8259A有多種工作方式,這些工作方式均可編程選擇,使用相當(dāng)靈活。80通過往奇地址端口寫入IMR內(nèi)容實(shí)現(xiàn) 對(duì)應(yīng)位為0,允許該級(jí)中斷申請(qǐng)進(jìn)入 對(duì)應(yīng)

42、位為1,禁止該級(jí)中斷申請(qǐng)進(jìn)入(1)設(shè)置中斷屏蔽字IORIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制000 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中斷屏蔽寄存器 IMR 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器100 0 0 0 0 1 10010100INTR81 新增允許 IR2 的中斷申請(qǐng) IN AL, 21H ;讀入原IMR的內(nèi)容 AND

43、AL, 1111 1011B ;D2=0,允許IR2的中斷申請(qǐng) OUT 21H, AL ;寫入IMR 禁止 IR4 的中斷申請(qǐng) IN AL, 21H ;讀入原IMR的內(nèi)容 OR AL, 0001 0000B ;D4=1,禁止IR4的中斷申請(qǐng) OUT 21H, AL ;寫入IMR例 已知 IBM PC/XT系統(tǒng)中 8259A的奇地址端口地址為21H82設(shè)置完成后的結(jié)果:IORIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制000 0 0 0 0 0 ISR當(dāng)前中斷服

44、務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中斷屏蔽寄存器 IMR 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器100 0 0 0 0 1 10010000INTR83(2) 發(fā)中斷結(jié)束命令 EOI由 8259A 的工作過程可知:ISR中的內(nèi)容是優(yōu)先級(jí)裁決器進(jìn)行裁決的重要依據(jù) CPU響應(yīng)某級(jí)中斷后,8259A自動(dòng)將ISR的對(duì)應(yīng)位置1,如果CPU已執(zhí)行完中斷子程,而ISR中的對(duì)應(yīng)位仍為1, 8259A的優(yōu)先級(jí)裁決器仍會(huì)據(jù)ISR的內(nèi)容做裁決, 從而會(huì)屏蔽同級(jí)或低級(jí)的中斷申請(qǐng)。在中斷響應(yīng)后,對(duì) ISR中相應(yīng)位的清0很重要, 它是8

45、259A認(rèn)為中斷結(jié)束的標(biāo)志。84IORIOW總線數(shù) 據(jù) 線D0D7INTAA0片選譯碼A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中斷類型號(hào) ICW3 主從片關(guān)系 ICW4 方式控制101 0 0 0 0 0 ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中斷屏蔽寄存器 IMR 00 OCW2 優(yōu)先級(jí)、發(fā)EOI OCW3 特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器100 0 0 0 0 1 10010100INTR85一、 初始化8259A時(shí),設(shè)置8259A工作方式為自動(dòng)清0方式, 則在CPU響應(yīng)中斷后,硬件自動(dòng)將I

46、SR的對(duì)應(yīng)位清0。清 ISR 內(nèi)容的方法有兩種:二、 初始化8259A時(shí),設(shè)置8259A工作方式為非自動(dòng)清0方式, 需在中斷子程中,通過軟件方式清0。方法是:通過往OCW2寫入20H實(shí)現(xiàn),即由偶地址端口寫入: EOI00100000特征位,表示對(duì)OCW2操作20H86編程在中斷子程 IRET 返回前,發(fā)中斷結(jié)束命令EOI例 已知 IBM PC系統(tǒng)中, 8259A的偶地址端口地址為 20H; BIOS 初始化 8259A 時(shí),設(shè)置 8259A 工作方式為非自動(dòng)清 0 方式。intsub PROC 、 、 、 MOV AL, 20H ;將中斷結(jié)束命令字20H 送AL OUT 20H, AL ;寫入

47、OCW2中 IRET ;中斷返回 intsub ENDP87四、8259A在IBM PC/XT系統(tǒng)中的應(yīng)用18259A與系統(tǒng)的連線。2BIOS初始化程序?qū)?259A的設(shè)置。881與系統(tǒng)的連線+5V CLKRESETREADYMN/MXVCCRDQS0QS1LOCKTESTHIGHNMIGNDGND地址鎖存器8282(兩片)STB 數(shù)據(jù)收發(fā)器OE 8286T MRDC 8288 MWTC 總線 IORC控制器 IOWC INTA8259A及有關(guān)電路DT/RDENALE地址總線數(shù)據(jù)總線控制總線PC總線A15A8S6S3/A19A16AD7AD08088CPUS0S1S2INTRRQ/GT0RQ/G

48、T1內(nèi)存I/O接口注意:8259A在連線中的位置89 8259A的片選地址范圍為 20 3F H 偶、奇端口地址通常取用20H、21H方 波鍵 盤保 留串 口2 硬 盤軟 盤打印機(jī)IOW18.2HzA0CS8259A總線A0數(shù) 據(jù) 線 IORRDWR片選譯碼IR0IR1IR2IR3IR4IR5IR6IR7A5A9D0D7D0D7VccSP/ENCA0CA1CA2GND+ 5V203FH用于多片8259A級(jí)連情況INTAINT INTA INTR串 口1 90IR0 接一個(gè)頻率為18.2Hz的方波; 若CPU對(duì)該申請(qǐng)給予響應(yīng), 則每秒執(zhí)行18.2次該申請(qǐng)對(duì)應(yīng)的中斷子程。 IR1接鍵盤接口發(fā)出的中

49、斷申請(qǐng); 每按下一鍵,若CPU對(duì)該申請(qǐng)給予響應(yīng), 則執(zhí)行一次該申請(qǐng)對(duì)應(yīng)的中斷子程。 IR2IR7通過系統(tǒng)總線引出, 對(duì)應(yīng)引腳信號(hào)為IRQ2IRQ7。18.2Hz時(shí)鐘信號(hào) 8259A的8個(gè)中斷申請(qǐng)與外設(shè)的連接918088INTR主 板IF鍵 盤18.2Hz 方波8259AINT中斷屏蔽寄存器鍵盤中斷申請(qǐng)IR1IR2IR7IR0當(dāng)前中斷服務(wù)寄存器鍵盤接口IRQ2IRQ7PC總線外設(shè)接口外設(shè)08h09h0Ah0FhIBM PC/XT微機(jī)可屏蔽中斷響應(yīng)過程示意圖92IBM PC/XT總線插槽引腳信號(hào)GNDRESET +5VIRQ2-5VDRQ2-12V+12VGNDMEMWMEMRIOWIORDACK

50、3DRQ3DACK1DRQ1DACK0CLOCKIRQ7IRQ6IRQ5IRQ4IRQ3DACK2T/CALE+5VOSCGNDI/O CH CKD7D6D5D4D3D2D1D0I/O CH RDYAENA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0 93 IR0IR7 中斷申請(qǐng)信號(hào)為上升沿觸發(fā)方式; IR0IR7 對(duì)應(yīng)的中斷類型號(hào)分別為08H0FH; 優(yōu)先級(jí)IR0最高, IR7最低; 采用非自動(dòng)結(jié)束方式, 需向OCW2發(fā)EOI中斷結(jié)束命令, 清除ISR中的記錄。2BIOS初始化程序?qū)?259A的設(shè)置94IOWA0CS8259A總線A0數(shù)

51、據(jù) 線 IORRDWR片選譯碼A5A9D0D7D0D70AH0BH0CH0DH0EH0FH08H09H203FHSP/ENCA0CA1CA2GND方 波鍵 盤保 留串口2串口1硬 盤軟 盤打印機(jī)18.2HzIR0IR1IR2IR3IR4IR5IR6IR7Vcc+ 5V用于多片8259A級(jí)連情況INTAINT INTA INTR95五、 8259A在Pentium機(jī)上的應(yīng)用1. 連線2. 可屏蔽中斷類型分配96從8259AIRQ8IRQ9IRQ10IRQ11IRQ12IRQ13 IRQ14IRQ15主8259AIRQ0IRQ1IRQ3IRQ4IRQ5 IRQ6IRQ7INT至CPUINT中斷路由

52、器IRQ7IRQ6IRQ5IRQ4 IRQ3IRQ2ISA總線PCI總線PCI總線系統(tǒng)時(shí)鐘鍵盤芯片組1. Pentium機(jī)中8259A的連線97要點(diǎn):1. 中斷系統(tǒng)由兩片8259A ,一個(gè)中斷路由器構(gòu)成, 集成在芯片組中2. 從8259A的中斷申請(qǐng)與主8259A的IRQ2相連 ISA總線上有6個(gè)中斷申請(qǐng),其中IRQ2連至從8259A的IRQ9 系統(tǒng)軟件上,將IRQ9的中斷向量指向IRQ2的中斷向量3. 主8259A的端口地址為: 20H, 21H 8個(gè)對(duì)應(yīng)的中斷申請(qǐng)IRQ7IRQ0類型號(hào)為0Fh08h 從8259A的端口地址為: A0H, A1H 8個(gè)對(duì)應(yīng)的中斷申請(qǐng)IRQ15IRQ8類型號(hào)為7

53、7h70h4. 中斷路由器(Interrupt Router) : 動(dòng)態(tài)分配PCI上的中斷申請(qǐng)到8259A中未被占用的中斷上。982. Pentium機(jī)中的可屏蔽中斷類型分配中斷申請(qǐng)引腳IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ15中斷類型號(hào)08h09h0Ah0Bh0Ch0Dh 0Eh0Fh70h71h72h73h74h75h76h77h哪個(gè)設(shè)備使用系統(tǒng)時(shí)鐘(8254)鍵盤連接從8259COM2串口2COM1串口1 保留軟盤控制器LPT1并口實(shí)時(shí)時(shí)鐘(RTC)保留(軟件指向0Ah類型)保留顯卡鼠標(biāo)數(shù)值

54、協(xié)處理器硬盤控制器保留99第四節(jié) 中斷程序設(shè)計(jì)一、中斷向量的保存、設(shè)置和恢復(fù)二、問題討論一、中斷向量的保存、設(shè)置1. 保存中斷向量 (35H功能)入口參數(shù) AL = 要保存向量的中斷類型號(hào)N功能號(hào) AH = 35H類型號(hào) 21H出口參數(shù) BX = ( 0: N4 ) ES = ( 0: N4 +2 )實(shí)現(xiàn)功能 將類型號(hào)N 的中斷向量保存在ES、BX中100方法一: 用堆棧保存中斷向量MOV AL, 09H ;取中斷向量 MOV AH, 35HINT 21HPUSH ES ;用堆棧保存PUSH BX 、 、101例 保存09H類型的中斷向量(如何保存(ES ),(BX) )102方法二: 用變量

55、保存中斷向量 save_09cs DW ? ;定義變量 save_09ip DW ? 、 MOV AX, SEG save_09cs MOV DS, AX MOV AL, 09H ;取中斷向量 MOV AH, 35H INT 21H MOV save_09cs , ES ;用變量保存 MOV save_09ip , BX 入口參數(shù) AL = 要設(shè)置向量的中斷類型號(hào)N DS:DX = 中斷子程的入口地址(中斷向量) 功能號(hào) AH = 25H 類型號(hào) 21H 出口參數(shù) 無 實(shí)現(xiàn)功能 將類型N的中斷向量設(shè)置在向量表中, 即 ( 0: N 4) =類型N中斷子程入口地址的偏移值 ( 0: N 4+2)

56、 =類型N中斷子程入口地址的段值1032. 設(shè)置中斷向量 (25H功能)104例1 設(shè)置中斷子程Sound 的中斷向量,類型號(hào)為60Hcode SEGMENT ASSUME CS:codestart: 、 MOV AX, SEG sound MOV DS, AX MOV DX, Offset sound MOV AL, 60H MOV AH, 25H INT 21H 、 INT 60H ;調(diào)用60H中斷子程 、 MOV AH,4CH INT 21H ; 中斷子程 sound PROC 、 、 、 IRET sound ENDP code ENDS END start二、問題討論 中斷嵌套問題1

57、05106 中斷嵌套問題1. 嵌套的概念2. 內(nèi)中斷引起的嵌套3. 可屏蔽硬中斷引起的嵌套4. 可屏蔽硬中斷嵌套的條件CPU正在執(zhí)行某一中斷子程,又被其它中斷源中斷使CPU轉(zhuǎn)去執(zhí)行另一中斷子程,這個(gè)過程叫中斷嵌套107 1. 嵌套的概念中斷子程序1中斷申請(qǐng)CPU執(zhí)行流程中斷子程序2在中斷子程中, 用INT指令調(diào)用中斷子程,引起了中斷嵌套, 這種嵌套就是內(nèi)中斷引起的嵌套。108 2. 內(nèi)中斷引起的嵌套CPU執(zhí)行流程中斷子程序n1中斷子程序n2INT n1INT n2 內(nèi)中斷引起的嵌套不受 IF 和 8259A 的控制, 嵌套的層次受限于堆棧的大小。109在響應(yīng)了某級(jí)可屏蔽硬中斷后,又有新的可屏蔽中斷申請(qǐng)發(fā)出,若滿足響應(yīng)條件,CPU

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論