2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第1頁(yè)
2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第2頁(yè)
2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第3頁(yè)
2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第4頁(yè)
2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章微型計(jì)算機(jī)的中斷系統(tǒng)4.1中斷原理4.28086CPU中斷系統(tǒng)4.3可編程中斷控制器8259A4.4中斷方式輸入輸出4.1中斷原理4.1.1中斷的基本概念1.中斷

由于某個(gè)事件的發(fā)生,CPU暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)而執(zhí)行處理該事件的一個(gè)程序。該程序執(zhí)行完成后,CPU接著執(zhí)行被暫停的程序。這個(gè)過(guò)程稱為中斷。2.中斷源引發(fā)中斷的事件稱為中斷源內(nèi)部中斷(在CPU內(nèi)部的中斷源):程序異常(運(yùn)算溢出等),陷阱中斷(例如,單步運(yùn)行程序等),軟件中斷(執(zhí)行特殊指令)等。外部中斷(發(fā)生在CPU外部的中斷):外部故障(電源故障,存儲(chǔ)器讀寫校驗(yàn)錯(cuò))外部事件(定時(shí)時(shí)間到,外部特殊信號(hào))IO事件(外部設(shè)備完成一次IO操作,請(qǐng)求數(shù)據(jù)傳輸)3.中斷類型

用若干位二進(jìn)制表示的中斷源的編號(hào)。4.中斷斷點(diǎn)

由于中斷的發(fā)生,某個(gè)程序被暫停執(zhí)行。 該程序中即將執(zhí)行,由于中斷沒有被執(zhí)行的那條指令的地址稱為中斷斷點(diǎn),簡(jiǎn)稱斷點(diǎn)。5.中斷服務(wù)程序

處理中斷事件的程序段稱為中斷服務(wù)程序。

如:故障中斷服務(wù)程序,輸入輸出中斷服務(wù)程序。 不同類型的中斷需要不同的中斷服務(wù)程序。 中斷服務(wù)程序不同于一般的子程序:子程序由某個(gè)程序調(diào)用,它的調(diào)用是由程序設(shè)定的,

它的執(zhí)行時(shí)間是確定的。中斷服務(wù)程序由某個(gè)事件引發(fā),它的執(zhí)行一般是隨

機(jī)的,不確定的。

6.中斷系統(tǒng)

為實(shí)現(xiàn)計(jì)算機(jī)的中斷功能而配置的相關(guān)硬件、軟件的集合稱為中斷系統(tǒng)。4.1.2中斷工作方式的特點(diǎn)1.并行處理能力

實(shí)現(xiàn)CPU和多個(gè)外設(shè)同時(shí)工作,提高CPU效率。2.實(shí)時(shí)處理能力

計(jì)算機(jī)應(yīng)用于實(shí)時(shí)控制時(shí),對(duì)外部事件及時(shí)響應(yīng)。故障處理能力

及時(shí)處理故障,不影響其他程序的運(yùn)行。4.多道程序或多重任務(wù)的運(yùn)行

在操作系統(tǒng)的調(diào)度下,運(yùn)行多道程序或多重任務(wù)。4.1.3中斷管理1.對(duì)中斷全過(guò)程的控制中斷源發(fā)出中斷請(qǐng)求時(shí),CPU能決定是否響應(yīng)這一中斷。若允許響應(yīng)這個(gè)中斷請(qǐng)求,CPU在保護(hù)斷點(diǎn)后,將控制轉(zhuǎn)移到相應(yīng)的中斷服務(wù)程序去中斷處理完,CPU返回到斷點(diǎn)處繼續(xù)執(zhí)行被中斷的程序。2.中斷源的識(shí)別

軟件識(shí)別:響應(yīng)中斷后,CPU進(jìn)入中斷處理程序。在這個(gè)程序里,CPU逐個(gè)查詢各中斷源的狀態(tài),確

定是哪一個(gè)設(shè)備申請(qǐng)了中斷。硬件識(shí)別:響應(yīng)中斷后,CPU進(jìn)入一個(gè)“中斷響應(yīng)周期”。在這個(gè)周期里,申請(qǐng)中斷的設(shè)備向CPU發(fā)送它的中斷類型。3.中斷的優(yōu)先權(quán)

優(yōu)先權(quán):有多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),CPU

響應(yīng)中斷的優(yōu)先次序。(1)軟件查詢法(2)分類申請(qǐng)法(3)鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)——菊花鏈法(4)可編程中斷控制器——“向量”優(yōu)先權(quán)排隊(duì)圖4-1菊花鏈中斷優(yōu)先級(jí)排隊(duì)電路4.中斷嵌套CPU在處理中斷過(guò)程中,如果出現(xiàn)了級(jí)別更高的中斷

請(qǐng)求,CPU停止執(zhí)行低級(jí)中斷的處理程序而去優(yōu)先處

理高級(jí)中斷。等高級(jí)中斷處理完畢后,再接著執(zhí)行低級(jí)的未處理完

的程序。這種中斷處理方式稱為多重(級(jí))中斷或中斷嵌套。CPU在響應(yīng)中斷時(shí)已將IF清零,一定要在中斷處理程

序中加入開中斷指令,才有可能進(jìn)行中斷嵌套。中斷嵌套

4.1.4中斷過(guò)程1.中斷源請(qǐng)求中斷(1)外部中斷源

由外部硬件產(chǎn)生可屏蔽或不可屏蔽中斷的請(qǐng)求信號(hào);(2)內(nèi)部中斷源

在程序運(yùn)行過(guò)程中發(fā)生了指令異常或其他情況。(3)中斷屏蔽

CPU用程序的方法允許某些中斷源發(fā)出中斷請(qǐng)求,而禁止某些中斷源請(qǐng)求中斷在外設(shè)的接口內(nèi)增設(shè)一個(gè)中斷屏蔽觸發(fā)器

Q=0時(shí),中斷請(qǐng)求不能發(fā)往INTR;適當(dāng)?shù)卦O(shè)定中斷屏蔽觸發(fā)器的狀態(tài),可以控制中斷

請(qǐng)求信號(hào)是否能夠送到INTR端2.中斷響應(yīng)

(1)響應(yīng)可屏蔽中斷必須同時(shí)具備以下條件:CPU處于允許中斷狀態(tài)(IF=1);沒有不可屏蔽中斷請(qǐng)求和總線請(qǐng)求;當(dāng)前指令執(zhí)行結(jié)束。(2)響應(yīng)不可屏蔽中斷必須同時(shí)滿足以下條件:

沒有總線請(qǐng)求;當(dāng)前指令執(zhí)行結(jié)束。(3)響應(yīng)內(nèi)部中斷的條件:當(dāng)前指令執(zhí)行結(jié)束。CPU接受中斷請(qǐng)求后轉(zhuǎn)入中斷響應(yīng)周期:(1)識(shí)別中斷源,取得中斷源的中斷類型;(2)將標(biāo)志寄存器FLAGS和CS、IP(斷點(diǎn))先后壓入

堆棧保存;(3)清除自陷標(biāo)志位TF和中斷允許標(biāo)志位IF;(4)獲得相應(yīng)的中斷服務(wù)程序入口地址,轉(zhuǎn)入中斷服務(wù)

程序。中斷響應(yīng)周期圖4-3中斷過(guò)程3.中斷服務(wù)

(1)保護(hù)現(xiàn)場(chǎng):保護(hù)中斷服務(wù)時(shí)要使用的寄存器(壓棧);(2)開中斷:中斷服務(wù)時(shí)能響應(yīng)更高級(jí)的中斷請(qǐng)求;(3)中斷處理:執(zhí)行輸入輸出或非常事件的處理;(4)關(guān)中斷:恢復(fù)現(xiàn)場(chǎng)時(shí)不被新的中斷打擾;(5)恢復(fù)現(xiàn)場(chǎng):將堆棧中保存的內(nèi)容彈出;(6)中斷返回:通過(guò)中斷返回指令,彈出IP,CS,FLAGS,

程序回到被中斷的地址,恢復(fù)中斷前的狀態(tài)。4.28086CPU中斷系統(tǒng)4.2.18086的中斷類型中斷類型:用8位二進(jìn)制表示,可以有256個(gè)不同的中斷;中斷請(qǐng)求輸入引腳:NMI、INTR;中斷優(yōu)先級(jí):

INT0(除法溢出)→溢出中斷(INTO)→INTn指令

→NMI→INTR→單步中斷。圖4-48086CPU中斷1.可屏蔽中斷

IF=0時(shí),CPU不響應(yīng)INTR的中斷請(qǐng)求;

IF=1時(shí),CPU響應(yīng)INTR的中斷請(qǐng)求。 用STI指令使IF=1,稱為開中斷;

用CLI指令使IF=0,稱為關(guān)中斷。 系統(tǒng)復(fù)位后,或CPU響應(yīng)了任何一種中斷后,都會(huì)使

IF=0。

應(yīng)使用STI指令使IF=1,確保中斷開放。 可屏蔽中斷源由8259A統(tǒng)一管理,每片8259A可以接

受8個(gè)外部設(shè)備的中斷請(qǐng)求。2.不可屏蔽中斷

NMI接收上升沿觸發(fā)的中斷請(qǐng)求信號(hào); 輸入脈沖應(yīng)大于兩個(gè)時(shí)鐘周期;

CPU對(duì)NMI中斷請(qǐng)求的響應(yīng),不受中斷允許 標(biāo)志位

IF控制; NMI中斷類型碼固定為2。3.內(nèi)部中斷

(1)除法溢出中斷(n=0):

除數(shù)為零或商超過(guò)寄存器所能表達(dá)的范圍。(2)單步中斷(n=1):

TF=1,每執(zhí)行完一條指令產(chǎn)生一次中斷。

用于實(shí)現(xiàn)單步操作,是強(qiáng)有力的調(diào)試手段。(3)斷點(diǎn)中斷(n=3):

INT3指令產(chǎn)生一個(gè)中斷類型碼為3的斷點(diǎn)中斷。(4)INTO指令(n=4):

OF=1,則INTO指令引起類型碼為4的內(nèi)部中斷;

OF=0,此指令不起作用,程序順序執(zhí)行。(5)INTn指令中斷向量:中斷服務(wù)程序的入口地址;8086的中斷向量表從內(nèi)存00000H開始存放;每個(gè)中斷向量占用4個(gè)字節(jié);中斷服務(wù)程序入口的偏移地址存入兩個(gè)低地址字節(jié),

入口的段基址存入兩個(gè)高地址字節(jié);256個(gè)中斷向量占用00000H~003FFH共1024個(gè)字節(jié)。4.2.28086的中斷向量表圖4-58086的中斷向量表AH=35HAL=中斷類型

INT21H →把原有的中斷向量送ES:BX

AH=25HAL=中斷類型DS:DX=中斷向量

INT21H →把新的中斷向量送中斷向量表

1.不可屏蔽中斷NMI不受CPU內(nèi)部中斷允許標(biāo)志IF的約束,優(yōu)先權(quán)高于INTR;中斷類型號(hào)2;采用邊沿觸發(fā)(上升沿)方式(1)標(biāo)志寄存器壓入堆棧(2)清除IF標(biāo)志和TF標(biāo)志(3)保存斷點(diǎn),把斷點(diǎn)處的CS和IP內(nèi)容先后壓入堆棧(4)取出中斷服務(wù)程序的入口地址,送入IP和CS(5)進(jìn)入中斷服務(wù)程序用途:主板上RAM奇偶錯(cuò),I/O通道中的奇偶校驗(yàn)錯(cuò),

8087協(xié)處理器異常中斷。4.2.38086對(duì)外部中斷的響應(yīng)2.可屏蔽中斷INTR

外設(shè)的中斷請(qǐng)求首先送到8259A,按照中斷優(yōu)先權(quán)排隊(duì);電平觸發(fā)方式,高電平有效。響應(yīng)過(guò)程:第一個(gè)INTA總線周期,通知外部做好準(zhǔn)備;第二個(gè)INTA總線周期,從外部獲取中斷類型號(hào);執(zhí)行總線寫周期,把FLAGS壓入堆棧,并清除IF,TF;執(zhí)行總線寫周期,把CS內(nèi)容壓棧;執(zhí)行總線寫周期,把IP內(nèi)容壓棧;執(zhí)行總線讀周期,中斷服務(wù)程序入口偏移地址送入IP;

執(zhí)行總線讀周期,中斷服務(wù)程序入口段基址送入CS。4.3可編程中斷控制器8259A接收8路外部中斷請(qǐng)求,通過(guò)級(jí)聯(lián)可以擴(kuò)展至64級(jí);優(yōu)先權(quán)排隊(duì)和控制,優(yōu)先權(quán)方式可選;中斷嵌套功能;向CPU提供中斷類型號(hào);對(duì)每一級(jí)編程進(jìn)行屏蔽或開放。4.3.18259A的基本功能DB7~DB0:雙向三態(tài)數(shù)據(jù)總線;IR7~IR0:外設(shè)向8259A發(fā)出的中斷請(qǐng)求信號(hào),輸入。A0: 地址線,輸入,用于選擇內(nèi)部端口。CS#:片選信號(hào),輸入、低電平有效。RD#:讀信號(hào),輸入、低電平有效。WR#:寫信號(hào),輸入、低電平有效。INITA#:中斷響應(yīng)信號(hào),輸入、低電平有效。INT:中斷請(qǐng)求信號(hào),輸出、高電平有效。CAS2~CAS0:雙向的級(jí)聯(lián)線。SP/EN:主從設(shè)備設(shè)定/緩沖器讀寫控制,雙向雙功能4.3.28259A引腳及內(nèi)部結(jié)構(gòu)圖4-68259A引腳圖4-78259A的內(nèi)部結(jié)構(gòu)2.中斷請(qǐng)求寄存器IRR

鎖存外部設(shè)備送來(lái)的IR7~IR0中斷請(qǐng)求信號(hào);中斷請(qǐng)求線變?yōu)楦唠娖綍r(shí),IRR中與之對(duì)應(yīng)的一位被置1;寄存器的內(nèi)容可以被CPU讀出。3.中斷屏蔽寄存器IMR

記錄對(duì)每一級(jí)中斷的屏蔽信號(hào);置1時(shí),對(duì)應(yīng)的外部中斷請(qǐng)求線被屏蔽;設(shè)置IMR起到改變中斷請(qǐng)求優(yōu)先級(jí)的效果。4.中斷服務(wù)狀態(tài)寄存器ISR

記錄當(dāng)前正在被服務(wù)的所有中斷級(jí);CPU響應(yīng)IRi中斷請(qǐng)求,ISR中對(duì)應(yīng)第i位置1;中斷處理結(jié)束前,要使用指令清除這一位;寄存器可以被CPU讀出。5.優(yōu)先權(quán)處理器

識(shí)別和管理各中斷請(qǐng)求信號(hào)的優(yōu)先級(jí)別;多個(gè)中斷請(qǐng)求信號(hào)同時(shí)出現(xiàn)時(shí),優(yōu)先權(quán)處理器根據(jù)

控制邏輯規(guī)定的優(yōu)先級(jí)規(guī)則和IMR的內(nèi)容來(lái)判斷這

些請(qǐng)求信號(hào)的最高優(yōu)先級(jí)。6.控制邏輯

初始化命令字寄存器ICW1~ICW4: 在系統(tǒng)初始化時(shí)置入,工作過(guò)程中保持不變。操作命令字寄存器OCW1~OCW3: 工作過(guò)程中根據(jù)需要設(shè)定。7.?dāng)?shù)據(jù)總線緩沖器

8位的雙向三態(tài)緩沖器,是8259A與系統(tǒng)數(shù)據(jù)總線的接口。8.讀/寫控制邏輯

接收、執(zhí)行CPU的讀/寫命令。9.級(jí)聯(lián)緩沖/比較器

在級(jí)聯(lián)方式的主/從結(jié)構(gòu)中,用來(lái)控制8259A的級(jí)聯(lián)。緩沖器:SP/EN輸出低電平時(shí),開啟雙向緩沖器。級(jí)聯(lián)比較器:

主8259A:用CAS2~CAS0輸出被選中從片代碼;

從8259A:接收主器件送來(lái)的從片選擇代碼1.8259A的工作過(guò)程(1)中斷源在IR0~I(xiàn)R7上產(chǎn)生中斷請(qǐng)求;(2)中斷請(qǐng)求被鎖存,經(jīng)IMR“屏蔽”,送優(yōu)先權(quán)電路判優(yōu);(3)控制邏輯接收中斷請(qǐng)求,向CPU輸出INT信號(hào);(4)CPU接受8259A的INT信號(hào),進(jìn)入連續(xù)兩個(gè)INTA周期。(5)優(yōu)先權(quán)電路將最高優(yōu)先權(quán)對(duì)應(yīng)ISR中的位置位;(6)第二個(gè)INTA周期把中斷類型號(hào)輸出到數(shù)據(jù)總線;(7)CPU讀取中斷類型號(hào),轉(zhuǎn)移到相應(yīng)的中斷處理程序。(8)中斷處理結(jié)束前,向8259A發(fā)送EOI(中斷結(jié)束)命

令,使ISR相應(yīng)位復(fù)位,本次中斷到此結(jié)束。4.3.38259A的工作方式2.8259A的優(yōu)先權(quán)管理

(1)固定優(yōu)先級(jí)

中斷源的優(yōu)先級(jí)由它所連接的引腳編號(hào)決定;

全嵌套方式: 中斷優(yōu)先權(quán)級(jí)別固定,IR0優(yōu)先權(quán)最高,IR7最低。

特殊全嵌套: 接收同一引腳上的第二次中斷請(qǐng)求。(2)循環(huán)優(yōu)先級(jí)

各個(gè)中斷申請(qǐng)具有大體相同的優(yōu)先級(jí);

有優(yōu)先權(quán)自動(dòng)循環(huán)方式和優(yōu)先權(quán)特殊循環(huán)方式。

3.中斷屏蔽方式(1)普通屏蔽方式通過(guò)將中斷屏蔽字寫入IMR實(shí)現(xiàn);寫入某位為“1”,對(duì)應(yīng)的中斷請(qǐng)求被屏蔽;為“0”開放。(2)特殊屏蔽方式采用特殊屏蔽方式并用屏蔽字對(duì)IMR中某一位置“1”,

會(huì)同時(shí)使ISR中對(duì)應(yīng)位清“0”。對(duì)屏蔽位的設(shè)置部分地改變了中斷優(yōu)先權(quán)。4.中斷結(jié)束方式中斷結(jié)束命令(EOI):

將ISR中的相應(yīng)位清“0”,表示中斷處理結(jié)束。(1)自動(dòng)中斷結(jié)束方式(AEOI)

8259A在第二個(gè)中斷響應(yīng)周期INTA信號(hào)的后沿,自動(dòng)

將ISR中被響應(yīng)中斷級(jí)的對(duì)應(yīng)位清“0”。(2)非自動(dòng)中斷結(jié)束方式(EOI)從中斷服務(wù)程序返回前,在程序里向8259A輸出一個(gè)中

斷結(jié)束命令(EOI),把ISR對(duì)應(yīng)位清“0”。一般的中斷結(jié)束方式:由8259A自動(dòng)選擇優(yōu)先權(quán)最高的位。特殊的中斷結(jié)束命令:指令內(nèi)指明要清除ISR中的某一位。注意!

在非自動(dòng)中斷結(jié)束方式下,如果在程序里忘了發(fā)送中斷結(jié)束命令,那么,8259A將不再響應(yīng)這個(gè)中斷以及比它級(jí)別低的中斷請(qǐng)求。5.8259A查詢工作方式工作在程序查詢方式時(shí),8259A不向CPU發(fā)INT信號(hào);CPU通過(guò)查詢8259A了解有無(wú)中斷;如果有中斷發(fā)生,轉(zhuǎn)入相應(yīng)的服務(wù)程序。設(shè)置查詢方式的過(guò)程:關(guān)閉中斷;用輸出指令把“查詢方式命令字”送到8259A;對(duì)8259A執(zhí)行一條輸入指令,讀取查詢字查詢字格式為:IXXXXW2WlW0I=1,有中斷請(qǐng)求,W2WlW0為最高優(yōu)先級(jí)編碼。初始化命令字:在系統(tǒng)初始化時(shí)寫入;用來(lái)設(shè)定8259的基本工作方式。操作命令字:在初始化后的任何時(shí)刻寫入8259A;用來(lái)動(dòng)態(tài)地控制8259A的操作。4.3.48259A的編程圖4-81.初始化命令字ICW(1)初始化命令字ICWl注意!向8259A送入一條A0=0、D4=1的命令(ICW1):

啟動(dòng)8259A的初始化過(guò)程,相當(dāng)于RESET信號(hào)的作用,自動(dòng)完成下列操作:清除中斷屏蔽寄存器IMR;設(shè)置以IR0為最高優(yōu)先級(jí),IR7為最低優(yōu)先級(jí)的全嵌

套方式;固定中斷優(yōu)先權(quán)排序。圖4-9(2)初始化命令字ICW2圖4-10(3)初始化命令字ICW3(主片)圖4-11(3)初始化命令字ICW3(從片)圖4-12(4)初始化命令字ICW4(5)8259A初始化按以下順序?qū)?259A初始化:?jiǎn)纹?259A:ICW1、ICW2、ICW4級(jí)聯(lián)方式:ICW1、ICW2、ICW3、ICW4注意:級(jí)聯(lián)方式下,每一片8259A都要獨(dú)立地按上

面順序?qū)懭氤跏蓟钭?。單片工作,邊沿觸發(fā),全嵌套;中斷類型08H~0FH,端口地址20H,21H;非緩沖方式,非中斷自動(dòng)結(jié)束,非特殊全嵌套方式;初始化程序:

MOV AL,00010011B OUT 20H,AL ;ICW1:?jiǎn)纹?,邊沿觸發(fā) MOV AL,00001000B OUT 21H,AL ;ICW2:中斷類型08H~0FH MOV AL,00000001B OUT 21H,AL ;ICW4:非中斷自動(dòng)結(jié)束IBM-PC微型計(jì)算機(jī)內(nèi)8259A的工作方式例:二片8259A進(jìn)行級(jí)聯(lián),邊沿觸發(fā),非緩沖方式,非自動(dòng)中斷結(jié)束,CAS0~CAS2互連。主片初始化程序:

MOV AL, 00010001BOUT 20H, AL ;ICW1:邊沿觸發(fā),級(jí)聯(lián)MOV AL, 00001000BOUT 21H, AL ;ICW2:中斷類型08H~0FHMOV AL, 00000100BOUT 21H, AL ;ICW3:IR2連有從片MOV AL, 00010001B ;ICW4:特殊全嵌套,非緩沖

OUT 21H, AL ;ICW4:非自動(dòng)中斷結(jié)束圖4-138259A的級(jí)聯(lián)

從片初始化程序:

MOVAL, 00010001BOUT0A0H,AL ;ICW1:邊沿觸發(fā),級(jí)聯(lián)MOVAL,01110000BOUT0A1H,AL ;ICW2:中斷類型70H~77HMOVAL,00000010BOUT0A1H,AL ;ICW3:INT引腳連主片IR2MOVAL,00000001B ;ICW4:非自動(dòng)中斷結(jié)束OUT0A1H,AL ;ICW4:非特殊全嵌套,非緩沖2.操作命令字OCW對(duì)8259A預(yù)置完畢后:8259A進(jìn)入設(shè)定的工作狀態(tài);準(zhǔn)備接收由IR輸入的中斷請(qǐng)求信號(hào);按固定優(yōu)先級(jí)(缺省方式)來(lái)管理中斷請(qǐng)求。運(yùn)行中可以寫入操作控制字,對(duì)8259A管理中斷的方式進(jìn)行修改和設(shè)定。有OCW1、OCW2和OCW3三個(gè)操作控制字;OCW按需要選擇寫入,沒有固定順序。圖4-14(1)操作控制字OCWl例:需要屏蔽IR4的中斷輸入,同時(shí)不改變其他中斷輸入的屏蔽狀態(tài),可以用如下的三條指令實(shí)現(xiàn): IN AL,21H ;取屏蔽寄存器當(dāng)前值 OR AL,00010000B ;將D4位置1 OUT 21H,AL ;寫回改變后的屏蔽字反之,需要清除對(duì)IR2的中斷屏蔽: IN AL,21H ;取屏蔽寄存器當(dāng)前值 AND AL,11111011B ;將D2位清0 OUT 21H,AL ;寫回改變后的屏蔽字操作控制字OCW1應(yīng)用圖4-15(2)操作控制字OCW2一般的中斷結(jié)束命令: MOV AL, 20H OUT 20H, AL操作控制字OCW2應(yīng)用圖4-16(3)操作控制字OCW3OCW3用途:設(shè)置/清除特殊屏蔽命令發(fā)出讀寄存器命令:設(shè)置RR=1,RIS=0后,用IN指令讀偶端口,可以將

IRR讀入CPU。設(shè)置RR=1,RIS=1后,用IN指令讀偶端口,可以將

ISR讀入CPU。操作控制字OCW3應(yīng)用發(fā)出查詢命令;設(shè)置P=1后,用IN指令讀偶端口,可以將中斷查詢字

讀入CPU:

IXXXXW2WlW0I=1表示有中斷請(qǐng)求,W2WlW0表示請(qǐng)求服務(wù)的最高

優(yōu)先級(jí)編碼。注意:設(shè)置了P=1的查詢命令后,8259A不再通過(guò)INT引腳向

CPU發(fā)送中斷請(qǐng)求。要取消查詢方式,可以再次發(fā)出OCW3,并使P=0。操作控制字OCW3應(yīng)用例:BIOS中讀取ISR寄存器的程序段: MOV AL,00001011B ;OCW3命令字(讀ISR) OUT 20H,AL ;寫入OCW3端口 NOP ;延時(shí) IN AL,20H ;將ISR內(nèi)容送入AL MOV AH,AL ;將ISR內(nèi)容轉(zhuǎn)存入AH OR AL,AH ;是全0否? JNZ AW-INT ;否,轉(zhuǎn)硬件中斷程序 ……操作控制字OCW3應(yīng)用4.4中斷方式輸入輸出4.4.1中斷方式IO接口中斷方式輸入過(guò)程:外部設(shè)備輸入數(shù)據(jù);中斷請(qǐng)求觸發(fā)器置位;接口向CPU申請(qǐng)中斷;CPU響應(yīng)中斷,中斷請(qǐng)求觸發(fā)器被復(fù)位;CPU在中斷服務(wù)程序中讀取數(shù)據(jù)。圖4-17中斷方式輸入接口中斷屏蔽觸發(fā)器的作用:控制外設(shè)接口的中斷請(qǐng)求信號(hào)能否發(fā)送給CPU。中斷屏蔽觸發(fā)器可以看作該接口控制寄存器的一位圖4-17是不完整的:沒有給出中斷屏蔽觸發(fā)器的寫入電路;解決中斷優(yōu)先權(quán)的電路;向CPU發(fā)送中斷類型號(hào)的電路。圖4-18中斷方式下,完整的輸入輸出程序應(yīng)由二個(gè)程序模塊配合完成:主程序:

完成輸入輸出所需要的“初始化”工作和結(jié)束工作;中斷服務(wù)程序:

完成數(shù)據(jù)傳輸和輸入輸出控制工作。4.4.2中斷方式輸入輸出程序設(shè)計(jì)1.主程序設(shè)計(jì)(1)CPU初始化:設(shè)置堆棧,設(shè)置中斷向量,開放中斷。(2)中斷控制器8259A的初始化:

選擇工作方式,設(shè)置優(yōu)先級(jí)、清除屏蔽位等。(3)接口的初始化:設(shè)置接口工作方式,設(shè)置中斷開放位等。(4)中斷服務(wù)程序的初始化:

設(shè)置中斷服務(wù)程序使用的緩沖區(qū)指針,計(jì)數(shù)器,狀態(tài)位等。注意:中斷服務(wù)程序的指針、計(jì)數(shù)器、狀態(tài)位等只能存放在

內(nèi)存單元。對(duì)于輸出過(guò)程,應(yīng)在主程序中啟動(dòng)第一次輸出。輸入輸出完成之后,主程序要根據(jù)需要做好結(jié)束工作。

如:處理輸入的數(shù)據(jù),關(guān)閉中斷等。2.中斷服務(wù)程序設(shè)計(jì)

保護(hù)現(xiàn)場(chǎng):

把所有中斷服務(wù)程序里使用、會(huì)改變值的寄存器壓入

堆棧。

開放中斷:

允許CPU響應(yīng)優(yōu)先級(jí)更高、更緊急的中斷。

輸入輸出處理:

關(guān)閉中斷:

關(guān)閉中斷可以避免不必要的中斷嵌套,發(fā)EOI命令。

恢復(fù)現(xiàn)場(chǎng):

按照“先進(jìn)后出”的原則,恢復(fù)各寄存器的內(nèi)容。

中斷返回:

用IRET指令返回被中斷的程序。中斷服務(wù)程序應(yīng)注意的幾個(gè)問(wèn)題:中斷服務(wù)程序要短小精悍,運(yùn)行時(shí)間短,執(zhí)行一次中斷服務(wù)程序的時(shí)間要大大少于二次中斷的時(shí)間間隔。對(duì)于耗費(fèi)時(shí)間多的數(shù)據(jù)處理工作,應(yīng)交由主程序完成。一般的情況下,應(yīng)避免在中斷服務(wù)程序內(nèi)進(jìn)行DOS功能調(diào)用。那樣做,可能產(chǎn)生這些程序的“重入”。DOS功能調(diào)用程序不具備重入功能,會(huì)產(chǎn)生難以預(yù)料的結(jié)果。需要進(jìn)行控制臺(tái)IO操作可以使用BIOS調(diào)用。在輸入輸出處理完成后,一定要向8259A發(fā)送中斷結(jié)束命令(EOI)。如果是級(jí)聯(lián)的8259A的從片上的中斷,則需要向主片和從片分別發(fā)送中斷結(jié)束命令。否則,該設(shè)備的下一次中斷就不能被響應(yīng),比它級(jí)別低的中斷從此也不能被響應(yīng)。

一個(gè)完整的中斷方式輸入程序設(shè):數(shù)據(jù)端口地址為240H使用8259A的IR3引腳申請(qǐng)中斷,中斷類型0BH8259A端口地址為20H,21H輸入以“回車”字符表示結(jié)束。4.4.3中斷方式應(yīng)用DATA SEGMENTIN_BUFFER DB 100DUP(?) ;接收緩沖區(qū),假設(shè)一次輸入不超過(guò)100字節(jié)IN_POINTER DW ? ;接收緩沖區(qū)指針DONE DB 0 ;完成標(biāo)志,=1表示輸入已完成DATA ENDS數(shù)據(jù)段定義CODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOV AX, SEGIN_INTR ;IN_INTR是中斷服務(wù)程序入口 MOV DS, AX LEA DX, IN_INTR MOV AX, 250BH ;AH中為功能號(hào),AL中為中斷類型 INT 21H ;裝載0BH中斷向量 MOV AX, DATA MOV DS, AX;裝載數(shù)據(jù)段段基址主程序(1) MOV IN_POINTER,OFFSETIN_BUFFER ;設(shè)置指針初值 MOV DONE, 0 ;設(shè)置完成標(biāo)志為“未完成” IN AL, 21H AND AL, 11110111B OUT 21H, AL ;清除IR3的屏蔽位 STI ;開放中斷W: CMP DONE,0 JZ W ;等待完成 ..... ;結(jié)束處理 MOV AX, 4C00H INT 21H主程序(2)IN_INTR PROC FAR PUSH DS ;保護(hù)現(xiàn)場(chǎng) PUSH AX PUSH BX PUSH DX STI ;開放中斷,允許響應(yīng)更高級(jí)中斷 MOV AX, DATA MOV DS, AX ;在中斷服務(wù)程序中重新裝載DS寄存器 MOV BX, IN_POINTER;裝載緩沖區(qū)指針 MOV DX, 240H

輸入中斷服務(wù)程序(1) IN AL, DX ;從輸入設(shè)備讀取一個(gè)數(shù)據(jù),同時(shí)清除中斷請(qǐng)求

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論