版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第 九 章中斷系統(tǒng)與 8259A 中斷控制器,,,9.1 中斷的基本概念,復(fù)習(xí)CPU與外設(shè)信息交換的控制方式種類以查詢方式輸入為例,當(dāng)外設(shè)數(shù)據(jù)未準(zhǔn)備好時(shí),CPU需要不斷查詢外設(shè)是否準(zhǔn)備好的狀態(tài),效率低,1.中斷方式示意 (以輸入中斷為例),⑨,中斷基本概念,2. 什么是中斷?,CPU暫停執(zhí)行現(xiàn)行程序,轉(zhuǎn)而處理隨機(jī)事件,處理完畢后再返回被中斷的程序,這一全過程稱為中斷。,3. 中斷源 能夠引發(fā)CPU中斷的信
2、息源,(1)外部中斷源(硬件中斷源) I/O設(shè)備 如鍵盤、顯示器、打印機(jī) 數(shù)據(jù)通道 如磁帶、磁盤 時(shí)鐘 如8254 0#,由此引發(fā)的中斷 故障源 如掉電、存貯器奇偶校驗(yàn)錯(cuò)(2)內(nèi)部中斷源(軟件中斷源) 執(zhí)行INT軟件中斷指令 如執(zhí)行指令I(lǐng)NT 21H CPU指令執(zhí)行產(chǎn)生的異常 如被0除、單步執(zhí)行,中斷基本概念,選通信號(hào),4. 具有中斷請(qǐng)求功能的輸入接口示意圖,輸
3、入設(shè)備,鎖存器(8),三態(tài)緩沖器(8),,,CPU 數(shù)據(jù)線,R D Q,,+5 V,,,,,,中斷請(qǐng)求觸發(fā)器,,,Q D,中斷允許觸發(fā)器,,,,,,,數(shù)據(jù)線D0位,,,,,地址譯碼器,,,,INTR,,,,,,,,地址總線,,IOW,,IOR,,控制口選中,,,數(shù)據(jù)口選中,,中斷基本概念,5. 中斷系統(tǒng) 為實(shí)現(xiàn)中斷而采取的硬件和軟件的確集合。,6.中斷系統(tǒng)應(yīng)具備的基本功能,對(duì)于硬件中斷,接口電路應(yīng)具備‘屏
4、蔽’和‘開放’的功能,這種功能由程序員通過軟件去控制。,能實(shí)現(xiàn)中斷判優(yōu)(中斷排隊(duì)),當(dāng)有多個(gè)中斷源提出請(qǐng)求時(shí),應(yīng)能優(yōu)先響應(yīng)高級(jí)別的中斷源。,中斷基本概念,能夠?qū)崿F(xiàn)中斷嵌套,即高級(jí)別的中斷源能夠中斷低級(jí)別的中斷服務(wù)程序。,響應(yīng)中斷后,能自動(dòng)轉(zhuǎn)入中斷處理,處理完畢能自動(dòng)返回?cái)帱c(diǎn)。,,設(shè)“B” 級(jí)別高于“A”,中斷基本概念,1. 開中斷指令 STI 功能:使F寄存器中I標(biāo)志置1,CPU處于開中斷狀態(tài)。,2. 關(guān)中斷指令 CL
5、I 功能:使F寄存器中I標(biāo)志置0,CPU處于關(guān)中斷狀態(tài)。,3. 軟件中斷指令 INT n n為中斷類型碼,n為0~255之間有定義的無符號(hào)整數(shù)。 功能:無條件轉(zhuǎn)向n型中斷服務(wù)子程序。,,9.2 80X86的中斷指令,INT n 指令的執(zhí)行過程—CPU響應(yīng)軟件中斷的過程,① F寄存器→棧(保存INT n 之前的F狀態(tài)) 使F中的T標(biāo)志置0——禁止單步操作
6、I標(biāo)志置0——CPU處于關(guān)中斷狀態(tài),② 斷口地址→棧先:斷口基地址(CS) →棧,后:斷口偏移地址(IP)→棧,③ CPU從4n ~ 4n+3單元取出n型服務(wù)程序入口地址→ IP:CS,從而轉(zhuǎn)入n型中斷服務(wù)程序。,80X86中斷指令,4. 中斷返回指令 IRET,功能:依次從棧頂彈出6個(gè)元素→ IP,CS,F 如果棧頂是INT n 的斷口地址,則執(zhí)行 IRET后,返回?cái)帱c(diǎn)
7、,否則不能。,執(zhí)行INT n 棧頂示意圖,執(zhí)行IRET 示意圖,sp →,,IRET 是中斷服務(wù)子程序的出口指令,80X86中斷指令,,9.3 中斷向量,什么是中斷向量? 中斷向量是實(shí)模式下,中斷服務(wù)子程序的 入口地址,它由2部分組成:? 服務(wù)程序所在代碼段的段基址 2 個(gè)字節(jié)? 服務(wù)程序入口的偏移地址 2 個(gè)字節(jié),2. 中斷向量表,每個(gè)中斷都指定了一個(gè)類型碼,也稱為中斷號(hào)。
8、每一種中斷對(duì)應(yīng)有一個(gè)中斷服務(wù)程序(Interrupt Service Program ——ISP ),中斷類型碼通過一個(gè)地址指針表與中斷服務(wù)程序的入口地址相聯(lián)系: 實(shí)模式下: 該表稱為中斷向量表;保護(hù)模式下:該表稱為中斷描述符表。,3. 中斷向量表的設(shè)置CPU規(guī)定:在實(shí)模式下,中斷向量表需設(shè)置在系統(tǒng)的RAM最低端的1K單元(00000H ~ 003FFH),中斷向量,4. 中斷向量表的表地址與中斷類型的關(guān)系,如:“2
9、1H”型中斷向量:存放在84H ~ 87H單元中問:9CH型中斷向量存放在何處?,解:∵ 9CH× 4=1001110000=270H ∴9CH型中斷向量存于 270H ~ 273H單元中,中斷向量,5. 中斷向量的引導(dǎo)作用,——CPU響應(yīng)軟件中斷的過程,中斷向量,6. 中斷向量表的初始化,?由BIOS設(shè)計(jì)的中斷服務(wù)程序(如INT 16H , INT 10H…)其中斷向量在加電時(shí)由BIOS負(fù)責(zé)寫入中斷向量
10、表。,?由DOS設(shè)計(jì)的中斷服務(wù)程序(如 INT 21H)其中斷向量是在啟動(dòng)DOS時(shí),由DOS負(fù)責(zé)寫入中斷向量表。,?用戶程序開發(fā)的中斷服務(wù)程序,由用戶程序?qū)懭肫渲袛嘞蛄俊?中斷向量,問題:用戶如何向中斷向量表中寫入中斷向量?,中斷向量,方法一、用戶自己編寫程序填寫中斷向量CLIPUSH DSMOVAX, 0000HMOVDS, AXMOVBX, 4*nMOVAX, OFFSET SERVICE
11、MOV[BX], AXMOVAX, SEG SERVICEMOV[BX+2], AXPOP DSSTI,中斷向量,方法二、DOS設(shè)計(jì)2個(gè)子程序,專門用于中斷向量的讀出、寫入,[ INT 21H 的35H子功能 ]功能:讀出n型中斷向量入口:AL=中斷類型碼出口:ES:BX=n型中斷向量,[ INT 21H 的25H子功能 ]功能:寫入n型中斷向量入口:DS=中斷服務(wù)程序所在代碼段的段基址
12、 DX=中斷服務(wù)程序入口的偏移地址 AL=中斷類型碼出口:無,中斷向量,例:把用戶程序中以“TIMER”命名的中斷服務(wù)子程序的入口地址 →4 ×1CH ~ 4 ×1CH+3單元,,中斷向量,9.4 系統(tǒng)中斷的分類,系統(tǒng)中斷的分類,1. CPU中斷,CPU中斷是指:CPU執(zhí)行某些操作而引發(fā)的中斷,這類中斷使用了0、1、3、4、6、7中斷號(hào)。,(1) 除法錯(cuò)中斷—— 0
13、型中斷,(2) 單步中斷—— 1型中斷,(3) 斷點(diǎn)中斷—— 3型中斷,(4) 溢出中斷—— 4型中斷,系統(tǒng)中斷的分類,2. 軟件中斷,執(zhí)行有定義的INT n指令而引發(fā)的中斷,稱為軟件中斷。,軟件中斷使用05H,10H~FFH中的若干個(gè)中斷號(hào)。又分為:,(1) BIOS中斷 BIOS中斷,占用了05H、10H~1FH中斷號(hào),用戶程序執(zhí)行相關(guān)的軟中斷指令可以調(diào)用相應(yīng)的中斷服務(wù)程序。,INT 05H 屏幕打印;INT 1
14、0H 屏幕顯示 I/O;INT 11H 設(shè)備配置檢測(cè);,系統(tǒng)中斷的分類,INT 12H 測(cè)試內(nèi)存容量;INT 13H 磁盤I/O;INT 14H 串行通信I/O;INT 15H BIOS擴(kuò)展功能;INT 16H 鍵盤I/O;INT 17H 打印機(jī)I/O;INT 18H 啟動(dòng)PC機(jī)ROM BASIC(AT機(jī))無;INT 19H 重新裝入引導(dǎo)程序;INT
15、 1AH 實(shí)時(shí)時(shí)鐘管理。,中斷號(hào)1DH,1EH,1FH,41H,46H也被BIOS占用了。但是,與這些中斷號(hào)對(duì)應(yīng)的并不是中斷服務(wù)程序。,系統(tǒng)中斷的分類,(2) DOS中斷 DOS中斷,又分為DOS專用中斷,DOS保留中斷,用戶可調(diào)用的DOS中斷以及保留給用戶開發(fā)的中斷。,DOS專用中斷,① 22H型中斷,② 23H型中斷,③ 24H型中斷,④ 28H~3FH型中斷,系統(tǒng)中斷的分類,用戶可調(diào)用的DOS中斷,① 20H型中斷
16、,② 21H型中斷,③ 25H型中斷,④ 26H型中斷,⑤ 27H型中斷,用戶可開發(fā)的DOS中斷,DOS保留的中斷,系統(tǒng)中斷的分類,外部硬件中斷是由CPU以外的中斷請(qǐng)求而引發(fā)的。如果有多個(gè)中斷請(qǐng)求,怎樣連接至CPU呢?,8259A,9.5 8259A中斷控制器,1. 8259A的內(nèi)部結(jié)構(gòu),讀/寫邏輯,級(jí)連/緩沖比較器,,,,,SP/EN,,,,,A0,,,,,,,控制邏輯,,,,,,,,,,,,中斷服務(wù)寄存器(ISR),,,
17、優(yōu)先權(quán)電路,中斷請(qǐng)求寄存器(IRR),,,,,,中斷屏蔽寄存器(IMR),,,,,內(nèi)部總線,CS,,,(1)中斷請(qǐng)求寄存器 ( IRR),寄存引腳IR0~I(xiàn)R7的中斷請(qǐng)求信號(hào),IRRi位置1,表明IRi引腳上有了中斷請(qǐng)求信號(hào),8259A內(nèi)部結(jié)構(gòu),2. 中斷屏蔽寄存器 (IMR),寄存程序員寫入的中斷屏蔽字,屏蔽字某位=1(IMRi位=1),則與該位對(duì)應(yīng)的中斷請(qǐng)求信號(hào)(IRRi位)就不能送到中斷優(yōu)先權(quán)電路。,讀/寫邏輯,級(jí)連/
18、緩沖比較器,,,,,SP/EN,,,,,A0,,,,,,,控制邏輯,,,,,,,,,,,,中斷服務(wù)寄存器(ISR),,,優(yōu)先權(quán)電路,中斷請(qǐng)求寄存器(IRR),,,,,,中斷屏蔽寄存器(IMR),,,,,內(nèi)部總線,CS,,,8259A內(nèi)部結(jié)構(gòu),如:MOV AL , 11111100B OUT 屏蔽寄存器口地址,AL
19、 ;屏蔽IRR7 ~I(xiàn)RR2的請(qǐng)求開放IRR1,IRR0…,如: IN AL,屏蔽寄存器口地址 AND AL,11110111B OUT 屏蔽寄存器口地址,AL ;開放IRR3的請(qǐng)求 ;對(duì)其它位的請(qǐng)求不改變屏蔽/開放的狀態(tài),8259A內(nèi)部結(jié)構(gòu),讀/寫邏輯,級(jí)連/緩沖比較器,,,,,SP/EN,,,,
20、,A0,,,,,,,控制邏輯,,,,,,,,,,,,中斷服務(wù)寄存器(ISR),,,優(yōu)先權(quán)電路,中斷請(qǐng)求寄存器(IRR),,,,,,中斷屏蔽寄存器(IMR),,,,,內(nèi)部總線,CS,,,3. 優(yōu)先權(quán)電路 (排隊(duì)電路),8259A內(nèi)部結(jié)構(gòu),②比較CPU正為之服務(wù)的中斷源和剛進(jìn)入優(yōu)先權(quán)電路的中斷源,哪一個(gè)級(jí)別更高。,通過判優(yōu)‘選中’其中級(jí)別最高的中斷源,然后通過控制電路,從INT端向CPU提中斷請(qǐng)求。,作用: ①比較同時(shí)送
21、達(dá)優(yōu)先權(quán)電路的中斷請(qǐng)求,哪一個(gè) 級(jí)別最高。,8259A內(nèi)部結(jié)構(gòu),讀/寫邏輯,級(jí)連/緩沖比較器,,,,,SP/EN,,,,,A0,,,,,,,控制邏輯,,,INT,,INTA,,,,,,,,,,,,,中斷服務(wù)寄存器(ISR),,,優(yōu)先權(quán)電路,中斷請(qǐng)求寄存器(IRR),,,,,,中斷屏蔽寄存器(IMR),,,,,內(nèi)部總線,CS,,,4. 中斷控制電路,8259A內(nèi)部結(jié)構(gòu),作用: ①寄存一組初始化命令字和操作命令字,通過譯
22、碼產(chǎn) 生內(nèi)部控制信號(hào)②當(dāng)判優(yōu)電路選中一個(gè)中斷源時(shí)向CPU提中斷請(qǐng)求 (INT),8259A內(nèi)部結(jié)構(gòu),讀/寫邏輯,級(jí)連/緩沖比較器,,,,,SP/EN,,,,,A0,,,,,,,控制邏輯,,,INT,,INTA,,,,,,,,,,,,,中斷服務(wù)寄存器(ISR),,,優(yōu)先權(quán)電路,中斷請(qǐng)求寄存器(IRR),,,,,,中斷屏蔽寄存器(IMR),,,,,內(nèi)部總線,CS,,,5. 中斷服務(wù)寄存器 (ISR),8259A內(nèi)部結(jié)構(gòu),
23、ISR: 8位寄存器,ISRi位與IRRi位一一對(duì)應(yīng),作用:記錄CPU正為之服務(wù)的是哪一個(gè)中斷源,怎樣記錄?,反之,如果ISR0位由1 →0,表明IR0的中斷服務(wù)程序執(zhí)行完了,所以ISR的每一位都是響應(yīng)中斷源的中斷服務(wù)標(biāo)志位。,8259A內(nèi)部結(jié)構(gòu),6. 數(shù)據(jù)總線緩沖器,作用:①完成與CPU數(shù)據(jù)線配接,②接收初始化命令字,操作命令字,③當(dāng)收到第二個(gè)中斷響應(yīng)脈沖時(shí),通過他們向CPU送出被選中的中斷源的中斷類型碼n,在這之后CPU從4n
24、+0~4n+3單元取出n型中斷向量, 從而轉(zhuǎn)入n型服務(wù)程序。,8259A內(nèi)部結(jié)構(gòu),7. 讀/寫控制模塊功能:接收片選信號(hào)CS 、端口選擇信號(hào)A0和讀寫控制信 號(hào)RD、WR。 一片8259A在系統(tǒng)中占用兩個(gè)口地址,用末位地址線A0選擇端口,其它地址線通過譯碼產(chǎn)生8259A的片選信號(hào)。,8. 級(jí)連/緩沖比較器,一位8259A可以管理8級(jí)中斷,二片8259A“級(jí)連”可管理15級(jí)中斷,級(jí)連/緩沖比較器是為完成多
25、片8259A級(jí)連設(shè)置的模塊。,8259A內(nèi)部結(jié)構(gòu),8259A的管腳,,,2. 8259A的中斷過程—CPU響應(yīng)硬件中斷的過程,①首先由中斷請(qǐng)求寄存器寄存加到引腳IR0~I(xiàn)R7上的中 斷請(qǐng)求。,②在中斷屏蔽寄存器的管理下,沒有被屏蔽的中斷請(qǐng)求被 送到優(yōu)先權(quán)電路判優(yōu)。,③ 經(jīng)過優(yōu)先權(quán)電路的判別,選中當(dāng)前級(jí)別最高的中斷源,然 后從引腳INT向CPU發(fā)出中斷請(qǐng)求信號(hào)。,④CPU滿足一定條件后,向8259A發(fā)出2個(gè)中斷響
26、應(yīng)信號(hào)(負(fù)脈沖)。,⑦ 在實(shí)模式下,CPU從4×n~4×n+3單元取出該中斷源 的中斷向量→IP、CS,從而引導(dǎo)CPU執(zhí)行該中斷源的 中斷服務(wù)程序。,3. 8259A的中斷管理方式,中斷觸發(fā)方式,邊沿觸發(fā)IRi出現(xiàn)上升沿表示有中斷請(qǐng)求 電平觸發(fā)IRi出現(xiàn)高電平表示有中斷請(qǐng)求,屏蔽中斷源的方式,常規(guī)屏蔽方式 MR屏蔽字決定了允許或禁止某位IRi所對(duì)應(yīng)的中斷:IMi=1 禁止,
27、IMi=0 允許。特殊屏蔽方式:提供了允許較低優(yōu)先級(jí)的中斷能夠得到響應(yīng)的特殊手段。原理:假定當(dāng)前正在處理IR6,先進(jìn)入特殊屏蔽方式,然后設(shè)置IM6=1。這時(shí),除IR6外的所有中斷請(qǐng)求均能得到響應(yīng)。特殊屏蔽方式中只能用SEOI命令結(jié)束中斷。,中斷優(yōu)先級(jí)管理方式 兩類優(yōu)先級(jí)控制方式:固定優(yōu)先級(jí)和循環(huán)優(yōu)先級(jí)固定優(yōu)先級(jí)方式所有中斷請(qǐng)求IRi的中斷優(yōu)先級(jí)固定不變加電后8259A的默認(rèn)方式,默認(rèn)優(yōu)先級(jí)順序從高到低為IR0~I(xiàn)R7,循
28、環(huán)優(yōu)先級(jí)方式 .中斷源輪流處于最高優(yōu)先級(jí),即自動(dòng)中斷優(yōu)先級(jí)循環(huán) .某中斷請(qǐng)求IRi被處理后,其優(yōu)先級(jí)別自動(dòng)降為最低,原來比它低一級(jí)的中斷上升為最高級(jí),中斷嵌套方式在中斷處理過程中允許被更高優(yōu)先級(jí)的事件所中斷稱為中斷嵌套。8259A有兩種中斷嵌套方式:普通全嵌套方式(默認(rèn)方式) 一中斷正被處理時(shí),只有更高優(yōu)先級(jí)的事件可以打斷當(dāng)前的中斷處理過程而被服務(wù)。特殊全嵌套方式 一中斷正被處理時(shí),允許同級(jí)或更高優(yōu)先級(jí)的事件可以打斷
29、當(dāng)前的中斷處理過程而被服務(wù)。,中斷結(jié)束處理方式,當(dāng)某一IRi中斷被服務(wù)時(shí),ISR中的相應(yīng)位ISRi=1。當(dāng)服務(wù)結(jié)束后,則必須清零該ISRi位。使ISRi=0是通過向8259A發(fā)出中斷結(jié)束命令(EOI命令)實(shí)現(xiàn)的。三種EOI命令自動(dòng)EOI(AEOI)——(自動(dòng)EOI方式)非指定EOI(NSEOI)——(正常EOI方式)指定EOI(SEOI)——(特殊EOI方式),AEOI:在第2個(gè)INTA#結(jié)束時(shí),由8259A使ISRi自動(dòng)復(fù)位;
30、因不保留當(dāng)前正在服務(wù)的中斷的狀態(tài),故AEOI不能用于中斷嵌套方式SEOI:由CPU發(fā)出一條SEOI命令,該EOI命令中指出了所要復(fù)位的ISR的位號(hào)。 用于特殊屏蔽方式NSEOI:由CPU發(fā)出正常EOI命令,該EOI命令使ISRi=1的位中優(yōu)先級(jí)最高的那一位復(fù)位。用于普通全嵌套方式,4. 8259A的編程,8259A的控制命令分為初始化命令字ICWICW1~I(xiàn)CW4向8259A寫入ICW的過程稱為初始化編程操作命令字O
31、CW OCW1~OCW3向8259A寫入OCW的過程稱為操作方式編程,初始化命令字ICW(Initialization Command Word)通常是系統(tǒng)開機(jī)時(shí),由 初始化程序填寫,且在整個(gè)系統(tǒng)工作過程中保持不變。初始化命令字必須按順 序填寫。,(1) ICW1,,[1] 初始化命令字,,,,,,,,,,,,1—需要ICW40—不需要ICW4,1—單片8259A0—級(jí)連,86系統(tǒng)不用(通常為0),1—電平觸
32、發(fā)方式0—邊沿觸發(fā)方式,86系統(tǒng)不用(通常為0),,,,,,,,,,,,A0 D7 D6 D5 D4 D3 D2 D1 D0,0,1 LTIM ADI SNGL ICW4,8259A的編程,1 T7 T6 T5 T4 T3 ?
33、 ? ?,,,,,,,,,A0 D7 D6 D5 D4 D3 D2 D1 D0,1,ICW2設(shè)置中斷類型碼,注: T7~T3 — 中斷向量類型碼高位, 由編程決定 低三位 — 自動(dòng)設(shè)置為 IR0 ~ IR7 的類型編碼(000 ~ 111),8259A
34、傳送的中斷類型碼,8259A的編程,1 S7 S6 S5 S4 S3 S2 S1 S0,1—IR輸入帶有一個(gè) 從控制器 0—IR輸入不帶一個(gè) 從控制器,,,,,,,,,,,,A0 D7 D6 D5 D4 D3 D2 D1
35、 D0,,,,,,,,,1,1 0 0 0 0 0 ID2 ID1 ID0,,,,,,,,,,,,,,從控制器ID,編碼000~111分別對(duì)應(yīng)該從片的INT往主片的IR0~I(xiàn)R7哪個(gè)端子輸入。,A0 D7 D6 D5 D4 D3 D2 D1 D0,1,(3)
36、 ICW3 (主控制器),ICW3 (從控制器),8259A的編程,,,,,,,,,,,,,,1—86 / 88模式0—80 / 85模式,1—自動(dòng)EOI0—非自動(dòng)EOI,0 X 非緩沖方式 1 0 緩沖方式/從控制器 1 1 緩沖方式/主控制器,1—特殊完全嵌套方式0—非特殊完全嵌套方式,,,,,,,A0 D7 D6 D5 D4
37、D3 D2 D1 D0,1,(4) ICW4,0 0 0 SFNM BUF M / S AEOI µPM,8259A的編程,8259A初始化編程流程圖,8259A的編程,由CPU向8259A送三個(gè)字節(jié)的操作命令字OCW(Operation Command Word), 用以規(guī)定8259A的工作方式,如: ? 中斷屏蔽
38、 ? 結(jié)束中斷 ? 優(yōu)線權(quán)旋轉(zhuǎn) ? 中斷狀態(tài) 等。 操作命令字是在應(yīng)用程序中設(shè)置的,設(shè)置時(shí),順序上沒有嚴(yán)格的要求。,[2] 操作命令字,8259A的編程,(1)OCW1,OCW1是中斷屏蔽命令字,命令格式如圖。命令字中的M7~M0對(duì)應(yīng)IMR的各位。Mi=1表示該中斷被屏蔽,Mi=0表示該中斷開放。,中斷結(jié)束命令字,命令格式如圖。 ? R、SL、E
39、OI的不同組合決定了8259A的幾種工作方式。 ? L2~L0 這幾位確定當(dāng)SL=1時(shí)指定的特殊結(jié)束或特殊循環(huán)時(shí)的中斷優(yōu)先級(jí)。最常用的常規(guī)EOI命令字為20H。,(2)OCW2,用于控制8259A的運(yùn)行方式。命令格式如圖。,(3)OCW3,8259A編程舉例,按以下要求初始化8259A:端口地址為20H和21H;中斷為上升沿觸發(fā);單片8259A;不寫ICW4;與IR0-IR3對(duì)應(yīng)的中斷向量碼為08H-0BH;IR4
40、-IR7不使用。根據(jù)要求,各初始化參數(shù)及工作參數(shù)如下:ICW1 = 00010010 = 12HICW2 = 08H 中斷向量碼 OCW1 = 11110000 = 0F0H 中斷屏蔽字,初始化程序如下:INIT8259A:MOVDX,20H;A0=0,寫ICW1MOVAL,12H;上升沿觸發(fā),單片,不寫ICW4OUTDX,ALMOVDX
41、,21H;A0=1,寫ICW2,OCW1MOVAL,08H;ICW2OUTDX,ALMOVAL,0F0H;OCW1:屏蔽IR4-IR7OUTDX,AL,5. 286以上微機(jī)的8259A中斷管理方式,系統(tǒng)加電后由BIOS對(duì)8259A初始化編程,設(shè)定中斷管理方式 :,,② 中斷屏蔽方式采用常規(guī)屏蔽方式即應(yīng)用時(shí),向8259A中斷屏蔽寄存器寫入適當(dāng)屏蔽字即可屏蔽/開放某一級(jí)中斷。,③ 中斷源為固定優(yōu)先級(jí)
42、即IR0中斷請(qǐng)求級(jí)別最高,IR7中斷請(qǐng)求級(jí)別最低。,④采用常規(guī)中斷結(jié)束方式 即在中斷服務(wù)子程序結(jié)束之前向8259送中斷結(jié)束命令。,,6.286以上的微機(jī),對(duì)8259A的編程,對(duì)8259A編程分二步進(jìn)行:,?對(duì)8259A進(jìn)行初始化編程 ——系統(tǒng)加電后,由BIOS完成?對(duì)8259A進(jìn)行應(yīng)用編程 ——編寫中斷程序時(shí)完成,有2項(xiàng)內(nèi)容:,②每一個(gè)硬件中斷服務(wù)程序結(jié)束前必須向8259A送中斷 命令字,通知825
43、9A本次中斷結(jié)束,否則8259A不能響 應(yīng)同一中斷源的下次中斷。,①需要時(shí),向8259A中斷屏蔽寄存器寫入屏蔽字。,8259A收到中斷結(jié)束命令后,把ISR中的置1位清0??!,1. 概述,硬件中斷分類:可屏蔽中斷,非屏蔽中斷 CPU有2個(gè)接收中斷請(qǐng)求信號(hào)的引腳。,可屏蔽中斷: 輸入到INTR引腳的中斷請(qǐng)求信號(hào), 引發(fā)的中斷。,非屏蔽中斷: 輸入到NMI引腳的中斷請(qǐng)求信號(hào), 引
44、發(fā)的中斷。,9.6 PC/AT 可屏蔽中斷,①有可屏蔽中斷請(qǐng)求,沒有DMA請(qǐng)求,沒有非屏蔽中 斷請(qǐng)求,響應(yīng)非屏蔽中斷的條件 ①有非屏蔽中斷請(qǐng)求,沒有DMA請(qǐng)求 ②一條指令執(zhí)行完,響應(yīng)可屏蔽中斷的條件,②CPU一條指令執(zhí)行完畢,硬件中斷的級(jí)別 DMA請(qǐng)求級(jí)別高于非屏蔽中斷高于可屏蔽中斷。,③CPU處于開中斷狀態(tài)(I標(biāo)=1),2. 可屏蔽中斷的硬件結(jié)構(gòu),可屏蔽中斷硬件結(jié)構(gòu)(1),可屏蔽中斷硬件結(jié)構(gòu)(2),使用2
45、片8259級(jí)連,管理15級(jí)中斷,中斷源與中斷類型,硬件可屏蔽中斷的中斷級(jí)別,,,,,系統(tǒng)分配的8259口地址,中斷結(jié)束命令,① 命令字=20H,③接入從8259的中斷源,其服務(wù)程序結(jié)束應(yīng)分別向 主、從8259各送一個(gè)中斷結(jié)束命令字 。,① 中斷的引發(fā)方式不同,② CPU獲取中斷類型碼的方式不同,③ CPU響應(yīng)的條件不同,中斷處理程序的結(jié)束方式不同,3.硬件中斷和軟件中斷的區(qū)別,4. 硬件可屏蔽中斷例,※ 中斷源:
46、 系統(tǒng)8254 0#計(jì)數(shù)器,每55ms有一次中斷請(qǐng)求,※ 中斷類型: 8型,(1)日時(shí)鐘中斷,CPU轉(zhuǎn)入8型中斷后,完成下列工作 ① 開中斷,保護(hù)現(xiàn)場(chǎng)(DS…壓棧) ② 40H →DS,對(duì)“日時(shí)鐘計(jì)數(shù)器”加1 ③ 測(cè)算軟驅(qū)馬達(dá)關(guān)閉時(shí)間,⑤ 向主8259送中斷結(jié)束命令⑥恢復(fù)現(xiàn)場(chǎng),IRET,④ 執(zhí)行INT 1CH,※ 日時(shí)鐘中斷處理流程:,※ 什么是“日時(shí)鐘計(jì)數(shù)器”,
47、BIOS系統(tǒng)規(guī)定:40H:6CH~40H:6FH這4個(gè)單元(共32位)為日時(shí)鐘計(jì)數(shù)器,每55ms加1次,計(jì)數(shù) 到:001800B0H,為24小時(shí),其計(jì)數(shù)值供系統(tǒng)軟件使用。,系統(tǒng)啟動(dòng)時(shí)CPU執(zhí)行BIOS中的一段程序,讀取CMOS實(shí)時(shí)時(shí)鐘電路的時(shí)間值→計(jì)數(shù)值→40:6CH~40:6FH做為日時(shí)鐘計(jì)數(shù)器的計(jì)數(shù)初值。,,※關(guān)于1CH服務(wù)程序 8#服務(wù)程序,每隔55ms在DS=40H的前提下,調(diào)用一次1CH服務(wù)程序,之后又返回8型
48、??!,所以1CH中斷是日時(shí)鐘的外擴(kuò)中斷,用戶可開發(fā)新的1CH中斷(完成每55ms一次的定時(shí)操作)取代原來的中斷服務(wù)子程序。,(2)用戶中斷,※ 中斷源: 系統(tǒng)總線插槽B4端引入的用戶設(shè)計(jì)的硬件中斷請(qǐng)求信號(hào),※用戶中斷請(qǐng)求的途徑,用戶中斷請(qǐng)求,用戶中斷請(qǐng)求從ISA總線B4端子(IRQ9)引入,經(jīng)過主8259,從8259二級(jí)中斷管理,最后由主8259向CPU提中斷。,只有從8259IMR1置0,主8259IMR2置0,其中斷請(qǐng)求
49、方能送到CPU。,實(shí)現(xiàn)用戶中斷必須對(duì)主、從8259應(yīng)用編程,保證中斷申請(qǐng)由8259中斷控制器提向CPU,IN AL,0A1HAND AL,11111101BOUT 0A1H,AL ;開放用戶中斷IN AL,21HAND AL,11111011BOUT 21H,AL ;開放從8259中斷,BIOS為
50、“71H型”設(shè)計(jì)的服務(wù)程序如下: PUSHAXMOVAL,20HOUT 0A0H,ALPOPAXINT0AH,※用戶中斷的中斷類型 CPU響應(yīng)用戶中斷后,自動(dòng)轉(zhuǎn)向“71H型”服務(wù)程序,用戶中斷服務(wù)程序結(jié)束 ① 若用戶中斷定義為0AH型, 服務(wù)程序結(jié)束前只向主8259送結(jié)束命令,② 若用戶中斷定義為71H 服務(wù)程序結(jié)束前,向主從8259各送一中斷結(jié)束
51、命令,用戶定義的中斷服務(wù)程序有兩個(gè)設(shè)計(jì)方法:,① 定義用戶中斷服務(wù)程序?yàn)椤?1H型” 中斷程序的準(zhǔn)備工作:置換71H型中斷向量,即把用戶 中斷的中斷向量→4×71H ~ 4×71 H+3單元,② 定義用戶中斷服務(wù)程序?yàn)椤?AH型” 中斷程序的準(zhǔn)備工作:置換0AH型中斷向量,即把 用戶中斷的中斷向量→4×0AH ~ 4×0AH+3單元,(3) 鍵盤中斷,※中斷源 : 主板鍵
52、盤接口電路※中斷類型: 9※ 鍵盤中斷全過程:,鍵盤接口分2部分: 一部分裝在鍵盤盒內(nèi)——鍵盤電路 另一部分裝在主機(jī)板——鍵盤接口電路,2 部分之間通過5芯電 源連接。,鍵盤電路以單片機(jī)為核心,加電后固化在單片機(jī) 內(nèi)部的鍵盤掃描程序,不斷掃描每一個(gè)按健,一旦有鍵閉合,就把閉合鍵的掃描碼(位置碼)→ 鍵盤接口電路。,鍵盤接口電路:,① 把串行掃描碼通過移
53、位寄存器轉(zhuǎn)換成并行掃描碼→口地址為60H的端口寄存器,②串并轉(zhuǎn)換完畢,向主8259接中斷請(qǐng)求,③ CPU響應(yīng)后,轉(zhuǎn)9型服務(wù)程序,※ 鍵盤中斷處理流程,?開中斷,保護(hù)現(xiàn)場(chǎng)(DS…壓棧),?40H →DS,?從60H口地址寄存器取并行掃描碼分析,處理轉(zhuǎn) 換成2字節(jié)鍵代碼存入鍵盤緩沖區(qū),?向8259發(fā)中斷結(jié)束命令,?恢復(fù)現(xiàn)場(chǎng) IRET,※鍵盤緩沖區(qū),BIOS規(guī)定:系統(tǒng)RAM 40:1EH ~ 40:3DH為鍵盤緩沖區(qū)共32個(gè)單元,實(shí)際使用
54、30個(gè)單元,存放15個(gè)鍵的鍵代碼。鍵盤緩沖區(qū)是以“先進(jìn)先出”的規(guī)則存取。,由9型服務(wù)程序?qū)懭腈I代碼,用戶用INT 16H訪問鍵盤緩沖區(qū),∴鍵盤緩沖區(qū)是9型硬中斷和INT 16H軟中斷之間交換信息的緩沖區(qū) 。,,9.7 實(shí)模式下的定時(shí)中斷程序設(shè)計(jì),應(yīng)用背景 在許多應(yīng)用中,需要每隔一定時(shí)間完成一次預(yù)定的操作——定時(shí)操作。如定時(shí)數(shù)據(jù)采集、定時(shí)顯示、定時(shí)鍵盤掃描等,而采用定時(shí)中斷技術(shù)實(shí)現(xiàn)這種操作具有實(shí)時(shí)性好、占用CPU資源較少
55、的特點(diǎn)。,一、定時(shí)中斷程序的設(shè)計(jì)方法 1.定時(shí)中斷源的選擇 ① 系統(tǒng)8254 0#計(jì)數(shù)器,② 外擴(kuò)8254作為定時(shí)中斷源,2.確定中斷服務(wù)程序的類型 中斷類型由定時(shí)中斷源接入8259A的中斷引腳IRx有關(guān)。① 如果中斷源是外擴(kuò)定時(shí)器,由從8259A的IR1引腳引入,則服務(wù)程序應(yīng)定義為0AH或71H型。②如果中斷源是系統(tǒng)8254的0#計(jì)數(shù)器,并且定時(shí)周期是55ms的整數(shù)倍,則定義用戶服務(wù)程序?yàn)?CH型,取代系統(tǒng)的1CH型
56、服務(wù)程序。③如果中斷源是系統(tǒng)8254的0#計(jì)數(shù)器,但定時(shí)周期≠55ms的整數(shù)倍,則應(yīng)重新對(duì)8254 0#計(jì)數(shù)器進(jìn)行初始化……。,定時(shí)周期不等于55ms整數(shù)倍的處理框圖,3.置換中斷向量 服務(wù)程序的類型確定之后,應(yīng)置換相應(yīng)的中斷向量(使用INT21H的25H和35H子功能)。4.開放8259A中斷,從系統(tǒng)硬件中斷的結(jié)構(gòu)圖可知:①用戶中斷要經(jīng)過從8259A、主8259A兩級(jí)中斷控制器的管理,為了使用戶中斷請(qǐng)求送到CPU,應(yīng)將從8
57、259A的IMR的D1位置0,主8259A的IMR的D2位置0,從而打通用戶中斷請(qǐng)求的通道。,②一般說,各種型號(hào)的主機(jī)板對(duì)日時(shí)鐘中斷都是開放 的,用戶不必再采取措施。,5 .避免“DOS重入”,“DOS 重入”示意圖,: : :INT21H,,現(xiàn)行程序,,,21H型服務(wù)程序::IRET,有中斷請(qǐng)求,,,: :INT 21H,,,,,DOS不允許重入,,,6.中斷服務(wù)程序的執(zhí)行時(shí)間 必須遠(yuǎn)遠(yuǎn)小于定
58、時(shí)中斷的時(shí)間間隔,7. 中斷結(jié)束向8259A發(fā)中斷結(jié)束命令,,,,,,,,,,,,,,,,,,,定時(shí)中斷周期T1,,,,服務(wù)程序執(zhí)行時(shí)間,IRX,T2<< T1,T2,,,二.定時(shí)中斷程序結(jié)構(gòu),之一,主程序,關(guān)中斷*中斷源初始化 置換中斷向量 其他準(zhǔn)備工作 開中斷,等待中斷,,* 恢復(fù)系統(tǒng)資源 恢復(fù)中斷向量 返回DOS,服務(wù)程序,保護(hù)現(xiàn)場(chǎng),,定時(shí)時(shí)間到?,執(zhí)行定時(shí)操作,向8259A送
59、結(jié)束命令 恢復(fù)現(xiàn)場(chǎng) IRET,,,,,,Y,N,避免DOS 重入,特點(diǎn):服務(wù)程序直接進(jìn)行定時(shí)操作,* 表示視具體情況而定,程序結(jié)束前,之二,主程序,關(guān)中斷 * 中斷源初始化 置換中斷向量 其他準(zhǔn)備工作 開中斷,* 恢復(fù)系統(tǒng)資源 恢復(fù)中斷向量 返回DOS,保護(hù)現(xiàn)場(chǎng),,定時(shí)時(shí)間到?,設(shè)置“時(shí)間到”標(biāo)志,向8259A送結(jié)束命令
60、 恢復(fù)現(xiàn)場(chǎng) IRET,,,,,,Y,N,“時(shí)間到”標(biāo)志可利用數(shù)據(jù)段某單元或某個(gè)空閑寄存器,特點(diǎn):服務(wù)程序不直接進(jìn)行定時(shí)操作,而是建立“時(shí)間到”標(biāo)志。由主程序判斷時(shí)間到標(biāo)志再進(jìn)行定時(shí)操作。,* 表示視具體情況而定,其它操作,,有無“時(shí)間到”標(biāo)志?,執(zhí)行定時(shí)操作,,Y,程序是否需要結(jié)束?,,,N,Y,服務(wù)程序,,N,三.定時(shí)中斷程序舉例,【例9.8.1】1CH型中斷的應(yīng)用 假設(shè)微機(jī)系統(tǒng)外擴(kuò)了共陰級(jí)數(shù)碼
61、管電路(見下頁),要求使用系統(tǒng)定時(shí)源并采用中斷方式每隔一秒完成一次8字左移,循環(huán)往復(fù),直到主機(jī)鍵盤按下任意鍵時(shí)停止。,,,,,,,,,,,,,,,a,b,c,d,e,f,g,h,共陰級(jí)數(shù)碼管結(jié)構(gòu),,h,,,,,,,,,,,,,,,a,b,c,d,e,f,g,h,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8位鎖存器(位選),,,,,,,,,,(200H
62、選中),,,,,,,,,,,,,,,,,,,,,,,,D0,D1,D2,D3,D4,D5,,,D6,D7,,,D0-D7,8位鎖存器(段選),,,(201H選中),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,D0,D7,D6,D5,D4,D3,D2,D1,a,b,c,d,e,f,g
63、,h,CS,,CS,,(反相輸出),COM,COM,COM,COM,COM,COM,數(shù)碼管顯示原理 使用段選碼和位選碼進(jìn)行控制。段選碼:顯示什么字符。6個(gè)數(shù)碼管的同名段共享連接,即D0->a;D1->b…;D6->g;D7->h 。顯示字符“8”的段選碼是7FH。 位選碼:選擇被點(diǎn)亮的LED(僅D5-D0有效)。點(diǎn)亮右邊第1個(gè)LED,位選碼為00100000B點(diǎn)亮右邊第2個(gè)LED,位選碼為0001
64、0000B::點(diǎn)亮左邊第1個(gè)LED,位選碼為00000001B,,[設(shè)計(jì)思路] 主要解決四個(gè)問題: (1)字符“8”的顯示控制問題,包括段選碼和位選碼; (2)定時(shí)時(shí)間間隔1秒鐘如何實(shí)現(xiàn); (3)每隔一秒鐘“8”如何左移一位顯示; (4)顯示過程如何結(jié)束,MOV DX,201HMOV AL,7FH ;“8”段碼OUT DX, ALMOV DX,200HMOV AL,Origin ;位碼
65、OUT DX, AL,SHR Origin,1:,SCAN:MOV AL,1 INT 16H JZ SCAN 結(jié)束準(zhǔn)備,定時(shí)程序由主程序和1CH型中斷程序組成,主程序,圖9-18 【例9.8.1】程序框圖,關(guān)中斷轉(zhuǎn)移系統(tǒng)的1CH型中斷向量寫入用戶的1CH型中斷向量第6位數(shù)碼管顯示“8”字符開中斷,,有鍵入?,,,,N,,恢復(fù)系統(tǒng)的1CH型中斷向量返回DOS,
66、Y,SCAN:MOV AH,1 INT 16H JZ SCAN,CALL RESETMOV AH,4CHINT 21H,1CH型中斷服務(wù)程序,保護(hù)現(xiàn)場(chǎng)重新定義用戶數(shù)據(jù)段 中斷計(jì)數(shù),,滿18次?,,18→中斷計(jì)數(shù)單元”8”字左移一位,Y,N,恢復(fù)現(xiàn)場(chǎng)中斷返回,,,,,,【程序清單】 ;FILENAME:891.ASM .486DATA SEGM
67、ENT USE16 ;數(shù)據(jù)段定義 OLD1C DD ? ICOUNT DB 18 ;中斷計(jì)數(shù)初值 ORIGIN DB 20H ;數(shù)碼管位選初值DATA ENDSCODE SEGMENT USE16 ;代碼段 ASSUME CS:CODE,DS:DATASTART: MOV AX, DATA
68、 ;DS段賦值 MOV DS, AX CLI ;關(guān)中斷 CALL READ1C CALL WRITE1C MOV DX,201H MOV AL,7FH OUT DX, A
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 使用8259a的單級(jí)中斷控制實(shí)驗(yàn)
- 微機(jī)接口8259中斷控制實(shí)驗(yàn)
- 基于Verilog的8051微控制器中斷系統(tǒng)的設(shè)計(jì).pdf
- 中斷控制的流水節(jié)日彩燈控制器課程設(shè)計(jì)
- 實(shí)驗(yàn)五 基本io擴(kuò)展與8259中斷實(shí)驗(yàn)
- 安全車用微控制器地址部件與中斷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 雙核芯片中斷控制器的研究和開發(fā).pdf
- 基于arm9的中斷控制器的程序設(shè)計(jì)與實(shí)現(xiàn)
- 實(shí)時(shí)低功耗的ARM中斷控制器IP的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 高可靠微處理器定時(shí)器及中斷控制器研究.pdf
- 基于ARMv8架構(gòu)的中斷控制器設(shè)計(jì).pdf
- 定時(shí)器中斷
- 定時(shí)器中斷原理
- niosii中斷簡述及中斷調(diào)試技巧
- 第13章中斷系統(tǒng)
- 實(shí)驗(yàn)六 中斷系統(tǒng)實(shí)驗(yàn)
- 基于SVA功能驗(yàn)證方法的中斷延遲控制器和GPIO的驗(yàn)證研究.pdf
- 硬件中斷
- 可中斷負(fù)荷監(jiān)測(cè)與控制系統(tǒng)的設(shè)計(jì).pdf
- 單片機(jī)的中斷系統(tǒng)
評(píng)論
0/150
提交評(píng)論