ch07微型計(jì)算機(jī)的中斷系統(tǒng)_第1頁(yè)
ch07微型計(jì)算機(jī)的中斷系統(tǒng)_第2頁(yè)
ch07微型計(jì)算機(jī)的中斷系統(tǒng)_第3頁(yè)
ch07微型計(jì)算機(jī)的中斷系統(tǒng)_第4頁(yè)
ch07微型計(jì)算機(jī)的中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩82頁(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)介

第七章微型計(jì)算機(jī)的中斷系統(tǒng)

7.1中斷系統(tǒng)的基本概念7.1.1中斷的基本概念所謂中斷,是指CPU執(zhí)行程序時(shí),突然有某個(gè)外部或內(nèi)部事件發(fā)生,請(qǐng)求CPU處理,CPU暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行處理該事件的服務(wù)程序,服務(wù)完畢后,CPU返回原來(lái)程序被中斷的地方繼續(xù)執(zhí)行。這個(gè)過(guò)程稱為中斷。

中斷服務(wù)程序1中斷服務(wù)程序2非預(yù)料事件1非預(yù)料事件

2CPU執(zhí)行流程斷點(diǎn)斷點(diǎn)1、基本概念中斷源:引起中斷發(fā)生的內(nèi)部或外部事件中斷類(lèi)型號(hào):每個(gè)中斷源唯一的一個(gè)編號(hào)斷點(diǎn):該程序中即將執(zhí)行,由于中斷沒(méi)有被執(zhí)行的那條指令的地址稱為中斷斷點(diǎn),簡(jiǎn)稱斷點(diǎn)。包括段地址和偏移地址。中斷服務(wù)程序:處理中斷事件的程序段2、中斷系統(tǒng)的功能中斷系統(tǒng)是指實(shí)現(xiàn)中斷功能的軟、硬件的集合。具有以下功能:能實(shí)現(xiàn)中斷響應(yīng)、中斷服務(wù)及中斷返回。能實(shí)現(xiàn)中斷優(yōu)先權(quán)排隊(duì)。能實(shí)現(xiàn)中斷嵌套。3、計(jì)算機(jī)系統(tǒng)的性能并行處理能力實(shí)現(xiàn)CPU和多個(gè)外設(shè)同時(shí)工作,提高CPU效率。實(shí)時(shí)處理能力計(jì)算機(jī)應(yīng)用于實(shí)時(shí)控制時(shí),對(duì)外部事件及時(shí)響應(yīng)故障處理能力及時(shí)處理故障,不影響其他程序的運(yùn)行。多任務(wù)運(yùn)行在操作系統(tǒng)的調(diào)度下,運(yùn)行多個(gè)任務(wù),任務(wù)間交替運(yùn)行(1)中斷請(qǐng)求:中斷源發(fā)出中斷請(qǐng)求信號(hào)(2)中斷判優(yōu):對(duì)申請(qǐng)中斷的中斷源進(jìn)行優(yōu)先級(jí)判別的過(guò)程稱為中斷判優(yōu)。(3)中斷響應(yīng):從請(qǐng)求有效到轉(zhuǎn)中斷服務(wù)程序入口地址這一段時(shí)間。實(shí)現(xiàn)程序的切換。(4)中斷服務(wù)(處理):中斷程序的主體。(5)中斷返回:使原來(lái)在中斷響應(yīng)過(guò)程中的斷點(diǎn)地址和標(biāo)志寄存器中的內(nèi)容,依次從堆棧中彈出,以便繼續(xù)執(zhí)行原來(lái)的程序。4、中斷過(guò)程(1)中斷請(qǐng)求可由內(nèi)部標(biāo)志或指令引起;也可由外部電路引起(2)中斷判優(yōu)有多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),CPU應(yīng)按照中斷源的輕重緩急按次序響應(yīng)中斷。先響應(yīng)優(yōu)先級(jí)高的請(qǐng)求,后響應(yīng)優(yōu)先級(jí)低的請(qǐng)求。軟件查詢優(yōu)先權(quán)排隊(duì)法執(zhí)行程序按照順序逐位查詢中斷請(qǐng)求寄存器的狀態(tài),查詢的順序決定了優(yōu)先級(jí)的高低硬件優(yōu)先權(quán)判別法菊花鏈法——將每個(gè)接口串連起來(lái),離CPU近的優(yōu)先級(jí)高“向量”優(yōu)先權(quán)排隊(duì)電路——由專(zhuān)用的中斷控制器管理優(yōu)先級(jí)(3)中斷響應(yīng)從CPU接收到中斷請(qǐng)求,到轉(zhuǎn)去執(zhí)行中斷服務(wù)程序之間的過(guò)程就是中斷響應(yīng)。CPU實(shí)現(xiàn)從當(dāng)前正在執(zhí)行的程序到中斷服務(wù)程序的切換由硬件完成關(guān)中斷、保存斷點(diǎn)、取中斷服務(wù)程序入口地址等一系列中斷響應(yīng)操作。(4)中斷服務(wù)(處理)1.保護(hù)現(xiàn)場(chǎng)

保護(hù)現(xiàn)場(chǎng)實(shí)質(zhì):將重要信息壓入堆棧。2.開(kāi)中斷

目的:開(kāi)放所有可屏蔽中斷,以允許高級(jí)中斷嵌套3.執(zhí)行中斷服務(wù)程序

中斷服務(wù)程序主體-中斷的目的。4.關(guān)中斷

目的:關(guān)中斷以確??煽坑行У鼗謴?fù)現(xiàn)場(chǎng)。5.恢復(fù)現(xiàn)場(chǎng) 恢復(fù)現(xiàn)場(chǎng)實(shí)質(zhì):將原來(lái)壓入堆棧中的內(nèi)容彈出來(lái)。7.28086CPU中斷系統(tǒng)指令中斷INTn異常中斷包括:失效異常陷井異常中止異常內(nèi)部異常中斷微處理器中斷邏輯INTRNMIIRQ0IRQ1IRQ2:IRQ15不可屏蔽中斷可屏蔽中斷外部中斷控制器外部硬件中斷7.2.18086中斷的分類(lèi)1、外部中斷不可屏蔽中斷(NMI):中斷類(lèi)型號(hào)為2號(hào)含義:不能用軟件來(lái)控制是否允許中斷的一種外部中斷。常見(jiàn)NMI中斷有:(1)電源掉電(2)存儲(chǔ)器檢驗(yàn)出錯(cuò)(3)總線奇偶錯(cuò)等??善帘沃袛?INTR):含義:可用軟件控制是否允許中斷的外部中斷。即STI使IF=1,允許中斷;CLI使IF=0,禁止中斷。常見(jiàn)INTR中斷有:

所有外部設(shè)備中斷如鍵盤(pán)、鼠標(biāo)、打印機(jī)、顯示器、聲卡、CD-ROM等。2、內(nèi)部中斷內(nèi)部中斷是由于8086內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷利用內(nèi)部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時(shí)異常情況的有效途徑例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用內(nèi)部中斷的中斷類(lèi)型號(hào)已定⑴除法錯(cuò)中斷在執(zhí)行除法指令時(shí),若除數(shù)為0或商超過(guò)了寄存器所能表達(dá)的范圍,則產(chǎn)生一個(gè)向量號(hào)為0的內(nèi)部中斷,稱為除法錯(cuò)中斷例如:movbl,0idivbl ;除數(shù)BL=0,產(chǎn)生除法錯(cuò)中斷movax,200hmovbl,1divbl ;商=200H,不能用AL表達(dá) ;產(chǎn)生除法錯(cuò)中斷⑵指令中斷在執(zhí)行中斷調(diào)用指令I(lǐng)NTn時(shí)產(chǎn)生的一個(gè)向量號(hào)為n(0~255)的內(nèi)部中斷,稱為指令中斷其中向量號(hào)為3的指令中斷比較特別(生成一個(gè)字節(jié)的指令代碼:11001100),常用于程序調(diào)試,被稱為斷點(diǎn)中斷例如:DEBUG.EXE調(diào)試程序的運(yùn)行命令G設(shè)置的斷點(diǎn),就是利用INT3指令實(shí)現(xiàn)的⑶溢出中斷在執(zhí)行溢出中斷指令I(lǐng)NTO時(shí),若溢出標(biāo)志OF為1,則產(chǎn)生一個(gè)向量號(hào)為4的內(nèi)部中斷,被稱為溢出中斷例如:movax,2000haddax,7000h ;2000H+7000H=9000H,溢出:OF=1into ;因?yàn)镺F=1,所以產(chǎn)生溢出中斷⑷單步中斷若單步中斷TF為1,則在每條指令執(zhí)行結(jié)束后產(chǎn)生一個(gè)向量號(hào)為1的內(nèi)部中斷,稱為單步中斷例如:DEBUG.EXE調(diào)試程序的單步命令T就利用單步中斷實(shí)現(xiàn)對(duì)程序的單步調(diào)試3、中斷優(yōu)先級(jí)高至低順序依次為:內(nèi)部中斷(除單步中斷)>NMI中斷>INTR中斷>單步中斷。除單步中斷外,任何內(nèi)部中斷的優(yōu)先級(jí)都高于外部中斷。7.2.2中斷向量表含義:

中斷服務(wù)程序的入口地址(CS:IP)組成及格式:

共4個(gè)字節(jié),段地址及偏移地址。高地址段地址高字節(jié)段地址低字節(jié)低地址偏移地址高字節(jié)偏移地址低字節(jié)段地址偏移地址返回1、中斷向量2、中斷向量表含義:

存放256個(gè)中斷向量的內(nèi)存區(qū)域。即存放中斷服務(wù)程序入口地址的內(nèi)存區(qū)域稱為中斷向量表。中斷向量表大小:1KB中斷向量表地址范圍:00000H~003FFH。中斷向量地址中斷類(lèi)型號(hào)n與其對(duì)應(yīng)的中斷向量存放起始地址之間的關(guān)系是: 起始地址=4×n;末地址=4×n+3 即中斷向量在4×n~4×n+3指示的內(nèi)存單元中。示例實(shí)方式下的中斷服務(wù)程序入口地址求法(例子)【例】假設(shè)在實(shí)地址方式下,內(nèi)存00140H到00147H中存放的數(shù)據(jù)如右圖所示,求51H號(hào)中斷的中斷服務(wù)程序入口地址。

解:(1)求中斷向量存放的首地址和末地址

由中斷類(lèi)型號(hào)51H可知中斷向量存放的 首地址=51H×4=144H(左移兩位方法) 末地址=51H×4+3=147H(2)從首末地址對(duì)應(yīng)的4個(gè)單元找出中斷向量,即00144H到00147H中內(nèi)容就是51H號(hào)中斷的中斷向量對(duì)照中斷向量組成及格式可知段地址=4540H,偏移地址=3430H,所以中斷服務(wù)程序入口地址為段地址×16+偏移地址=45400H+3430H=48830H求解中斷向量組成及格式返回3、中斷向量的設(shè)置方法(1)DOS功能調(diào)用(21H)保存中斷向量AH=35HAL=中斷類(lèi)型號(hào)INT21H返回時(shí)送ES:BX=中斷向量 MOVAL,NMOVAH,35HINT21H;取原中斷向量

PUSHESPUSHBX保存原中斷向量DOS功能調(diào)用(21H)設(shè)置中斷向量

AH=25HAL=中斷類(lèi)型號(hào)DS:DX=中斷向量INT21H

MOVAX,SEGINTRPROC MOVDS,AX MOVDX,OFFSETINTRPROC MOVAL,N MOVAH,25H INT21H3、中斷向量的設(shè)置方法(1)通過(guò)傳送類(lèi)指令直接設(shè)置中斷向量MOVAX,0MOVES,AXMOVBX,N*4MOVAX,OFFSETINTRPROCMOVES:[BX],AX;偏移地址(N*4)MOVAX,SEGINTRPROCMOVES:[BX+2],AX;段地址(N*4+2)……INTRPROC:

……IRET3、中斷向量的設(shè)置方法(2)7.2.38086對(duì)中斷的響應(yīng)CPU響應(yīng)中斷必須滿足如下條件:(1)CPU接收到中斷請(qǐng)求;(2)沒(méi)有DMA請(qǐng)求;(3)當(dāng)前指令執(zhí)行結(jié)束,(4)如果是INTR中斷請(qǐng)求,CPU還必須開(kāi)中斷,即中斷標(biāo)志IF=1。響應(yīng)條件滿足后,進(jìn)入中斷響應(yīng)周期,中斷響應(yīng)操作由硬件自動(dòng)完成。8086CPU對(duì)不同類(lèi)型的中斷響應(yīng)過(guò)程稍有不同,主要是獲取中斷類(lèi)型號(hào)的過(guò)程不同??善帘沃袛嗟捻憫?yīng)過(guò)程(1)處理器接到中斷申請(qǐng),處理完當(dāng)前指令即進(jìn)入響應(yīng)周期。(2)第二階段即中斷響應(yīng)周期,在其間CPU向外部中斷控制器發(fā)送兩個(gè)響應(yīng)脈沖信號(hào)INTA。 第一個(gè)響應(yīng)脈沖通知中斷控制器,已經(jīng)響應(yīng)外部中斷請(qǐng)求,讓中斷控制器提供中斷類(lèi)型號(hào)。第二個(gè)響應(yīng)脈沖,CPU取走中斷類(lèi)型號(hào)。(3)將標(biāo)志寄存器中的內(nèi)容壓入堆棧保護(hù),然后清IF和TF標(biāo)志,以禁止INTR引腳以及陷井和單步中斷。(4)將斷點(diǎn)地址壓入堆棧(CS:EIP或CS:IP)。 斷點(diǎn)地址:指中斷時(shí)CPU待執(zhí)行的下一條指令對(duì)應(yīng)的邏輯地址。

順序:先壓入斷點(diǎn)地址CS,后壓入偏移地址EIP(或IP)。(5)CPU得到中斷類(lèi)型號(hào)碼n后,通過(guò)中斷類(lèi)型號(hào)與中斷服務(wù)程序入口地址的關(guān)系找出該類(lèi)型對(duì)應(yīng)的段基地址和偏移地址,從而轉(zhuǎn)入中斷服務(wù)程序入口地址。完成中斷響應(yīng)任務(wù)。7.3中斷控制器8259A一、8259A主要功能:(1)8位可編程中斷控制器,又稱優(yōu)先級(jí)控制器(2)處理8級(jí)向量?jī)?yōu)先級(jí)中斷(3)可提供中斷類(lèi)型號(hào)(4)8259A芯片級(jí)聯(lián)組成強(qiáng)大的中斷管理系統(tǒng)(多至64級(jí)外部中斷)。(5)優(yōu)先級(jí)方式可編程(6)多級(jí)中斷管理7.3.18259A的引腳信號(hào)與CPU相連的引腳D7~D0為8位雙向的數(shù)據(jù)線A0:端口選擇信號(hào)CS:片選信號(hào)RD和WR:讀/寫(xiě)控制信號(hào)INTA:中斷響應(yīng)輸入信號(hào)INT:中斷請(qǐng)求輸出信號(hào)與中斷源相連的引腳IRi:8個(gè)中斷源中斷請(qǐng)求端級(jí)聯(lián)擴(kuò)展引腳CAS0~CAS2級(jí)聯(lián)信號(hào)SP/EN:從片/緩沖允許控制(1)非緩沖時(shí)為輸入:SP:1=主片,0=從片(2)緩沖時(shí)為輸出:EN:1=CPU寫(xiě),0=CPU讀7.3.28259A的內(nèi)部結(jié)構(gòu)中斷請(qǐng)求寄存器IRR功能:記錄外部中斷源的中斷申請(qǐng)的狀態(tài)。狀態(tài):1=對(duì)應(yīng)引腳有中斷請(qǐng)求且還未被響應(yīng) 0=對(duì)應(yīng)引腳無(wú)中斷請(qǐng)求或有但已經(jīng)被響應(yīng)D7D6D5D4D3D2D1D0IRR7IRR6IRR5IRR4IRR3IRR2IRR1IRR0IR7IR6IR5IR4IR3IR2IR1IR0寄存器位引腳中斷優(yōu)先權(quán)分辨器PR優(yōu)先權(quán)分辨器PR用來(lái)確定存放在IRR中 各個(gè)中斷請(qǐng)求信號(hào)對(duì)應(yīng)中斷源的優(yōu)先級(jí)。 并總是選出當(dāng)前最高優(yōu)先中斷源的中斷申請(qǐng)通知控制邏輯,以便控制邏輯發(fā)送中斷請(qǐng)求信號(hào)INT給CPU。中斷服務(wù)寄存器ISR功能:記錄外部中斷源的中斷申請(qǐng)被服務(wù)的狀態(tài)。狀態(tài):1=對(duì)應(yīng)引腳的中斷請(qǐng)求已被響應(yīng)(服務(wù))且服務(wù)還沒(méi)有結(jié)束。 0=對(duì)應(yīng)引腳的中斷請(qǐng)求未被響應(yīng)。D7D6D5D4D3D2D1D0ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR0IR7IR6IR5IR4IR3IR2IR1IR0寄存器位引腳中斷屏蔽寄存器IMR功能: 設(shè)置外部中斷源的中斷屏蔽狀態(tài)。狀態(tài): 1=對(duì)應(yīng)引腳的中斷被屏蔽。 0=對(duì)應(yīng)引腳的中斷未被屏蔽。注意: 只有IMRi相應(yīng)位為0且IF=1,CPU才有可能響應(yīng)可屏蔽中斷。D7D6D5D4D3D2D1D0IMR7IMR6IMR5IMR4IMR3IMR2IMR1IMR0IR7IR6IR5IR4IR3IR2IR1IR0寄存器位引腳數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是一個(gè)三態(tài)、雙向的8位緩沖器,是8259A與CPU系統(tǒng)數(shù)據(jù)總線的接口。數(shù)據(jù)總線緩沖器的主要功能有:(1)通過(guò)數(shù)據(jù)總線緩沖器,CPU向8259A內(nèi)部發(fā)送

命令。(2)CPU接收8259A狀態(tài)信息。(3)在中斷響應(yīng)周期,CPU從中獲得中斷類(lèi)型號(hào)。讀/寫(xiě)邏輯接收CPU送來(lái)的讀/寫(xiě)控制信號(hào)、片選信 號(hào)以及地址選擇信號(hào),對(duì)內(nèi)部各個(gè)寄存器 進(jìn)行讀寫(xiě)操作。級(jí)聯(lián)緩沖/比較器級(jí)聯(lián)緩沖/比較器在級(jí)聯(lián)方式的主從結(jié)構(gòu) 中(兩個(gè)以上的8259A組成的系統(tǒng)),用 來(lái)存放和比較系統(tǒng)中各8259A的從設(shè)備標(biāo) 志(ID)??刂七壿嬁刂七壿嬍强刂?259A內(nèi)部各個(gè)部件的主要邏輯電路。主要功能包括:(1)根據(jù)CPU對(duì)8259A編程設(shè)定的工作方式來(lái)產(chǎn)生內(nèi)部控制信號(hào)。(2)如果中斷請(qǐng)求寄存器IRR有未被屏蔽的位,則控制邏輯對(duì)應(yīng)于當(dāng)時(shí)最高優(yōu)先的中斷源,向CPU發(fā)中斷請(qǐng)求信號(hào)INT。(3)接收CPU送來(lái)的中斷響應(yīng)信號(hào),并允許中斷服務(wù)寄存器ISR的相應(yīng)位(ISRi)置位。(4)控制發(fā)出相應(yīng)的中斷類(lèi)型號(hào),以供CPU讀取。①

中斷申請(qǐng)寄存器IRR鎖存外部的中斷申請(qǐng)。若IR0~IR7引腳上有中斷申請(qǐng),則將IRR相應(yīng)位置1IORIOW總線數(shù)據(jù)線D0~D7INTAA0片選譯碼A5~A9CSA0RD

INTAWRINTD0~D7

ICW1芯片控制

ICW2中斷類(lèi)型號(hào)

ICW3

主從片關(guān)系

ICW4方式控制00000000

ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1

中斷屏蔽寄存器IMR

00

OCW2優(yōu)先級(jí)、發(fā)EOI

OCW3特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器00000000

10010100INTR118259A工作過(guò)程②中斷屏蔽寄存器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屏蔽。IORIOW總線數(shù)據(jù)線D0~D7INTAA0片選譯碼A5~A9CSA0RD

INTAWRINTD0~D7

ICW1芯片控制

ICW2中斷類(lèi)型號(hào)

ICW3

主從片關(guān)系

ICW4方式控制00000000

ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1

中斷屏蔽寄存器IMR

00

OCW2優(yōu)先級(jí)、發(fā)EOI

OCW3特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器10000001

10010100INTR③

當(dāng)前中斷服務(wù)寄存器ISR記錄CPU正在響應(yīng)的中斷。ISR中的某位為1,表示CPU正在響應(yīng)此級(jí)中斷,即正在執(zhí)行此中斷源的中斷子程;ISR中的某位為0,表示CPU沒(méi)有或已響應(yīng)完此級(jí)中斷,即不在執(zhí)行此中斷源的中斷子程IORIOW總線數(shù)據(jù)線D0~D7INTAA0片選譯碼A5~A9CSA0RD

INTAWRINTD0~D7

ICW1芯片控制

ICW2中斷類(lèi)型號(hào)

ICW3

主從片關(guān)系

ICW4方式控制001

00000

ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1

中斷屏蔽寄存器IMR

00

OCW2優(yōu)先級(jí)、發(fā)EOI

OCW3特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器10000001

10010100INTR④優(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í)高,則通過(guò)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ù)線D0~D7INTAA0片選譯碼A5~A9CSA0RD

INTAWRINTD0~D7

ICW1芯片控制

ICW2中斷類(lèi)型號(hào)

ICW3

主從片關(guān)系

ICW4方式控制001

00000

ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1

中斷屏蔽寄存器IMR

00

OCW2優(yōu)先級(jí)、發(fā)EOI

OCW3特殊屏蔽設(shè)置PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器10000001

10010100INTR(2)若發(fā)中斷申請(qǐng)信號(hào),且CPU響應(yīng),則在CPU中斷響應(yīng)周期送出中斷類(lèi)型號(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)周期:通過(guò)

INTA引腳發(fā)出兩個(gè)負(fù)脈沖信號(hào),從數(shù)據(jù)總線上獲取中斷類(lèi)型號(hào),進(jìn)入中斷響應(yīng)的過(guò)程。8259A的中斷響應(yīng)周期程CAS0~CAS2D0~D7SP/ENIR0~I(xiàn)R7CPU響應(yīng)周期8259A工作波形INT第一個(gè)周期T1T2T3T4ALECLK

第二個(gè)周期T1T2T3T4第一個(gè)前保持為高電平

INTALOCK關(guān)于8259A思考題1.什么情況下IRR=FFH?2.什么情況下ISR=FFH?3.IMR=FFH,計(jì)算機(jī)系統(tǒng)會(huì)怎樣?4.IRR=0AH,ISR=0AH是否可能?參考答案:1.八個(gè)中斷源都有請(qǐng)求,但均未被CPU響應(yīng)。2.從最低到最高級(jí)優(yōu)先級(jí)依次進(jìn)入中斷服務(wù)程序,但都沒(méi)有結(jié)束中斷處理。(8級(jí)中斷嵌套)3.系統(tǒng)將處于癱瘓狀態(tài)(所有硬件中斷被禁止)。4.有可能,ISR=0AH表示IR1和IR3對(duì)應(yīng)的中斷請(qǐng)求已被響應(yīng),但還沒(méi)有結(jié)束,此時(shí)IR1和IR3又都重新有申請(qǐng),但還未被響應(yīng)。7.3.3工作方式優(yōu)先級(jí)的方式屏蔽中斷源的方式結(jié)束中斷處理的方式連接系統(tǒng)總線的方式中斷請(qǐng)求信號(hào)方式優(yōu)先級(jí)的方式(4種)全嵌套方式特殊全嵌套方式優(yōu)先級(jí)自動(dòng)循環(huán)方式優(yōu)先級(jí)特殊循環(huán)方式全嵌套方式僅允許高一級(jí)中斷進(jìn)入嵌套。從高到低優(yōu)先級(jí)依次為IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。特殊全嵌套方式允許高一級(jí),也允許同級(jí)中斷進(jìn)入嵌套。從高到低優(yōu)先級(jí)依次為IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。用于級(jí)聯(lián)方式的主片優(yōu)先級(jí)自動(dòng)循環(huán)方式在這種方式下,中斷源的優(yōu)先級(jí)是變化的,當(dāng)一個(gè)設(shè)備得到中斷服務(wù)以后,它的優(yōu)先級(jí)自動(dòng)降為最低優(yōu)先。在初始狀態(tài)下的優(yōu)先級(jí)為IR0>IR1>...>IR7;IR0得到服務(wù)后下一次優(yōu)先級(jí)為IR1>IR2>....>IR6>IR7>IR0,依次類(lèi)推。優(yōu)先級(jí)特殊循環(huán)方式與優(yōu)先級(jí)自動(dòng)循環(huán)方式只有一點(diǎn)區(qū)別:

初始最優(yōu)者可由程序設(shè)定,可任意指定一個(gè)初始最高優(yōu)先級(jí),以后再循環(huán)優(yōu)先。屏蔽中斷源的方式普通屏蔽方式:設(shè)置8259A內(nèi)部中斷屏蔽寄存器IMR的相應(yīng)位為1(通過(guò)OCW1),即可屏蔽對(duì)應(yīng)中斷源的中斷申請(qǐng)。特殊屏蔽方式:先寫(xiě)入特殊屏蔽命令字OCW3,然后再寫(xiě)屏蔽命令字OCW1。使當(dāng)前中斷服務(wù)寄存器ISR的相應(yīng)位自動(dòng)復(fù)位。這就只屏蔽了當(dāng)前正在處理的這級(jí)中斷。=屏蔽該中斷并清中斷服務(wù)位。結(jié)束中斷處理的方式自動(dòng)結(jié)束方式:系統(tǒng)一旦進(jìn)入中斷服務(wù)程序,8259A就自動(dòng)將當(dāng)前中斷服務(wù)寄存器相應(yīng)位清0。(在第二個(gè)中斷響應(yīng)脈沖)非自動(dòng)結(jié)束方式:在中斷服務(wù)程序結(jié)束,返回主程序之前發(fā)一條中斷結(jié)束命令,使8259A的當(dāng)前最高優(yōu)先級(jí)的中斷對(duì)應(yīng)的ISR復(fù)位。連接系統(tǒng)總線的方式緩沖方式:

一般在多片8259A級(jí)聯(lián)系統(tǒng)中,8259A通過(guò)總線驅(qū)動(dòng)器與系統(tǒng)總線相連,而不是8259A直接與系統(tǒng)總線相連,這就是緩沖方式。非緩沖方式:

當(dāng)系統(tǒng)只有一片8259A或少量幾片8259A時(shí),一般將它直接與數(shù)據(jù)總線相連。這就是所謂的非緩沖方式。中斷請(qǐng)求信號(hào)方式邊沿觸發(fā)方式:

在邊沿觸發(fā)方式下,8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào),且該信號(hào)可以一直保持為高電平。為了防止干擾,其高電平也應(yīng)有一定的寬度。電平觸發(fā)方式:

8259A把中斷請(qǐng)求輸入端出現(xiàn)的高電平作為中斷請(qǐng)求信號(hào)。但應(yīng)注意的是,當(dāng)中斷請(qǐng)求被響應(yīng)后,輸入端必須立即撤消高電平,以免引起再一次中斷。7.3.58259A的初始化命令字和初始化編程在8259A內(nèi)部有兩組命令寄存器,一組是在8259A初始化時(shí)設(shè)定的,叫初始化命令字ICW,另一組在8259A初始化后使用時(shí)寫(xiě)入,叫操作命令字OCW。8259A有4個(gè)初始化命令寄存器ICW1~ICW4。8259A開(kāi)始工作前必須寫(xiě)入初始命令字,使它按預(yù)定的工作方式工作。

芯片初始化命令字ICW1A7A6A51LTIMADISNGLIC4X86不用特征位0=不用ICW41=要ICW4X86不用0=邊沿觸發(fā)1=電平觸發(fā)0=多片1=單片寫(xiě)入A0=0的端口返回中斷類(lèi)型初始化命令字ICW2T7~T3決定中斷類(lèi)型號(hào)(D2~D0任意)8個(gè)中斷源具有連續(xù)的中斷類(lèi)型號(hào)寫(xiě)入A0=1的端口D7D6D5D4D3D2D1D0T7T6T5T4T3×××返回主/從片初始化命令字ICW3

——主片ICW3IRi=1,指示8259的引腳IRi處接一從片寫(xiě)入A0=1的端口D7D6D5D4D3D2D1D0IR7IR6IR5IR4IR3IR2IR1IR0返回主/從片初始化命令字ICW3

——從片ICW3ID2,ID1,ID0編碼決定從片的INT接主片寫(xiě)入A0=1的端口D7D6D5D4D3D2D1D000000ID2ID1ID0返回編碼決定IRi返回控制初始化命令字ICW4各位含義:μPM:CPU類(lèi)型,0=8080/8085,1=80X86。AEOI:自動(dòng)結(jié)束中斷方式,AEOI=1有效。M/S:主/從片選擇,1=主片,0=從片。BUF:緩沖方式。BUF=1工作在緩沖方式。SFNM:特殊全嵌套方式。SFNM=1,特殊全嵌套方式。寫(xiě)入A0=1的端口D7D6D5D4D3D2D1D0000SFNMBUFM/SAEOIμPM返回8259A的

初始化編程對(duì)8259A進(jìn)行初始化編程就是向8259A寫(xiě)入兩到四個(gè)初始化命令字。流程如圖。初始化編程任務(wù):1.設(shè)定中斷請(qǐng)求信號(hào)的有效形式。2.設(shè)定8259A是單片還是多片級(jí)聯(lián)方式。3.設(shè)置中斷類(lèi)型號(hào)。4.設(shè)置優(yōu)先排隊(duì)規(guī)則。5.設(shè)定中斷結(jié)束時(shí)的操作原則。返回8259A初始化編程實(shí)例(1)【例7-1】IBM-PC微機(jī)中,8259A的端口地址分別為20H和21H,工作方式如下:?jiǎn)纹绞?,?qǐng)求信號(hào)采用邊沿觸發(fā)方式,優(yōu)先級(jí)采用完全嵌套方式,非自動(dòng)結(jié)束中斷,與系統(tǒng)采用非緩沖方式連接。中斷類(lèi)型號(hào)為08H~0FH。則8259A的初始化程序段如下:MOV AL,00010011B;ICW1:邊沿觸發(fā),單片系統(tǒng),需要ICW4OUT 20H,ALMOV AL,00001000B ;ICW2:類(lèi)型號(hào)從08H開(kāi)始OUT 21H,ALMOV AL,00000001B ;ICW4:完全嵌套方式,非緩沖,非自動(dòng)結(jié)束OUT 21H,AL8259A初始化編程實(shí)例(2)【例7-2】IBMPC/AT機(jī)中使用兩片8259A管理中斷,硬件連線如圖7?13所示。主片的要求是:●

主片的IR2接從片的INT端?!裰髌袛嘈盘?hào)為邊沿觸發(fā)方式?!窦?jí)聯(lián)但無(wú)緩沖?!衿鹗贾袛囝?lèi)型號(hào)為08H(IR0)?!裾5闹袛嘟Y(jié)束,選擇特殊的全嵌套方式。● 級(jí)聯(lián)方式要ICW3和ICW4。從片的要求是:●從片的INT接主片的IR2?!駨钠鹗贾袛囝?lèi)型號(hào)為70H?!窦?jí)聯(lián)方式要ICW3和ICW4。返回返回主片8259A初始化MOVAL,00010001B ;ICW1:邊沿,ICW4,ICW3OUT20H,AL ;寫(xiě)入ICW1(A0=0地址端口)MOVAL,00001000B ;ICW2:IR0中斷類(lèi)型號(hào)為08HOUT21H,AL ;寫(xiě)入ICW2(A0=1地址端口)MOVAL,00000100B ;ICW3:主片IR2接從片INTOUT21H,AL ;寫(xiě)入ICW3(A0=1地址端口)MOVAL,00010001B ;ICW4:非緩沖,正常中斷結(jié)束 ;特殊全嵌套方式,主片OUT21H,AL

;寫(xiě)入ICW4(A0=1地址端口)返回從片8259A初始化MOVAL,00010001B ;ICW1:邊沿,ICW4,ICW3OUT0A0H,AL ;寫(xiě)入ICW1MOVAL,01110000B ;ICW2:IR0中斷類(lèi)型號(hào)為70HOUT0A1H,AL ;寫(xiě)入ICW2

MOVAL,00000010B ;ICW3:從片接主片的IR2OUT0A1H,AL ;寫(xiě)入ICW3MOVAL,00000001B ;ICW4:非緩沖,正常結(jié)束,

;非特殊全嵌套方式,從片OUT0A1H,AL ;寫(xiě)入ICW4返回7.3.68259A的操作命令字及應(yīng)用中斷屏蔽命令字OCW1控制中斷和優(yōu)先級(jí)循環(huán)的操作命令字OCW2屏蔽查詢狀態(tài)命令字OCW3返回中斷屏蔽命令字OCW1(IMR)

Mi=1表示對(duì)應(yīng)的IRi中斷源被屏蔽,Mi=0則取消屏蔽(i=0,1,2,3,4,5,6,7)。要求寫(xiě)入8259A的A0=1的端口D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M0返回OCW1的應(yīng)用某系統(tǒng)中有3個(gè)中斷源,分別連接到8259A的IR0、IR2和IR3上。若系統(tǒng)中8259A的偶地址為80H,奇地址為81H。則屏蔽字為:MOVAL,11110010B ;為0的位允許中斷,為1的位中斷被屏蔽OUT81H,AL若系統(tǒng)中再增加一個(gè)IR1中斷請(qǐng)求IN AL,81HANDAL,11111101B ;只將OCW1中的D1位清“0”O(jiān)UT81H,AL當(dāng)IR1的所有中斷全部完成后IN AL,81HOR AL,00000010B ;只將OCW1中的D1位置“1”,OUT81H,AL控制中斷和優(yōu)先級(jí)循環(huán)的操作命令字OCW2

R:優(yōu)先級(jí)循環(huán)位,R=1為循環(huán)優(yōu)先。SL:指定IRi級(jí)別位。SL=1時(shí)L2~L0有效。EOI:中斷結(jié)束命令位,1=中斷結(jié)束L2~L0:編碼指定IRi注意:要求寫(xiě)入8259A的A0=0的端口D7D6D5D4D3D2D1D0RSLEOI00L2L1L0返回屏蔽查詢狀態(tài)命令字OCW3

各位含義: ESMM:特殊屏蔽允許,1有效。 SMM:特殊屏蔽位,1有效。 P:管理查詢方式。當(dāng)P=1時(shí)可用作查詢方式

RR:讀寄存器命令位,RR=1讀寄存器IRR和ISR,RR=0禁止讀這兩個(gè)寄存器的內(nèi)容。

RIS:寄存器選擇位,RR=1時(shí)且RIS=0讀IRR寄存器,RIS=1讀ISR寄存器的內(nèi)容。要求寫(xiě)入8259A的A0=0的端口D7D6D5D4D3D2D1D00ESMMSMM01PRRRIS返回8259的查詢方式除了在中斷方式外,8259A可工作在查詢方式。查詢方式工作如下:1)CLI關(guān)中斷2)寫(xiě)OCW3使P=1(命令字=0CH)進(jìn)入查詢方式3)讀取查詢狀態(tài)(A0=0端口)判斷I值: I=1有中斷,W2W1W0為當(dāng)前最高優(yōu)先級(jí)的編碼。I----W2W1W0D7D6D5D4D3D2D1D0返回操作命令編程實(shí)例MOVAL,11110000B;主片OCW1,屏蔽IR4,5,6,7OUT21H,AL ;寫(xiě)入主片的OCW1MOVAL,10000001B;從片OCW1:屏蔽IR0和IR7OUT0A1H,AL;寫(xiě)入從片的OCW1MOVAL,00100000B;OCW2:結(jié)束最高中斷,清ISR相應(yīng)

;位,即發(fā)普通中斷結(jié)束命令OUT0A0H,AL ;先向從片發(fā)中斷結(jié)束命令OUT20H,AL ;后向主片發(fā)中斷結(jié)束命令返回8259A狀態(tài)的讀取中斷屏蔽寄存器IMR的讀取

讀取IMR只需用一條IN指令 IN AL,21H ;讀主片IMR(A0=1端口)中斷請(qǐng)求寄存器IRR的讀取

MOVAL,0AH ;發(fā)讀取IRR的OCW3命令字 OUT20H,AL ;寫(xiě)入A=0的偶地址端口 IN AL,20H ;讀IRR內(nèi)容到AL中中斷服務(wù)寄存器ISR的讀取

MOVAL,0BH ;發(fā)讀取ISR的OCW3命令 OUT20H,AL ;命令字寫(xiě)入A0=0的端口 IN AL,20H ;讀ISR內(nèi)容到AL中返回7.4 中斷應(yīng)用舉例【例7-3】假設(shè)某應(yīng)用系統(tǒng)通過(guò)一組8位開(kāi)關(guān)的狀態(tài)控制8個(gè)發(fā)光二極管,某開(kāi)關(guān)閉合對(duì)應(yīng)的發(fā)光二極管點(diǎn)亮。要求8個(gè)開(kāi)關(guān)的狀態(tài)全部設(shè)置完成后,才能點(diǎn)亮對(duì)應(yīng)的發(fā)光二極管,當(dāng)開(kāi)關(guān)的數(shù)據(jù)為0FFH時(shí),程序結(jié)束。完成軟硬件設(shè)計(jì)。1、硬件電路設(shè)計(jì)開(kāi)關(guān)和發(fā)光二極管是最基本的輸入輸出設(shè)備,開(kāi)關(guān)可直接通過(guò)三態(tài)緩沖器74LS244與CPU的數(shù)據(jù)總線相連,發(fā)光二極管通過(guò)鎖存器74LS273與總線相連。要求8個(gè)開(kāi)關(guān)的狀態(tài)全部設(shè)置完成后,才能點(diǎn)亮對(duì)應(yīng)的發(fā)光

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論