微機原理第9章.ppt_第1頁
微機原理第9章.ppt_第2頁
微機原理第9章.ppt_第3頁
微機原理第9章.ppt_第4頁
微機原理第9章.ppt_第5頁
已閱讀5頁,還剩109頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第 九 章 中斷系統(tǒng)與 8259A 中斷控制器,.1 中斷的基本概念,復習CPU與外設信息交換的控制方式種類 以查詢方式輸入為例,當外設數(shù)據(jù)未準備好時, CPU需要不斷查詢外設是否準備好的狀態(tài),效率低,1.中斷方式示意 (以輸入中斷為例),中斷基本概念,2. 什么是中斷?,CPU暫停執(zhí)行現(xiàn)行程序,轉而處理隨機事件,處理完畢后再返回被中斷的程序,這一全過程稱為中斷。,3. 中斷源 能夠引發(fā)CPU中斷的信息源,(1)外部中斷源(硬件中斷源) I/O設備 如鍵盤、顯示器、打印機 數(shù)據(jù)通道 如磁帶、磁盤 時鐘 如8254 0#,由此引發(fā)的中斷 故障源 如掉電、存貯器奇偶校驗錯 (2)內(nèi)部中斷源(軟件中斷源) 執(zhí)行INT軟件中斷指令 如執(zhí)行指令INT 21H CPU指令執(zhí)行產(chǎn)生的異常 如被0除、單步執(zhí)行,中斷基本概念,選通信號,4. 具有中斷請求功能的輸入接口示意圖,輸 入 設 備,鎖 存 器 (8),三態(tài) 緩沖 器 (8),CPU 數(shù)據(jù)線,R D Q,+5 V,中斷請求 觸發(fā)器,Q D,中斷允許觸發(fā)器,數(shù)據(jù)線D0位,地址譯碼器,INTR,地址總線,IOW,IOR,控制口選中,數(shù)據(jù)口選中,中斷基本概念,5. 中斷系統(tǒng) 為實現(xiàn)中斷而采取的硬件和軟件的確集合。,6.中斷系統(tǒng)應具備的基本功能,對于硬件中斷,接口電路應具備屏蔽和開放的功能,這種功能由程序員通過軟件去控制。,能實現(xiàn)中斷判優(yōu)(中斷排隊),當有多個中斷源提出請求時,應能優(yōu)先響應高級別的中斷源。,中斷基本概念,能夠實現(xiàn)中斷嵌套,即高級別的中斷源能夠中斷低級別的中斷服務程序。,響應中斷后,能自動轉入中斷處理,處理完畢能自動返回斷點。,設“B” 級別高于“A”,中斷基本概念,1. 開中斷指令 STI 功能:使F寄存器中I標志置1,CPU處于開中斷狀態(tài)。,2. 關中斷指令 CLI 功能:使F寄存器中I標志置0,CPU處于關中斷狀態(tài)。,3. 軟件中斷指令 INT n n為中斷類型碼,n為0255之間有定義的無符號整數(shù)。 功能:無條件轉向n型中斷服務子程序。,.2 80X86的中斷指令,INT n 指令的執(zhí)行過程CPU響應軟件中斷的過程, F寄存器棧(保存INT n 之前的F狀態(tài)) 使F中的T標志置0禁止單步操作 I標志置0CPU處于關中斷狀態(tài), 斷口地址棧 先:斷口基地址(CS) 棧,后:斷口偏移地址(IP)棧, CPU從4n 4n+3單元取出n型服務程序入口地址 IP:CS,從而轉入n型中斷服務程序。,80X86中斷指令,4. 中斷返回指令 IRET,功能:依次從棧頂彈出6個元素 IP,CS,F 如果棧頂是INT n 的斷口地址,則執(zhí)行 IRET后,返回斷點,否則不能。,執(zhí)行INT n 棧頂示意圖,執(zhí)行IRET 示意圖,sp ,IRET 是中斷服務子程序的出口指令,80X86中斷指令,.3 中斷向量,什么是中斷向量? 中斷向量是實模式下,中斷服務子程序的 入口地址,它由2部分組成: 服務程序所在代碼段的段基址 2 個字節(jié) 服務程序入口的偏移地址 2 個字節(jié),2. 中斷向量表,每個中斷都指定了一個類型碼,也稱為中斷號。 每一種中斷對應有一個中斷服務程序(Interrupt Service Program ISP ),中斷類型碼通過一個地址指針表與中斷服務程序的入口地址相聯(lián)系: 實模式下: 該表稱為中斷向量表; 保護模式下:該表稱為中斷描述符表。,3. 中斷向量表的設置 CPU規(guī)定:在實模式下,中斷向量表需設置在系統(tǒng)的RAM最低端的1K單元 (00000H 003FFH),中斷向量,4. 中斷向量表的表地址與中斷類型的關系,如:“21H”型中斷向量:存放在84H 87H單元中 問:9CH型中斷向量存放在何處?,解: 9CH 4=1001110000=270H 9CH型中斷向量存于 270H 273H單元中,中斷向量,5. 中斷向量的引導作用,CPU響應軟件中斷的過程,中斷向量,6. 中斷向量表的初始化,由BIOS設計的中斷服務程序(如INT 16H , INT 10H) 其中斷向量在加電時由BIOS負責寫入中斷向量表。,由DOS設計的中斷服務程序(如 INT 21H)其中斷向量是在啟動DOS時,由DOS負責寫入中斷向量表。,用戶程序開發(fā)的中斷服務程序,由用戶程序寫入其中斷向量。,中斷向量,問題:用戶如何向中斷向量表中寫入中斷向量?,中斷向量,方法一、用戶自己編寫程序填寫中斷向量 CLI PUSH DS MOV AX, 0000H MOV DS, AX MOV BX, 4*n MOV AX, OFFSET SERVICE MOV BX, AX MOV AX, SEG SERVICE MOV BX+2, AX POP DS STI,中斷向量,方法二、 DOS設計2個子程序,專門用于中斷向量的讀出、寫入, INT 21H 的35H子功能 功能:讀出n型中斷向量 入口:AL=中斷類型碼 出口:ES:BX=n型中斷向量, INT 21H 的25H子功能 功能:寫入n型中斷向量 入口:DS=中斷服務程序所在代碼段的段基址 DX=中斷服務程序入口的偏移地址 AL=中斷類型碼 出口:無,中斷向量,例:把用戶程序中以“TIMER”命名的中斷服務子程序 的入口地址 4 1CH 4 1CH+3單元,中斷向量,.4 系統(tǒng)中斷的分類,系統(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í) 行相關的軟中斷指令可以調用相應的中斷服務程序。,INT 05H 屏幕打印; INT 10H 屏幕顯示 I/O; INT 11H 設備配置檢測;,系統(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 重新裝入引導程序; INT 1AH 實時時鐘管理。,中斷號1DH,1EH,1FH,41H,46H也被BIOS占用了。但是,與這些中斷號對應的并不是中斷服務程序。,系統(tǒng)中斷的分類,(2) DOS中斷 DOS中斷,又分為DOS專用中斷,DOS保留中斷,用戶可調用的 DOS中斷以及保留給用戶開發(fā)的中斷。,DOS專用中斷, 22H型中斷, 23H型中斷, 24H型中斷, 28H3FH型中斷,系統(tǒng)中斷的分類,用戶可調用的DOS中斷, 20H型中斷, 21H型中斷, 25H型中斷, 26H型中斷, 27H型中斷,用戶可開發(fā)的DOS中斷,DOS保留的中斷,系統(tǒng)中斷的分類,外部硬件中斷是由CPU以外的中斷請求而引發(fā)的。如果有多個中斷請求,怎樣連接至CPU呢?,8259A,.5 8259A中斷控制器,1. 8259A的內(nèi)部結構,讀/寫 邏輯,級連/緩沖 比較器,SP/EN,A0,控制邏輯,中斷 服務 寄存器 (ISR),優(yōu)先權 電路,中斷 請求 寄存器 (IRR),中斷屏蔽寄存器(IMR),內(nèi)部總線,CS,(1)中斷請求寄存器 ( IRR),寄存引腳IR0IR7的中斷請求信號,IRRi位置1,表明IRi引腳上有了中斷請求信號,8259A內(nèi)部結構,2. 中斷屏蔽寄存器 (IMR),寄存程序員寫入的中斷屏蔽字,屏蔽字某位=1(IMRi位=1),則與該位對應的中斷請求信號(IRRi位)就不能送到中斷優(yōu)先權電路。,讀/寫 邏輯,級連/緩沖 比較器,SP/EN,A0,控制邏輯,中斷 服務 寄存器 (ISR),優(yōu)先權 電路,中斷 請求 寄存器 (IRR),中斷屏蔽寄存器(IMR),內(nèi)部總線,CS,8259A內(nèi)部結構,如: MOV AL , 11111100B OUT 屏蔽寄存器口地址,AL ;屏蔽IRR7 IRR2的請求開放IRR1,IRR0,如: IN AL,屏蔽寄存器口地址 AND AL,11110111B OUT 屏蔽寄存器口地址,AL ;開放IRR3的請求 ;對其它位的請求不改變屏蔽/開放的狀態(tài),8259A內(nèi)部結構,讀/寫 邏輯,級連/緩沖 比較器,SP/EN,A0,控制邏輯,中斷 服務 寄存器 (ISR),優(yōu)先權 電路,中斷 請求 寄存器 (IRR),中斷屏蔽寄存器(IMR),內(nèi)部總線,CS,3. 優(yōu)先權電路 (排隊電路),8259A內(nèi)部結構,比較CPU正為之服務的中斷源和剛進入優(yōu)先權電路的中斷源,哪一個級別更高。,通過判優(yōu)選中其中級別最高的中斷源,然后通過控制電路,從INT端向CPU提中斷請求。,作用: 比較同時送達優(yōu)先權電路的中斷請求,哪一個 級別最高。,8259A內(nèi)部結構,讀/寫 邏輯,級連/緩沖 比較器,SP/EN,A0,控制邏輯,INT,INTA,中斷 服務 寄存器 (ISR),優(yōu)先權 電路,中斷 請求 寄存器 (IRR),中斷屏蔽寄存器(IMR),內(nèi)部總線,CS,4. 中斷控制電路,8259A內(nèi)部結構,作用: 寄存一組初始化命令字和操作命令字,通過譯碼產(chǎn) 生內(nèi)部控制信號 當判優(yōu)電路選中一個中斷源時向CPU提中斷請求 (INT),8259A內(nèi)部結構,讀/寫 邏輯,級連/緩沖 比較器,SP/EN,A0,控制邏輯,INT,INTA,中斷 服務 寄存器 (ISR),優(yōu)先權 電路,中斷 請求 寄存器 (IRR),中斷屏蔽寄存器(IMR),內(nèi)部總線,CS,5. 中斷服務寄存器 (ISR),8259A內(nèi)部結構,ISR: 8位寄存器,ISRi位與IRRi位一一對應,作用: 記錄CPU正為之服務的是哪一個中斷源,怎樣記錄?,反之,如果ISR0位由1 0,表明IR0的中斷服務程序執(zhí)行完了,所以ISR的每一位都是響應中斷源的中斷服務標志位。,8259A內(nèi)部結構,6. 數(shù)據(jù)總線緩沖器,作用:完成與CPU數(shù)據(jù)線配接,接收初始化命令字,操作命令字,當收到第二個中斷響應脈沖時,通過他們 向CPU送出被選中的中斷源的中斷類型碼n,在這之后CPU從4n+04n+3單元取出n型中斷向量, 從而轉入n型服務程序。,8259A內(nèi)部結構,7. 讀/寫控制模塊 功能:接收片選信號CS 、端口選擇信號A0和讀寫控制信 號RD、WR。 一片8259A在系統(tǒng)中占用兩個口地址,用末位地址線A0選擇端口,其它地址線通過譯碼產(chǎn)生8259A的片選信號。,8. 級連/緩沖比較器,一位8259A可以管理8級中斷,二片8259A“級連”可管理15級中斷,級連/緩沖比較器是為完成多片8259A級連設置的模塊。,8259A內(nèi)部結構,8259A的管腳,2. 8259A的中斷過程CPU響應硬件中斷的過程,首先由中斷請求寄存器寄存加到引腳IR0IR7上的中 斷請求。,在中斷屏蔽寄存器的管理下,沒有被屏蔽的中斷請求被 送到優(yōu)先權電路判優(yōu)。, 經(jīng)過優(yōu)先權電路的判別,選中當前級別最高的中斷源,然 后從引腳INT向CPU發(fā)出中斷請求信號。,CPU滿足一定條件后,向8259A發(fā)出2個中斷響應信號(負脈沖)。, 在實模式下,CPU從4n4n3單元取出該中斷源 的中斷向量IP、CS,從而引導CPU執(zhí)行該中斷源的 中斷服務程序。,3. 8259A的中斷管理方式,中斷觸發(fā)方式,邊沿觸發(fā) IRi出現(xiàn)上升沿表示有中斷請求 電平觸發(fā) IRi出現(xiàn)高電平表示有中斷請求,屏蔽中斷源的方式,常規(guī)屏蔽方式 MR屏蔽字決定了允許或禁止某位IRi所對應的中斷:IMi=1 禁止, IMi=0 允許。 特殊屏蔽方式: 提供了允許較低優(yōu)先級的中斷能夠得到響應的特殊手段。 原理:假定當前正在處理IR6,先進入特殊屏蔽方式,然后設置IM6=1。這時,除IR6外的所有中斷請求均能得到響應。 特殊屏蔽方式中只能用SEOI命令結束中斷。,中斷優(yōu)先級管理方式 兩類優(yōu)先級控制方式:固定優(yōu)先級和循環(huán)優(yōu)先級 固定優(yōu)先級方式 所有中斷請求IRi的中斷優(yōu)先級固定不變 加電后8259A的默認方式,默認優(yōu)先級順序從高到低為IR0IR7,循環(huán)優(yōu)先級方式 .中斷源輪流處于最高優(yōu)先級,即自動中斷優(yōu)先級循環(huán) .某中斷請求IRi被處理后,其優(yōu)先級別自動降為最低,原來比它低一級的中斷上升為最高級,中斷嵌套方式 在中斷處理過程中允許被更高優(yōu)先級的事件所中斷稱為中斷嵌套。8259A有兩種中斷嵌套方式: 普通全嵌套方式(默認方式) 一中斷正被處理時,只有更高優(yōu)先級的事件可以打斷當前的中斷處理過程而被服務。 特殊全嵌套方式 一中斷正被處理時,允許同級或更高優(yōu)先級的事件可以打斷當前的中斷處理過程而被服務。,中斷結束處理方式,當某一IRi中斷被服務時,ISR中的相應位ISRi=1。當服務結束后,則必須清零該ISRi位。使ISRi=0是通過向8259A發(fā)出中斷結束命令(EOI命令)實現(xiàn)的。 三種EOI命令 自動EOI(AEOI)(自動EOI方式) 非指定EOI(NSEOI)(正常EOI方式) 指定EOI(SEOI)(特殊EOI方式),AEOI:在第2個INTA#結束時,由8259A使ISRi自動復位; 因不保留當前正在服務的中斷的狀態(tài),故AEOI不能用于中斷嵌套方式 SEOI:由CPU發(fā)出一條SEOI命令,該EOI命令中指出了所要復位的ISR的位號。 用于特殊屏蔽方式 NSEOI:由CPU發(fā)出正常EOI命令,該EOI命令使ISRi=1的位中優(yōu)先級最高的那一位復位。 用于普通全嵌套方式,4. 8259A的編程,8259A的控制命令分為 初始化命令字ICW ICW1ICW4 向8259A寫入ICW的過程稱為初始化編程 操作命令字OCW OCW1OCW3 向8259A寫入OCW的過程稱為操作方式編程,初始化命令字ICW(Initialization Command Word)通常是系統(tǒng)開機時,由 初始化程序填寫,且在整個系統(tǒng)工作過程中保持不變。初始化命令字必須按順 序填寫。,(1) ICW1,1 初始化命令字,1需要ICW4 0不需要ICW4,1單片8259A 0級連,86系統(tǒng)不用(通常為0),1電平觸發(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 ,A0 D7 D6 D5 D4 D3 D2 D1 D0,1,ICW2 設置中斷類型碼,注: T7T3 中斷向量類型碼高位, 由編程決定 低三位 自動設置為 IR0 IR7 的類型編碼(000 111),8259A傳送的中斷類型碼,8259A的編程,1 S7 S6 S5 S4 S3 S2 S1 S0,1IR輸入帶有一個 從控制器 0IR輸入不帶一個 從控制器,A0 D7 D6 D5 D4 D3 D2 D1 D0,1,1 0 0 0 0 0 ID2 ID1 ID0,從控制器ID,編碼000111分別對應該從片的INT往主片的IR0IR7哪個端子輸入。,A0 D7 D6 D5 D4 D3 D2 D1 D0,1,(3) ICW3 (主控制器),ICW3 (從控制器),8259A的編程,186 / 88模式 080 / 85模式,1自動EOI 0非自動EOI,0 X 非緩沖方式 1 0 緩沖方式/從控制器 1 1 緩沖方式/主控制器,1特殊完全嵌套方式 0非特殊完全嵌套方式,A0 D7 D6 D5 D4 D3 D2 D1 D0,1,(4) ICW4,0 0 0 SFNM BUF M / S AEOI PM,8259A的編程,8259A初始化編程流程圖,8259A的編程,由CPU向8259A送三個字節(jié)的操作命令字OCW(Operation Command Word), 用以規(guī)定8259A的工作方式,如: 中斷屏蔽 結束中斷 優(yōu)線權旋轉 中斷狀態(tài) 等。 操作命令字是在應用程序中設置的,設置時,順序上沒有嚴格的要求。,2 操作命令字,8259A的編程,(1)OCW1,OCW1是中斷屏蔽命令字,命令格式如圖。 命令字中的M7M0對應IMR的各位。Mi=1表示該中斷被屏蔽,Mi=0表示該中斷開放。,中斷結束命令字,命令格式如圖。 R、SL、EOI的不同組合決定了8259A的幾種工作方式。 L2L0 這幾位確定當SL=1時指定的特殊結束或特殊循環(huán)時的中斷優(yōu)先級。最常用的常規(guī)EOI命令字為20H。,(2)OCW2,用于控制8259A的運行方式。命令格式如圖。,(3)OCW3,8259A編程舉例,按以下要求初始化8259A: 端口地址為20H和21H; 中斷為上升沿觸發(fā);單片8259A;不寫ICW4; 與IR0-IR3對應的中斷向量碼為08H-0BH; IR4-IR7不使用。 根據(jù)要求,各初始化參數(shù)及工作參數(shù)如下: ICW1 = 00010010 = 12H ICW2 = 08H 中斷向量碼 OCW1 = 11110000 = 0F0H 中斷屏蔽字,初始化程序如下: INIT8259A: MOV DX,20H ;A0=0,寫ICW1 MOV AL,12H ;上升沿觸發(fā),單片,不寫ICW4 OUT DX,AL MOV DX,21H ;A0=1,寫ICW2,OCW1 MOV AL,08H ;ICW2 OUT DX,AL MOV AL,0F0H ;OCW1:屏蔽IR4-IR7 OUT DX,AL,5. 286以上微機的8259A中斷管理方式,系統(tǒng)加電后由BIOS對8259A初始化編程,設定中斷管理方式 :, 中斷屏蔽方式采用常規(guī)屏蔽方式 即應用時,向8259A中斷屏蔽寄存器寫入適當屏蔽字即可 屏蔽/開放某一級中斷。, 中斷源為固定優(yōu)先級 即IR0中斷請求級別最高,IR7中斷請求級別最低。,采用常規(guī)中斷結束方式 即在中斷服務子程序結束之前向8259送中斷結束命令。,6286以上的微機,對8259A的編程,對8259A編程分二步進行:,對8259A進行初始化編程 系統(tǒng)加電后,由BIOS完成 對8259A進行應用編程 編寫中斷程序時完成,有2項內(nèi)容:,每一個硬件中斷服務程序結束前必須向8259A送中斷 命令字,通知8259A本次中斷結束,否則8259A不能響 應同一中斷源的下次中斷。,需要時,向8259A中斷屏蔽寄存器寫入屏蔽字。,8259A收到中斷結束命令后,把ISR中的置1位清0!,1. 概述,硬件中斷分類:可屏蔽中斷,非屏蔽中斷 CPU有2個接收中斷請求信號的引腳。,可屏蔽中斷: 輸入到INTR引腳的中斷請求信號, 引發(fā)的中斷。,非屏蔽中斷: 輸入到NMI引腳的中斷請求信號, 引發(fā)的中斷。,.6 PC/AT 可屏蔽中斷,有可屏蔽中斷請求,沒有DMA請求,沒有非屏蔽中 斷請求,響應非屏蔽中斷的條件 有非屏蔽中斷請求,沒有DMA請求 一條指令執(zhí)行完,響應可屏蔽中斷的條件,CPU一條指令執(zhí)行完畢,硬件中斷的級別 DMA請求級別高于非屏蔽中斷高于可屏蔽中斷。,CPU處于開中斷狀態(tài)(I標=1),2. 可屏蔽中斷的硬件結構,可屏蔽中斷硬件結構(1),可屏蔽中斷硬件結構(2),使用2片8259級連,管理15級中斷,中斷源與中斷類型,硬件可屏蔽中斷的中斷級別,系統(tǒng)分配的8259口地址,中斷結束命令, 命令字=20H,接入從8259的中斷源,其服務程序結束應分別向 主、從8259各送一個中斷結束命令字 。, 中斷的引發(fā)方式不同, CPU獲取中斷類型碼的方式不同, CPU響應的條件不同,中斷處理程序的結束方式不同,3硬件中斷和軟件中斷的區(qū)別,4. 硬件可屏蔽中斷例, 中斷源: 系統(tǒng)8254 0#計數(shù)器,每55ms有一次中斷請求, 中斷類型: 8型,(1)日時鐘中斷,CPU轉入8型中斷后,完成下列工作 開中斷,保護現(xiàn)場(DS壓棧) 40H DS,對“日時鐘計數(shù)器”加1 測算軟驅馬達關閉時間, 向主8259送中斷結束命令 恢復現(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ù)初值。,關于1CH服務程序 8#服務程序,每隔55ms在DS=40H的前提下,調用一次1CH服務程序,之后又返回8型!,所以1CH中斷是日時鐘的外擴中斷,用戶可開發(fā)新的1CH中斷(完成每55ms一次的定時操作)取代原來的中斷服務子程序。,(2)用戶中斷, 中斷源: 系統(tǒng)總線插槽B4端引入的用戶設計的硬件中斷請求信號,用戶中斷請求的途徑,用戶 中斷 請求,用戶中斷請求從ISA總線B4端子(IRQ9)引入,經(jīng)過主8259,從8259二級中斷管理,最后由主8259向CPU提中斷。,只有從8259IMR1置0,主8259IMR2置0,其中斷請求方能送到CPU。,實現(xiàn)用戶中斷必須對主、從8259應用編程,保證中斷申請由8259中斷控制器提向CPU,IN AL,0A1H AND AL,11111101B OUT 0A1H,AL ;開放用戶中斷 IN AL,21H AND AL,11111011B OUT 21H,AL ;開放從8259中斷,BIOS為“71H型”設計的服務程序如下: PUSH AX MOV AL,20H OUT 0A0H,AL POP AX INT 0AH,用戶中斷的中斷類型 CPU響應用戶中斷后,自動轉向“71H型”服務程序,用戶中斷服務程序結束 若用戶中斷定義為0AH型, 服務程序結束前只向主8259送結束命令, 若用戶中斷定義為71H 服務程序結束前,向主從8259各送一中斷結束命令,用戶定義的中斷服務程序有兩個設計方法:, 定義用戶中斷服務程序為“71H型” 中斷程序的準備工作:置換71H型中斷向量,即把用戶 中斷的中斷向量471H 471 H+3單元, 定義用戶中斷服務程序為“0AH型” 中斷程序的準備工作:置換0AH型中斷向量,即把 用戶中斷的中斷向量40AH 40AH+3單元,(3) 鍵盤中斷,中斷源 : 主板鍵盤接口電路 中斷類型: 9 鍵盤中斷全過程:,鍵盤接口分2部分: 一部分裝在鍵盤盒內(nèi)鍵盤電路 另一部分裝在主機板鍵盤接口電路,2 部分之間通過5芯電 源連接。,鍵盤電路以單片機為核心,加電后固化在單片機 內(nèi)部的鍵盤掃描程序,不斷掃描每一個按健,一旦有鍵閉合,就把閉合鍵的掃描碼(位置碼) 鍵盤接口電路。,鍵盤接口電路:, 把串行掃描碼通過移位寄存器轉換成并行掃描碼口地址為60H的端口寄存器,串并轉換完畢,向主8259接中斷請求, CPU響應后,轉9型服務程序, 鍵盤中斷處理流程,開中斷,保護現(xiàn)場(DS壓棧),40H DS,從60H口地址寄存器取并行掃描碼分析,處理轉 換成2字節(jié)鍵代碼存入鍵盤緩沖區(qū),向8259發(fā)中斷結束命令,恢復現(xiàn)場 IRET,鍵盤緩沖區(qū),BIOS規(guī)定:系統(tǒng)RAM 40:1EH 40:3DH為鍵盤緩沖區(qū)共32個單元,實際使用30個單元,存放15個鍵的鍵代碼。鍵盤緩沖區(qū)是以“先進先出”的規(guī)則存取。,由9型服務程序寫入鍵代碼,用戶用INT 16H訪問鍵盤緩沖區(qū),鍵盤緩沖區(qū)是9型硬中斷和INT 16H軟中斷之間交換信息的緩沖區(qū) 。,.7 實模式下的定時中斷程序設計,應用背景 在許多應用中,需要每隔一定時間完成一次預定的操作定時操作。如定時數(shù)據(jù)采集、定時顯示、定時鍵盤掃描等,而采用定時中斷技術實現(xiàn)這種操作具有實時性好、占用CPU資源較少的特點。,一、定時中斷程序的設計方法 1.定時中斷源的選擇 系統(tǒng)8254 0#計數(shù)器, 外擴8254作為定時中斷源,2.確定中斷服務程序的類型 中斷類型由定時中斷源接入8259A的中斷引腳IRx有關。 如果中斷源是外擴定時器,由從8259A的IR1引腳引入,則服務程序應定義為0AH或71H型。 如果中斷源是系統(tǒng)8254的0#計數(shù)器,并且定時周期是55ms的整數(shù)倍,則定義用戶服務程序為1CH型,取代系統(tǒng)的1CH型服務程序。 如果中斷源是系統(tǒng)8254的0計數(shù)器,但定時周期55ms的整數(shù)倍,則應重新對8254 0計數(shù)器進行初始化。,定時周期不等于55ms整數(shù)倍的處理框圖,3.置換中斷向量 服務程序的類型確定之后,應置換相應的中斷 向量(使用INT21H的25H和35H子功能)。 4.開放8259A中斷,從系統(tǒng)硬件中斷的結構圖可知: 用戶中斷要經(jīng)過從8259A、主8259A兩級中斷控制器的管理,為了使用戶中斷請求送到CPU,應將從8259A的IMR的D1位置0,主8259A的IMR的D2位置0,從而打通用戶中斷請求的通道。,一般說,各種型號的主機板對日時鐘中斷都是開放 的,用戶不必再采取措施。,5 .避免“DOS重入”,“DOS 重入”示意圖,: : : INT21H,現(xiàn)行程序,21H型服務程序 : : IRET,有中斷請求,: : INT 21H,DOS不允許重入,6中斷服務程序的執(zhí)行時間 必須遠遠小于定時中斷的時間間隔,7. 中斷結束向8259A發(fā)中斷結束命令,定時中斷周期T1,服務程序執(zhí)行時間,IRX,T2 T1,T2,二.定時中斷程序結構,之一,主程序,關中斷 *中斷源初始化 置換中斷向量 其他準備工作 開中斷,等待中斷,* 恢復系統(tǒng)資源 恢復中斷向量 返回DOS,服務程序,保護現(xiàn)場,定時時間到?,執(zhí)行定時操作,向8259A送結束命令 恢復現(xiàn)場 IRET,Y,N,避免DOS 重入,特點:服務程序 直接進行定時操作,* 表示視具體情況而定,程序結束前,之二,主程序,關中斷 * 中斷源初始化 置換中斷向量 其他準備工作 開中斷,* 恢復系統(tǒng)資源 恢復中斷向量 返回DOS,保護現(xiàn)場,定時時間到?,設置“時間到”標志,向8259A送結束命令 恢復現(xiàn)場 IRET,Y,N,“時間到”標志可利用數(shù)據(jù)段某單元或某個空閑寄存器,特點:服務程序不直接進行定時操作,而是建立“時間到”標志。由主程序判斷時間到標志再進行定時操作。,* 表示視具體情況而定,其它操作,有無“時間到”標志?,執(zhí)行定時操作,Y,程序是否需要結束?,N,Y,服務程序,N,三定時中斷程序舉例,【例9.8.1】1CH型中斷的應用 假設微機系統(tǒng)外擴了共陰級數(shù)碼管電路(見下頁),要求使用系統(tǒng)定時源并采用中斷方式每隔一秒完成一次8字左移,循環(huán)往復,直到主機鍵盤按下任意鍵時停止。,a,b,c,d,e,f,g,h,共陰級數(shù)碼管結構,h,a,b,c,d,e,f,g,h,8位鎖存器(位選),(200H選中),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,h,CS,CS,(反相輸出),COM,COM,COM,COM,COM,COM,數(shù)碼管顯示原理 使用段選碼和位選碼進行控制。 段選碼:顯示什么字符。6個數(shù)碼管的同名段共享連接,即D0-a;D1-b;D6-g;D7-h 。顯示字符“8”的段選碼是7FH。 位選碼:選擇被點亮的LED(僅D5-D0有效)。 點亮右邊第1個LED,位選碼為00100000B 點亮右邊第2個LED,位選碼為00010000B : : 點亮左邊第1個LED,位選碼為00000001B,設計思路 主要解決四個問題: (1)字符“8”的顯示控制問題,包括段選碼和位選碼; (2)定時時間間隔1秒鐘如何實現(xiàn); (3)每隔一秒鐘“8”如何左移一位顯示; (4)顯示過程如何結束,MOV DX,201H MOV AL,7FH ;“8”段碼 OUT DX, AL MOV DX,200H MOV AL,Origin ;位碼 OUT DX, AL,SHR Origin,1 :,SCAN:MOV AL,1 INT 16H JZ SCAN 結束準備,定時程序由主程序和1CH型中斷程序組成,主程序,圖9-18 【例9.8.1】程序框圖,關中斷 轉移系統(tǒng)的1CH型中斷向量 寫入用戶的1CH型中斷向量 第6位數(shù)碼管顯示“8”字符 開中斷,有鍵入?,N,恢復系統(tǒng)的1CH型中斷向量 返回DOS,Y,SCAN:MOV AH,1 INT 16H JZ SCAN,CALL RESET MOV AH,4CH INT 21H,1CH型中斷服務程序,保護現(xiàn)場 重新定義用戶數(shù)據(jù)段 中斷計數(shù),滿18次?,18中斷計數(shù)單元 ”8”字左移一位,Y,N,恢復現(xiàn)場 中斷返回,【程序清單】 ;FILENAME:891.ASM .486 DATA SEGMENT USE16 ;數(shù)據(jù)段定義 OLD1C DD ? ICOUNT DB 18 ;中斷計數(shù)初值 ORIGIN DB 20H ;數(shù)碼管位選初值 DATA ENDS CODE SEGMENT USE16 ;代碼段 ASSUME CS:CODE,DS:DATA START: MOV AX, DATA ;DS段賦值 MOV DS, AX CLI ;關中斷 CALL READ1C CALL WRITE1C MOV DX,201H MOV AL,7FH OUT DX, AL ;輸出“8”的字型碼 MOV DX,200H MOV AL,ORIGIN OUT DX, AL ;定位顯示 STI ;開中斷,SCAN: MOV AH,1 INT 16H ;有鍵入? JZ SCAN ;否,轉移 CALL RESET MOV AH,4CH ;返回DOS INT 21H ;-以下為中斷服務程序 - SERVICE PROC PUSHA ;保護現(xiàn)場 PUSH DS MOV AX,DATA ;注意:重新給DS賦值。 MOV DS, AX DEC ICOUNT ;中斷計數(shù) JNZ EXIT ;不滿18次轉移 MOV ICOUNT,18 ;滿18次,重新賦計數(shù)初值,SHR ORIGIN,1 JNC NEXT ;沒有顯示到最左端,轉移 MOV ORIGIN, 20H ;已顯示到最左端,重新賦初值 NEXT: MOV AL,ORIGIN MOV DX,200H OUT DX, AL ;“8”字左移一位 EXIT: POP DS POPA ;注意:不需給8259A送中斷結束命令。 IRET ;返回系統(tǒng)8型中斷服務程序 SERVICE ENDP ;- READ1C PRO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論