




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 九 章中斷系統(tǒng)與 8259A 中斷控制器 .1 中斷的基本概念 .2 80X86的中斷指令 .3 中斷向量 .4 系統(tǒng)中斷的分類 .5 8259A中斷控制器 .7 實模式下的定時中斷程序設(shè)計 .6 PC/AT 可屏蔽中斷 .1 中斷的基本概念 復(fù)習(xí)CPU與外設(shè)信息交換的控制方式種類以查詢方式輸入為例當(dāng)外設(shè)數(shù)據(jù)未準(zhǔn)備好時,CPU需要不斷查詢外設(shè)是否準(zhǔn)備好的狀態(tài),效率低讀取狀態(tài)信息數(shù)據(jù)準(zhǔn)備好?從數(shù)據(jù)口讀數(shù)據(jù)NY1.中斷方式示意 (以輸入中斷為例)數(shù)據(jù)中斷請求中斷響應(yīng)數(shù)據(jù) 斷點現(xiàn)行程序中斷服務(wù)子程序 現(xiàn) 行 程 序輸入設(shè)備輸入接口啟動CPU 中斷基本概念2. 什么是中斷? CPU暫停執(zhí)行現(xiàn)行程序
2、,轉(zhuǎn)而處理隨機事件,處理完畢后再返回被中斷的程序,這一全過程稱為中斷。3. 中斷源 能夠引發(fā)CPU中斷的信息源 (1)外部中斷源(硬件中斷源) I/O設(shè)備 如鍵盤、顯示器、打印機 數(shù)據(jù)通道 如磁帶、磁盤 時鐘 如8254 0#,由此引發(fā)的中斷 故障源 如掉電、存貯器奇偶校驗錯(2)內(nèi)部中斷源(軟件中斷源) 執(zhí)行INT軟件中斷指令 如執(zhí)行指令I(lǐng)NT 21H CPU指令執(zhí)行產(chǎn)生的異常 如被0除、單步執(zhí)行 中斷基本概念選通信號4. 具有中斷請求功能的輸入接口示意圖輸入設(shè)備鎖存器(8)三態(tài)緩沖器(8)CPU 數(shù)據(jù)線R D Q+5 V中斷請求觸發(fā)器Q D中斷允許觸發(fā)器數(shù)據(jù)線D0位地址譯碼器INTR地址總
3、線IOWIOR控制口選中數(shù)據(jù)口選中 中斷基本概念選通信號4. 具有中斷請求功能的輸入接口示意圖輸入設(shè)備鎖存器(8)三態(tài)緩沖器(8)CPU 數(shù)據(jù)線R D Q+5 V中斷請求觸發(fā)器Q D中斷允許觸發(fā)器數(shù)據(jù)線D0位地址譯碼器INTR地址總線IOWIOR控制口選中數(shù)據(jù)口選中狀態(tài)標(biāo)志寄存器 中斷基本概念5. 中斷系統(tǒng) 為實現(xiàn)中斷而采取的硬件和軟件的集合。 6.中斷系統(tǒng)應(yīng)具備的基本功能 對于硬件中斷,接口電路應(yīng)具備屏蔽和開放的功能,這種功能由程序員通過軟件去控制。 能實現(xiàn)中斷判優(yōu)(中斷排隊),當(dāng)有多個中斷源提出請求時,應(yīng)能優(yōu)先響應(yīng)高級別的中斷源。 中斷基本概念 能夠?qū)崿F(xiàn)中斷嵌套,即高級別的中斷源能夠中斷低
4、級別的中斷服務(wù)程序。 響應(yīng)中斷后,能自動轉(zhuǎn)入中斷處理,處理完畢能自動返回斷點。現(xiàn)行程序斷點為B服務(wù)B設(shè)備中斷為A服務(wù)A設(shè)備中斷斷點為A服務(wù)設(shè)“B” 級別高于“A” 中斷基本概念1. 開中斷指令 STI 功能:使F寄存器中I標(biāo)志置1,CPU處于開中斷狀態(tài)。2. 關(guān)中斷指令 CLI 功能:使F寄存器中I標(biāo)志置0,CPU處于關(guān)中斷狀態(tài)。 3. 軟件中斷指令 INT n n為中斷類型碼,n為0255之間有定義的無符號整數(shù)。 功能:無條件轉(zhuǎn)向n型中斷服務(wù)子程序。 .2 80X86的中斷指令 INT n 指令的執(zhí)行過程CPU響應(yīng)軟件中斷的過程 F寄存器棧(保存INT n 之前的F狀態(tài)) 使F中的T標(biāo)志置0
5、禁止單步操作 I標(biāo)志置0CPU處于關(guān)中斷狀態(tài) 斷口地址棧先:斷口基地址(CS) 棧,后:斷口偏移地址(IP)棧 CPU從4n 4n+3單元取出n型服務(wù)程序入口地址 IP:CS,從而轉(zhuǎn)入n型中斷服務(wù)程序。 80X86中斷指令4. 中斷返回指令 IRET功能:依次從棧頂彈出6個元素 IP,CS,F 如果棧頂是INT n 的斷口地址,則執(zhí)行 IRET后,返回斷點,否則不能。 執(zhí)行INT n 棧頂示意圖執(zhí)行IRET 示意圖sp 斷口偏移地址斷口段基址FCSFIPsp IRET 是中斷服務(wù)子程序的出口指令 80X86中斷指令 .3 中斷向量 什么是中斷向量? 中斷向量是實模式下,中斷服務(wù)子程序的 入口地
6、址 它由2部分組成: 服務(wù)程序所在代碼段的段基址 2 個字節(jié) 服務(wù)程序入口的偏移地址 2 個字節(jié)2. 中斷向量表每個中斷都指定了一個類型碼,也稱為中斷號。每一種中斷對應(yīng)有一個中斷服務(wù)程序(Interrupt Service Program ISP ) 中斷類型碼通過一個地址指針表與中斷服務(wù)程序的入口地址相聯(lián)系: 實模式下: 該表稱為中斷向量表;保護模式下:該表稱為中斷描述符表。3. 中斷向量表的設(shè)置CPU規(guī)定:在實模式下,中斷向量表需設(shè)置在系統(tǒng)的RAM最低端的1K單元(00000H 003FFH)00000H:00004H:003FCH:0型中斷向量1型中斷向量255型中斷向量n型中斷向量4*
7、n: 中斷向量4. 中斷向量表的表地址與中斷類型的關(guān)系如:“21H”型中斷向量:存放在84H 87H單元中問:9CH型中斷向量1234H:5678H存放在何處,如何存放?解: 9CH 4=1001110000=270H 9CH型中斷向量存于 270H 273H單元中4n+0+2+3+1 n 型服務(wù)程序入口的偏移地址 n 型服務(wù)程序入口的段基址n 型中斷向量 中斷向量5. 中斷向量的引導(dǎo)作用 YYXX21H型中斷向量4 21H 用戶程序MOV AH,1INT 21HMOV DL,AL NEXT:F寄存器內(nèi)容堆棧區(qū)NEXT的有效地址NEXT的段基址XX:YY21H型服務(wù)程序IRETIPCSIPCS
8、FIRETCPU響應(yīng)軟件中斷的過程 中斷向量6. 中斷向量表的初始化 由BIOS設(shè)計的中斷服務(wù)程序(如INT 16H , INT 10H)其中斷向量在加電時由BIOS負責(zé)寫入中斷向量表。由DOS設(shè)計的中斷服務(wù)程序(如 INT 21H)其中斷向量是在啟動DOS時,由DOS負責(zé)寫入中斷向量表。用戶程序開發(fā)的中斷服務(wù)程序,由用戶程序?qū)懭肫渲袛嘞蛄俊?中斷向量XX:YY用戶編寫的 n 型中斷服務(wù)程序IRETYYXX中斷向量表4 n?問題:用戶如何向中斷向量表中寫入中斷向量? 中斷向量方法一、用戶自己編寫程序填寫中斷向量CLIPUSH DSMOVAX, 0000HMOVDS, AXMOVBX, 4*nM
9、OVAX, OFFSET SERVICEMOVBX, AXMOVAX, SEG SERVICEMOVBX+2, AXPOP DSSTI 中斷向量方法二、DOS設(shè)計2個子程序,專門用于中斷向量的讀出、寫入 INT 21H 的35H子功能 功能:讀出n型中斷向量入口:AL=中斷類型碼出口:ES:BX=n型中斷向量 INT 21H 的25H子功能 功能:寫入n型中斷向量入口:DS=中斷服務(wù)程序所在代碼段的段基址 DX=中斷服務(wù)程序入口的偏移地址 AL=中斷類型碼出口:無 中斷向量例:把用戶程序中以“TIMER”命名的中斷服務(wù)子程序的入口地址 4 1CH 4 1CH+3單元數(shù):OLD1C DD ?代:
10、 MOV AH , 35H MOV AL , 1CH INT 21H MOV WORD PTR OLD1C , BX MOV WORD PTR OLD1C+2 , ES PUSH DS MOV AX , CS MOV DS,AX MOV DX , OFFSET TIMERMOV AH , 25HMOV AL , 1CHINT 21HPOP DS 中斷向量CPU中斷硬件中斷(外部中斷)軟件中斷PC機256種中斷可屏蔽中斷非屏蔽中斷BIOS中斷DOS中斷DOS專用中斷DOS保留中斷用戶可用DOS中斷用戶可開發(fā)的中斷 .4 系統(tǒng)中斷的分類 中斷邏輯CPU中斷軟件中斷(INT n指令)非屏蔽中斷請求中
11、斷控制系統(tǒng)NMI可屏蔽中斷請求INTR 系統(tǒng)中斷的分類1. CPU中斷 CPU中斷是指:CPU執(zhí)行某些操作而引發(fā)的中斷,這類中斷使用了0、1、3、4、6、7中斷號。(1) 除法錯中斷 0型中斷(2) 單步中斷 1型中斷(3) 斷點中斷 3型中斷(4) 溢出中斷 4型中斷 系統(tǒng)中斷的分類 2. 軟件中斷 執(zhí)行有定義的INT n指令而引發(fā)的中斷,稱為軟件中斷。 軟件中斷使用05H,10HFFH中的若干個中斷號。又分為:(1) BIOS中斷 BIOS中斷,占用了05H、10H1FH中斷號,用戶程序執(zhí)行相關(guān)的軟中斷指令可以調(diào)用相應(yīng)的中斷服務(wù)程序。 INT 05H 屏幕打印;INT 10H 屏幕顯示 I
12、/O;INT 11H 設(shè)備配置檢測; 系統(tǒng)中斷的分類INT 12H 測試內(nèi)存容量;INT 13H 磁盤I/O;INT 14H 串行通信I/O;INT 15H BIOS擴展功能;INT 16H 鍵盤I/O;INT 17H 打印機I/O;INT 18H 啟動PC機ROM BASIC(AT機)無;INT 19H 重新裝入引導(dǎo)程序;INT 1AH 實時時鐘管理。 中斷號1DH,1EH,1FH,41H,46H也被BIOS占用了。但是,與這些中斷號對應(yīng)的并不是中斷服務(wù)程序。 系統(tǒng)中斷的分類(2) DOS中斷 DOS中斷,又分為DOS專用中斷,DOS保留中斷,用戶可調(diào)用的DOS中斷以及保留給用戶開發(fā)的中斷。
13、 DOS專用中斷 22H型中斷 23H型中斷 24H型中斷 28H3FH型中斷 系統(tǒng)中斷的分類用戶可調(diào)用的DOS中斷 20H型中斷 21H型中斷 25H型中斷 26H型中斷 27H型中斷用戶可開發(fā)的DOS中斷 DOS保留的中斷 系統(tǒng)中斷的分類外部硬件中斷是由CPU以外的中斷請求而引發(fā)的。如果有多個中斷請求,怎樣連接至CPU呢?中斷0中斷n中斷請求80X86INTR?8259A .5 8259A中斷控制器 1. 8259A的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器D0 D7讀/寫邏輯級連/緩沖比較器CAS1CAS0CAS2SP/ENRDWRA0 控制邏輯INTINTA中斷服務(wù)寄存器(ISR) 優(yōu)先權(quán)電路中斷請求寄
14、存器(IRR)IR0IR1IR2IR3IR4IR5IR6IR7中斷屏蔽寄存器(IMR)內(nèi)部總線CS數(shù)據(jù)總線緩沖器D0 D7讀/寫邏輯級連/緩沖比較器CAS1CAS0CAS2SP/ENRDWRA0 控制邏輯中斷服務(wù)寄存器(ISR) 優(yōu)先權(quán)電路中斷請求寄存器(IRR)IR0IR1IR2IR3IR4IR5IR6IR7中斷屏蔽寄存器(IMR)內(nèi)部總線CS(1)中斷請求寄存器 ( IRR) 寄存引腳IR0IR7的中斷請求信號,IRRi位置1,表明IRi引腳上有了中斷請求信號 8259A內(nèi)部結(jié)構(gòu)2. 中斷屏蔽寄存器 (IMR) 寄存程序員寫入的中斷屏蔽字,屏蔽字某位=1(IMRi位=1),則與該位對應(yīng)的中
15、斷請求信號(IRRi位)就不能送到中斷優(yōu)先權(quán)電路。數(shù)據(jù)總線緩沖器D0 D7讀/寫邏輯級連/緩沖比較器CAS1CAS0CAS2SP/ENRDWRA0 控制邏輯中斷服務(wù)寄存器(ISR) 優(yōu)先權(quán)電路中斷請求寄存器(IRR)IR0IR1IR2IR3IR4IR5IR6IR7中斷屏蔽寄存器(IMR)內(nèi)部總線CS 8259A內(nèi)部結(jié)構(gòu)如:MOV AL , 11111100B OUT 屏蔽寄存器口地址,AL ;屏蔽IRR7 IRR2的請求開放IRR1,IRR0如: IN AL,屏蔽寄存器口地址 AND AL,11110111B OUT 屏蔽寄存器口地址,AL ;開放IRR3的請求 ;對其它位的請求不改變屏蔽/開
16、放的狀態(tài) 8259A內(nèi)部結(jié)構(gòu)優(yōu)先權(quán)電路Q3Q4IR3IR4Q3Q4IMRIRR.數(shù)據(jù)總線緩沖器D0 D7讀/寫邏輯級連/緩沖比較器CAS1CAS0CAS2SP/ENRDWRA0 控制邏輯中斷服務(wù)寄存器(ISR) 優(yōu)先權(quán)電路中斷請求寄存器(IRR)IR0IR1IR2IR3IR4IR5IR6IR7中斷屏蔽寄存器(IMR)內(nèi)部總線CS3. 優(yōu)先權(quán)電路 (排隊電路) 8259A內(nèi)部結(jié)構(gòu)比較CPU正為之服務(wù)的中斷源和剛進入優(yōu)先權(quán)電路的中斷源,哪一個級別更高。 通過判優(yōu)選中其中級別最高的中斷源,然后通過控制電路,從INT端向CPU提中斷請求。作用: 比較同時送達優(yōu)先權(quán)電路的中斷請求,哪一個 級別最高。 8
17、259A內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器D0 D7讀/寫邏輯級連/緩沖比較器CAS1CAS0CAS2SP/ENRDWRA0 控制邏輯INTINTA中斷服務(wù)寄存器(ISR) 優(yōu)先權(quán)電路中斷請求寄存器(IRR)IR0IR1IR2IR3IR4IR5IR6IR7中斷屏蔽寄存器(IMR)內(nèi)部總線CS4. 中斷控制電路 8259A內(nèi)部結(jié)構(gòu)通過INTA接收CPU送來的中斷響應(yīng)信號,中斷響應(yīng)信號是2個連續(xù)的負脈沖。INTA使8259向CPU送出被選中的中斷源的中斷類型碼使與被選中的中斷源對應(yīng)的ISRi位置1,IRRi位置0作用: 寄存一組初始化命令字和操作命令字,通過譯碼產(chǎn) 生內(nèi)部控制信號當(dāng)判優(yōu)電路選中一個中斷源時向C
18、PU提中斷請求 (INT) 8259A內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器D0 D7讀/寫邏輯級連/緩沖比較器CAS1CAS0CAS2SP/ENRDWRA0 控制邏輯INTINTA中斷服務(wù)寄存器(ISR) 優(yōu)先權(quán)電路中斷請求寄存器(IRR)IR0IR1IR2IR3IR4IR5IR6IR7中斷屏蔽寄存器(IMR)內(nèi)部總線CS5. 中斷服務(wù)寄存器 (ISR) 8259A內(nèi)部結(jié)構(gòu)ISR: 8位寄存器,ISRi位與IRRi位一一對應(yīng)作用:記錄CPU正為之服務(wù)的是哪一個中斷源,怎樣記錄?反之,如果ISR0位由1 0,表明IR0的中斷服務(wù)程序執(zhí)行完了所以ISR的每一位都是響應(yīng)中斷源的中斷服務(wù)標(biāo)志位。如:通過判優(yōu)電路IR
19、R0位的請求被選中,8259A向CPU發(fā)中斷請求,通過INTA收到第一個中斷響應(yīng)信號后,ISR0位置1,IRR0位置0。ISR0位置1,表明CPU正在準(zhǔn)備(或正在)執(zhí)行IR0的服務(wù)程序。 8259A內(nèi)部結(jié)構(gòu)6. 數(shù)據(jù)總線緩沖器 作用:完成與CPU數(shù)據(jù)線配接接收初始化命令字,操作命令字當(dāng)收到第二個中斷響應(yīng)脈沖時,通過他們向CPU送出被選中的中斷源的中斷類型碼n 在這之后CPU從4n+04n+3單元取出n型中斷向量, 從而轉(zhuǎn)入n型服務(wù)程序。 8259A內(nèi)部結(jié)構(gòu)7. 讀/寫控制模塊功能:接收片選信號CS 、端口選擇信號A0和讀寫控制信 號RD、WR。 一片8259A在系統(tǒng)中占用兩個口地址,用末位地址
20、線A0選擇端口,其它地址線通過譯碼產(chǎn)生8259A的片選信號。 8. 級連/緩沖比較器 一位8259A可以管理8級中斷,二片8259A“級連”可管理15級中斷,級連/緩沖比較器是為完成多片8259A級連設(shè)置的模塊。 8259A內(nèi)部結(jié)構(gòu) 8259A的管腳IR0 IR7 :外部中斷請求信號輸入INT :輸出,提向CPU的INTR端INTA :輸入,接收CPU發(fā)來的中斷響應(yīng)D0D7 :輸入/輸出,數(shù)據(jù)總線CS :片選信號A0 :地址線A0,用于選擇內(nèi)部端口WR、RD :讀/寫控制信號CAS0CAS2:用于8259級聯(lián)SP/EN :用于8259級聯(lián)CS WRRDD7D6D5D4D3D2D1D0CAS0C
21、AS1GNDVccA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS21 282 273 264 255 246 237 228 219 2010 1911 1812 1713 1614 15管腳信號2. 8259A的中斷過程CPU響應(yīng)硬件中斷的過程首先由中斷請求寄存器寄存加到引腳IR0IR7上的中 斷請求。 在中斷屏蔽寄存器的管理下,沒有被屏蔽的中斷請求被 送到優(yōu)先權(quán)電路判優(yōu)。 經(jīng)過優(yōu)先權(quán)電路的判別,選中當(dāng)前級別最高的中斷源,然 后從引腳INT向CPU發(fā)出中斷請求信號。 CPU滿足一定條件后,向8259A發(fā)出2個中斷響應(yīng)信號(負脈沖)。 在實模式下,CPU從4
22、n4n3單元取出該中斷源 的中斷向量IP、CS,從而引導(dǎo)CPU執(zhí)行該中斷源的 中斷服務(wù)程序。 8259A從引腳INTA收到第1個中斷響應(yīng)信號之后,立即 使中斷服務(wù)寄存器中與被選中的中斷源對應(yīng)的那一位 置1,同時把中斷請求寄存器中的相應(yīng)位清0。 從引腳INTA收到第2個中斷響應(yīng)信號后,8259A把選中 的中斷源類型碼n,通過數(shù)據(jù)線送往CPU。 3. 8259A的中斷管理方式 8259A中斷管理方式中斷觸發(fā)方式中斷屏蔽方式中斷優(yōu)先級管理方式中斷結(jié)束方式總線連接方式邊沿觸發(fā)電平觸發(fā)常規(guī)屏蔽方式特殊屏蔽方式完全嵌套方式特殊嵌套方式優(yōu)先級循環(huán)方式自動EOI方式非自動EOI方式緩沖方式非緩沖方式常規(guī)EOI
23、循環(huán)方式自動EOI循環(huán)方式特殊EOI循環(huán)方式常規(guī)EOI方式特殊EOI方式4. 8259A的編程 8259A的控制命令分為初始化命令字ICWICW1ICW4向8259A寫入ICW的過程稱為初始化編程操作命令字OCW OCW1OCW3向8259A寫入OCW的過程稱為操作方式編程8259A內(nèi)部寄存器的尋址方法CS#RD#WR#A0D4D3讀寫操作010000寫OCW2寫OCW3寫ICW1寫ICW2,ICW3,ICW4,OCW1(順序?qū)懭?00101x1xx00101xx讀出IRR、ISR讀出IMR需要CS#、A0、RD#、WR#和D4、D3的配合內(nèi)部寄存器的訪問方法如下表: 8259A初始化編程流程
24、圖ICW1偶地址ICW2奇地址ICW3奇地址ICW4奇地址 級連方式?CPU是88/86?準(zhǔn)備接受中斷請求No(SGNL=1) Yes (SGNL=0) No(ICW4=0) Yes (ICW4=1) 初始化命令字ICW(Initialization Command Word)通常是系統(tǒng)開機時,由 初始化程序填寫,且在整個系統(tǒng)工作過程中保持不變。初始化命令字必須按順 序填寫。(1) ICW11 初始化命令字1需要ICW40不需要ICW41單片8259A0級連86系統(tǒng)不用(通常為0)1電平觸發(fā)方式0邊沿觸發(fā)方式86系統(tǒng)不用(通常為0)A0 D7 D6 D5 D4 D3 D2 D1 D0 0 1
25、LTIM ADI SNGL ICW41 T7 T6 T5 T4 T3 A0 D7 D6 D5 D4 D3 D2 D1 D01ICW2設(shè)置中斷類型碼注: T7T3 中斷向量類型碼高位, 由編程決定 低三位 自動設(shè)置為 IR0 IR7 的類型編碼(000 111) D7 D6 D5 D4 D3 D2 D1 D0IR7T7 T6 T5 T4 T3 1 1 1IR6T7 T6 T5 T4 T3 1 1 0IR5T7 T6 T5 T4 T3 1 0 1IR4T7 T6 T5 T4 T3 1 0 0IR3T7 T6 T5 T4 T3 0 1 1IR2T7 T6 T5 T4 T3 0 1 0IR1T7 T6
26、 T5 T4 T3 0 0 1IR0T7 T6 T5 T4 T3 0 0 08259A傳送的中斷類型碼 1 S7 S6 S5 S4 S3 S2 S1 S0 1IR輸入帶有一個 從控制器 0IR輸入不帶一個 從控制器A0 D7 D6 D5 D4 D3 D2 D1 D01 1 0 0 0 0 0 ID2 ID1 ID0從控制器ID,編碼000111分別對應(yīng)該從片的INT往主片的IR0IR7哪個端子輸入。A0 D7 D6 D5 D4 D3 D2 D1 D01(3) ICW3 (主控制器) ICW3 (從控制器) 186 / 88模式080 / 85模式1自動EOI0非自動EOI 0 X 非緩沖方式
27、1 0 緩沖方式/從控制器 1 1 緩沖方式/主控制器1特殊完全嵌套方式0非特殊完全嵌套方式A0 D7 D6 D5 D4 D3 D2 D1 D01(4) ICW40 0 0 SFNM BUF M / S AEOI PM 由CPU向8259A送三個字節(jié)的操作命令字OCW(Operation Command Word), 用以規(guī)定8259A的工作方式,如: 中斷屏蔽 結(jié)束中斷 優(yōu)線權(quán)旋轉(zhuǎn) 中斷狀態(tài) 等。 操作命令字是在應(yīng)用程序中設(shè)置的,設(shè)置時,順序上沒有嚴格的要求。2 操作命令字(1)OCW1OCW1是中斷屏蔽命令字,命令格式如圖。命令字中的M7M0對應(yīng)IMR的各位。Mi=1表示該中斷被屏蔽,Mi
28、=0表示該中斷開放。 1 M7 M6 M5 M4 M3 M2 M1 M0中斷屏蔽1置屏蔽0復(fù)位屏蔽A0 D7 D6 D5 D4 D3 D2 D1 D01中斷結(jié)束命令字,命令格式如圖。 R、SL、EOI的不同組合決定了8259A的幾種工作方式。 L2L0 這幾位確定當(dāng)SL=1時指定的特殊結(jié)束或特殊循環(huán)時的中斷優(yōu)先級。最常用的常規(guī)EOI命令字為20H。(2)OCW2 0 R SL EOI 0 0 L2 L1 L00 0 1 常規(guī)EOI命令0 1 1 特殊EOI命令 1 0 1 常規(guī)EOI,按優(yōu)先級循環(huán)1 0 0 以自動EOI方式旋轉(zhuǎn)(設(shè)置) 自動旋轉(zhuǎn) 0 0 0 取消自動EOI時的優(yōu)先級循環(huán)1 1
29、 1 特殊EOI,按優(yōu)先級循環(huán)1 1 0 置優(yōu)先權(quán)命令0 1 0 無操作0 0 0 0 有 0 0 1 1 效 0 1 0 2 的 0 1 1 3 中1 0 0 4 斷1 0 1 5 請 1 1 0 6 求 1 1 1 7 級 別A0 D7 D6 D5 D4 D3 D2 D1 D00中斷結(jié)束特殊旋轉(zhuǎn)用于控制8259A的運行方式。命令格式如圖。(3)OCW3 0 0 ESMM SMM 0 1 P RR RIS1 = 查詢命令0 = 非查詢命令A(yù)0 D7 D6 D5 D4 D3 D2 D1 D00讀寄存器命令0 1 0 10 0 1 1無作用在下一個讀脈沖時讀IRR在下一個讀脈沖時讀ISR特殊屏蔽
30、方式0 1 0 10 0 1 1無作用取消特殊屏蔽設(shè)置特殊屏蔽8259A編程舉例按以下要求初始化8259A:端口地址為200H和201H;中斷為上升沿觸發(fā);單片8259A;不寫ICW4;與IR0-IR3對應(yīng)的中斷類型碼為08H-0BH;IR4-IR7不使用。根據(jù)要求,各初始化參數(shù)及工作參數(shù)如下:ICW1 = 00010010 = 12HICW2 = 08H 中斷向量碼 OCW1 = 11110000 = 0F0H 中斷屏蔽字 初始化程序如下:INIT8259A:MOVDX,200H;A0=0,寫ICW1MOVAL,12H;上升沿觸發(fā),單片,不寫ICW4OUTDX,ALMOVDX,201H;A0
31、=1,寫ICW2,OCW1MOVAL,08H;ICW2OUTDX,ALMOVAL,0F0H;OCW1:屏蔽IR4-IR7OUTDX,AL5. 286以上微機的8259A中斷管理方式 系統(tǒng)加電后由BIOS對8259A初始化編程,設(shè)定中斷管理方式 : 系統(tǒng)8259A,中斷觸發(fā)方式為邊沿觸發(fā),即 為中斷請求。 中斷屏蔽方式采用常規(guī)屏蔽方式即應(yīng)用時,向8259A中斷屏蔽寄存器寫入適當(dāng)屏蔽字即可屏蔽/開放某一級中斷。 中斷源為固定優(yōu)先級 即IR0中斷請求級別最高,IR7中斷請求級別最低。采用常規(guī)中斷結(jié)束方式 即在中斷服務(wù)子程序結(jié)束之前向8259送中斷結(jié)束命令。6286以上的微機,對8259A的編程 對8
32、259A編程分二步進行:對8259A進行初始化編程 系統(tǒng)加電后,由BIOS完成對8259A進行應(yīng)用編程 編寫中斷程序時完成,有2項內(nèi)容:每一個硬件中斷服務(wù)程序結(jié)束前必須向8259A送中斷 命令字,通知8259A本次中斷結(jié)束,否則8259A不能響 應(yīng)同一中斷源的下次中斷。 需要時,向8259A中斷屏蔽寄存器寫入屏蔽字。 8259A收到中斷結(jié)束命令后,把ISR中的置1位清0! 1. 概述 硬件中斷分類:可屏蔽中斷,非屏蔽中斷 CPU有2個接收中斷請求信號的引腳。 可屏蔽中斷: 輸入到INTR引腳的中斷請求信號, 引發(fā)的中斷。非屏蔽中斷: 輸入到NMI引腳的中斷請求信號, 引發(fā)的中斷。INTRNMI
33、 .6 PC/AT 可屏蔽中斷 有可屏蔽中斷請求,沒有DMA請求,沒有非屏蔽中 斷請求 響應(yīng)非屏蔽中斷的條件 有非屏蔽中斷請求,沒有DMA請求 一條指令執(zhí)行完 響應(yīng)可屏蔽中斷的條件CPU一條指令執(zhí)行完畢 硬件中斷的級別 DMA請求級別高于非屏蔽中斷高于可屏蔽中斷。 CPU處于開中斷狀態(tài)(I標(biāo)=1) 2. 可屏蔽中斷的硬件結(jié)構(gòu) IR0IR1IR2IR3IR4IR5IR6IR7日時鐘鍵盤IRQ3IRQ4IRQ5IRQ6IRQ7輔串口主串口并口2軟盤并口1CSA0主片片選地址線A0CAS20INTINTRS20D7D0CPUINTARDWRSP/ENS20INTAIORIOW主8259總線控制器+5
34、V從8259 INT從8259 CAS20從8259相應(yīng)引腳可屏蔽中斷硬件結(jié)構(gòu)(1)可屏蔽中斷硬件結(jié)構(gòu)(2)硬盤CSA0從片片選地址線A0CAS20INTD7D0INTARDWRSP/EN從8259主8259 IR2主8259 CAS20主8259相應(yīng)引腳IR1IR3IR5IR7IR0IR2IR4IR6實時時鐘IRQ10IRQ9IRQ12IRQ11用戶中斷保留保留保留保留協(xié)處理器主8259中斷源中斷類型從8259中斷源中斷類型IR0日時鐘08HIR0實時時鐘70HIR1鍵盤09HIR1用戶中斷71H改向0AHIR2從8259IR2保留72HIR3輔串口0BHIR3保留73HIR4主串口0CHI
35、R4保留74HIR5并行口20DHIR5協(xié)處理器75HIR6軟盤0EHIR6硬盤76HIR7并行口10FHIR7保留77H 使用2片8259級連,管理15級中斷 中斷源與中斷類型 硬件可屏蔽中斷的中斷級別主8259中斷源中斷級別從8259中斷源中斷級別IR0日時鐘 最高 次高 高 最低IR0實時時鐘 高 低IR1鍵盤IR1用戶中斷IR2從8259IR2保留IR3輔串口IR3保留IR4主串口IR4保留IR5并行口2IR5協(xié)處理器IR6軟盤IR6硬盤IR7并行口1IR7保留 系統(tǒng)分配的8259口地址 中斷屏蔽寄存器 口地址接收中斷結(jié)束命令的寄存器口地址主825921H20H從8259A1HA0H
36、中斷結(jié)束命令 命令字=20H 接入主8259 IR0 IR7的中斷源 其服務(wù)程序結(jié)束要向主8259送中斷結(jié)束命令字 MOV AL,20H OUT 20H,AL 恢復(fù)現(xiàn)場 IRET MOV AL,20H OUT 20H,AL OUT 0A0H,AL 恢復(fù)現(xiàn)場 IRET接入從8259的中斷源,其服務(wù)程序結(jié)束應(yīng)分別向 主、從8259各送一個中斷結(jié)束命令字 。 中斷的引發(fā)方式不同 CPU獲取中斷類型碼的方式不同 CPU響應(yīng)的條件不同中斷處理程序的結(jié)束方式不同3硬件中斷和軟件中斷的區(qū)別 4. 硬件可屏蔽中斷例 中斷源: 系統(tǒng)8254 0#計數(shù)器,每55ms有一次中斷請求 中斷類型: 8型 (1)日時鐘中
37、斷 CPU轉(zhuǎn)入8型中斷后,完成下列工作 開中斷,保護現(xiàn)場(DS壓棧) 40H DS,對“日時鐘計數(shù)器”加1 測算軟驅(qū)馬達關(guān)閉時間IRET1CH服務(wù)程序向主8259送中斷結(jié)束命令恢復(fù)現(xiàn)場,IRET 執(zhí)行INT 1CH 日時鐘中斷處理流程: 什么是“日時鐘計數(shù)器” BIOS系統(tǒng)規(guī)定:40H:6CH40H:6FH這4個單元(共32位)為日時鐘計數(shù)器,每55ms加1次,計數(shù) 到:001800B0H,為24小時,其計數(shù)值供系統(tǒng)軟件使用。 系統(tǒng)啟動時CPU執(zhí)行BIOS中的一段程序,讀取CMOS實時時鐘電路的時間值計數(shù)值40:6CH40:6FH做為日時鐘計數(shù)器的計數(shù)初值。關(guān)于1CH服務(wù)程序 8#服務(wù)程序,每
38、隔55ms在DS=40H的前提下,調(diào)用一次1CH服務(wù)程序,之后又返回8型! 所以1CH中斷是日時鐘的外擴中斷,用戶可開發(fā)新的1CH中斷(完成每55ms一次的定時操作)取代原來的中斷服務(wù)子程序。 IRET1CH服務(wù)程序(2)用戶中斷 中斷源: 系統(tǒng)總線插槽B4端引入的用戶設(shè)計的硬件中斷請求信號用戶中斷請求的途徑 用戶中斷請求80X86INTRIR2 INTIMR主8259 INTIR1IMR從8259用戶中斷請求從ISA總線B4端子(IRQ9)引入,經(jīng)過主8259,從8259二級中斷管理,最后由主8259向CPU提中斷。 只有從8259IMR1置0,主8259IMR2置0,其中斷請求方能送到CP
39、U。 B4實現(xiàn)用戶中斷必須對主、從8259應(yīng)用編程,保證中斷申請由8259中斷控制器提向CPU IN AL,0A1HAND AL,11111101BOUT 0A1H,AL ;開放用戶中斷IN AL,21HAND AL,11111011BOUT 21H,AL ;開放從8259中斷 BIOS為“71H型”設(shè)計的服務(wù)程序如下: PUSHAXMOVAL,20HOUT 0A0H,ALPOPAXINT0AH待開發(fā) 用戶服務(wù)程序IRET用戶中斷的中斷類型 CPU響應(yīng)用戶中斷后,自動轉(zhuǎn)向“71H型”服務(wù)程序 用戶中斷服務(wù)程序結(jié)束 若用戶中斷定義為0AH型, 服務(wù)程序結(jié)束前只向主8259送結(jié)束命令 若用戶中斷定
40、義為71H 服務(wù)程序結(jié)束前,向主從8259各送一中斷結(jié)束命令 用戶定義的中斷服務(wù)程序有兩個設(shè)計方法: 定義用戶中斷服務(wù)程序為“71H型” 中斷程序的準(zhǔn)備工作:置換71H型中斷向量,即把用戶 中斷的中斷向量471H 471 H+3單元 定義用戶中斷服務(wù)程序為“0AH型” 中斷程序的準(zhǔn)備工作:置換0AH型中斷向量,即把 用戶中斷的中斷向量40AH 40AH+3單元 IR0IR1IR2IR3IR4IR5IR6IR7日時鐘鍵盤IRQ3IRQ4IRQ5IRQ6IRQ7輔串口主串口并口2軟盤并口1CSA0主片片選地址線A0CAS20INTINTRS20D7D0CPUINTARDWRSP/ENS20INTA
41、IORIOW主8259總線控制器+5V從8259 INT從8259 CAS20從8259相應(yīng)引腳(3) 鍵盤中斷 中斷源 : 主板鍵盤接口電路中斷類型: 9 鍵盤中斷全過程: 主板鍵盤接口電路鍵盤中斷IR1 主8259AINTRDB70CPU并行掃描碼鍵盤電路串行掃描碼 鍵盤接口分2部分: 一部分裝在鍵盤盒內(nèi)鍵盤電路 另一部分裝在主機板鍵盤接口電路,2 部分之間通過5芯電 源連接。 主板鍵盤接口電路鍵盤中斷IR1 主8259AINTRDB70CPU并行掃描碼鍵盤電路串行掃描碼鍵盤電路以單片機為核心,加電后固化在單片機 內(nèi)部的鍵盤掃描程序,不斷掃描每一個按健,一旦有鍵閉合,就把閉合鍵的掃描碼(位
42、置碼) 鍵盤接口電路。 鍵盤接口電路: 把串行掃描碼通過移位寄存器轉(zhuǎn)換成并行掃描碼口地址為60H的端口寄存器 主板鍵盤接口電路鍵盤中斷IR1 主8259AINTRDB70CPU并行掃描碼鍵盤電路串行掃描碼串并轉(zhuǎn)換完畢,向主8259接中斷請求 CPU響應(yīng)后,轉(zhuǎn)9型服務(wù)程序 鍵盤中斷處理流程 開中斷,保護現(xiàn)場(DS壓棧) 40H DS 從60H口地址寄存器取并行掃描碼分析,處理轉(zhuǎn) 換成2字節(jié)鍵代碼存入鍵盤緩沖區(qū) 向8259發(fā)中斷結(jié)束命令 恢復(fù)現(xiàn)場 IRET 鍵盤緩沖區(qū) BIOS規(guī)定:系統(tǒng)RAM 40:1EH 40:3DH為鍵盤緩沖區(qū)共32個單元,實際使用30個單元,存放15個鍵的鍵代碼。鍵盤緩沖區(qū)
43、是以“先進先出”的規(guī)則存取。 由9型服務(wù)程序?qū)懭腈I代碼,用戶用INT 16H訪問鍵盤緩沖區(qū),鍵盤緩沖區(qū)是9型硬中斷和INT 16H軟中斷之間交換信息的緩沖區(qū) 。由鍵盤中斷處理程序?qū)懭腈I代碼鍵盤緩沖區(qū)40:1E40:3D由INT 16H讀取鍵代碼 .7 實模式下的定時中斷程序設(shè)計 應(yīng)用背景 在許多應(yīng)用中,需要每隔一定時間完成一次預(yù)定的操作定時操作。如定時數(shù)據(jù)采集、定時顯示、定時鍵盤掃描等,而采用定時中斷技術(shù)實現(xiàn)這種操作具有實時性好、占用CPU資源較少的特點。一、定時中斷程序的設(shè)計方法 1.定時中斷源的選擇 系統(tǒng)8254 0#計數(shù)器 外擴8254作為定時中斷源 其它外擴定時中斷源2.確定中斷服務(wù)程
44、序的類型 中斷類型由定時中斷源接入8259A的中斷引腳IRx有關(guān)。 如果中斷源是外擴定時器,由從8259A的IR1引腳引入,則服務(wù)程序應(yīng)定義為0AH或71H型。如果中斷源是系統(tǒng)8254的0#計數(shù)器,并且定時周期是55ms的整數(shù)倍,則定義用戶服務(wù)程序為1CH型,取代系統(tǒng)的1CH型服務(wù)程序。如果中斷源是系統(tǒng)8254的0計數(shù)器,但定時周期55ms的整數(shù)倍,則應(yīng)重新對8254 0計數(shù)器進行初始化則定義用戶服務(wù)程序為08H型。定時周期不等于55ms整數(shù)倍的處理框圖新8型中斷服務(wù)程序3.置換中斷向量 服務(wù)程序的類型確定之后,應(yīng)置換相應(yīng)的中斷向量(使用INT21H的25H和35H子功能)。4.開放8259A
45、中斷 從系統(tǒng)硬件中斷的結(jié)構(gòu)圖可知:用戶中斷要經(jīng)過從8259A、主8259A兩級中斷控制器的管理,為了使用戶中斷請求送到CPU,應(yīng)將從8259A的IMR的D1位置0,主8259A的IMR的D2位置0,從而打通用戶中斷請求的通道。一般說,各種型號的主機板對日時鐘中斷都是開放 的,用戶不必再采取措施。5 .避免“DOS重入” “DOS 重入”示意圖 : : :INT21H現(xiàn)行程序21H型服務(wù)程序:IRET有中斷請求 : :INT 21HDOS不允許重入6關(guān)于中斷服務(wù)程序的執(zhí)行時間 必須遠遠小于定時中斷的時間間隔 7. 中斷結(jié)束向8259A發(fā)中斷結(jié)束命令 定時中斷周期T1服務(wù)程序執(zhí)行時間IRX T2
46、T1T2二.定時中斷程序結(jié)構(gòu)之一主程序 關(guān)中斷*中斷源初始化 置換中斷向量 其他準(zhǔn)備工作 開中斷 等待中斷* 恢復(fù)系統(tǒng)資源 恢復(fù)中斷向量 返回DOS服務(wù)程序 保護現(xiàn)場 定時時間到? 執(zhí)行定時操作 向8259A送結(jié)束命令 恢復(fù)現(xiàn)場 IRETYN避免DOS 重入特點:服務(wù)程序直接進行定時操作* 表示視具體情況而定程序結(jié)束前主程序 關(guān)中斷 * 中斷源初始化 置換中斷向量 其他準(zhǔn)備工作 開中斷* 恢復(fù)系統(tǒng)資源 恢復(fù)中斷向量 返回DOS 保護現(xiàn)場 定時時間到? 設(shè)置“時間到”標(biāo)志 向8259A送結(jié)束命令 恢復(fù)現(xiàn)場 IRETYN“時間到”標(biāo)志可利用數(shù)據(jù)段某單元或某個空閑寄存器特點:服務(wù)程序不直接進行定時操
47、作,而是建立“時間到”標(biāo)志。由主程序判斷時間到標(biāo)志再進行定時操作。* 表示視具體情況而定 其它操作 有無“時間到”標(biāo)志? 執(zhí)行定時操作Y 程序是否需要結(jié)束?NY服務(wù)程序N之二三定時中斷程序舉例 1CH型中斷的應(yīng)用 要求使用系統(tǒng)定時源并采用中斷方式每隔一秒完成一次在屏幕上顯示一行HELLO,直到主機鍵盤按下任意鍵時停止。設(shè)計思路 主要解決四個問題: (1)字符串HELLO的顯示控制問題; (2)定時時間間隔1秒鐘如何實現(xiàn); (3)顯示過程如何結(jié)束 MOV AH,9MOV DX,OFFSET MESGINT21HSCAN:MOV AL,1 INT 16H JZ SCAN 結(jié)束準(zhǔn)備(4)定時程序結(jié)構(gòu):由主程序和1CH型中斷程序組成 主程序關(guān)中斷轉(zhuǎn)移系統(tǒng)的1CH型中斷向量寫入用戶的1CH型中斷向量開中斷有鍵入?N恢復(fù)系統(tǒng)的1CH型中斷向量返回DOSYSCAN:MOV AH,1 INT 16H JZ SCAN CALL RESETMOV AH,4CHINT 21H為中斷服務(wù)做準(zhǔn)備工作1CH型中斷服務(wù)程序 保護現(xiàn)場重新定義用戶數(shù)據(jù)段 中斷計數(shù)滿18次?18中斷計數(shù)單元顯示一行helloYN恢復(fù)現(xiàn)場中斷返回設(shè)計一個計數(shù)單元ICOUNT,初值18,每55ms減1,減到0則表示
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3633-2024 原液著色滌綸牽伸絲
- T-ZSM 0074-2024 餐飲業(yè)油煙排放在線監(jiān)測儀
- 二零二五年度旅游行業(yè)客服業(yè)務(wù)員雇傭服務(wù)協(xié)議
- 二零二五年度總經(jīng)理社會責(zé)任與公益慈善聘用協(xié)議
- 2025年度模特時尚活動贊助商權(quán)益合作協(xié)議
- 二零二五年度荒山承包轉(zhuǎn)讓及林業(yè)資源開發(fā)利用合同
- 二零二五年度學(xué)校事業(yè)單位校車司機勞動合同
- 二零二五年度私人土地買賣合同案:森林資源開發(fā)合作合同樣本
- 二零二五年度學(xué)生校園交通安全管理協(xié)議范本匯編
- 二零二五年度合作社職業(yè)經(jīng)理人鄉(xiāng)村振興聘用協(xié)議
- 中考復(fù)習(xí)物理力學(xué)部分綜合試題(人教版含答案)
- BCP業(yè)務(wù)連續(xù)性管理手冊
- 2024年湖南鐵路科技職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析word版
- 2024年中考英語第一次模擬試卷-(廣州卷)(全解全析)
- 三年級數(shù)學(xué)《搭配中的學(xué)問》 全國一等獎
- 使用農(nóng)產(chǎn)品承諾函
- 分式方程說課王彥娥
- 2023配電網(wǎng)施工典型工藝
- 少兒美術(shù)幼兒園課件- 4-6歲 《沙漠鴕鳥》
- ChatGPT人工智能與通用大模型演講稿
- 撤場通知書( 模板)
評論
0/150
提交評論