微機原理與接口技術(shù)第七章guyu_第1頁
微機原理與接口技術(shù)第七章guyu_第2頁
微機原理與接口技術(shù)第七章guyu_第3頁
微機原理與接口技術(shù)第七章guyu_第4頁
微機原理與接口技術(shù)第七章guyu_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微型計算機原理與接口技術(shù)第七章杭州電子科技大學(xué)自動化學(xué)院2/4/2023第七章微型計算機中斷系統(tǒng)概述中斷處理過程中斷優(yōu)先級和中斷向量可編程中斷控制器內(nèi)容提要2/4/20232 當CPU正常運行程序時,由于微處理器內(nèi)部事件或外設(shè)請求,引起CPU中斷正在運行的程序,轉(zhuǎn)去執(zhí)行請求中斷的外設(shè)(或內(nèi)部事件)的中斷服務(wù)子程序,中斷服務(wù)程序執(zhí)行完畢,再返回被中止的程序,這一過程稱為中斷。

1.中斷源內(nèi)部中斷,外部中斷

一、中斷概念

2.中斷響應(yīng)中斷請求何時發(fā)生是隨機的。CPU在每條指令的最后一個T周期去檢測INTR引腳,CPU一旦檢測到有中斷請求,在滿足中斷響應(yīng)的條件下(IF=1),CPU響應(yīng)中斷,向外設(shè)發(fā)出INTA中斷響應(yīng)信號。并保護斷點(當前CS,IP和PSW值入棧),然后轉(zhuǎn)向中斷服務(wù)程序。中斷服務(wù)程序執(zhí)行完畢,CPU返回原執(zhí)行程序的中斷處,繼續(xù)向下執(zhí)行,稱為中斷返回?!?-1概述2/4/20233

3.中斷向量表

CPU響應(yīng)中斷后,必須由中斷源提供地址信息,引導(dǎo)程序進入中斷服務(wù)子程序,這些中斷服務(wù)程序的入口地址存放在中斷向量表中。內(nèi)存中專門開辟一個區(qū)域,存放中斷向量表(也稱中斷矢量表)。

4.中斷優(yōu)先級當有多個中斷源請求中斷時,中斷系統(tǒng)判別中斷申請的優(yōu)先級,CPU響應(yīng)優(yōu)先級高的中斷,掛起優(yōu)先級低的中斷。當CPU在運行中斷服務(wù)子程序時,又有新的更高優(yōu)先級的中斷申請進入,CPU要掛起原中斷進入更高級的中斷服務(wù)子程序,實現(xiàn)中斷嵌套功能?!?-1概述——中斷概念2/4/20234

5.中斷屏蔽當中斷源申請中斷時,CPU可以由軟件設(shè)置,使之不能響應(yīng),稱為中斷屏蔽。對于各種計算機系統(tǒng),中斷系統(tǒng)的構(gòu)成差別很大,但都具有基本功能:⑴能實現(xiàn)中斷響應(yīng)、中斷服務(wù)、中斷返回、中斷屏蔽;⑵能實現(xiàn)中斷優(yōu)先級排隊;⑶能實現(xiàn)中斷嵌套?!?-1概述——中斷概念2/4/20235

二、中斷分類

8086/8088有一個強有力的中斷系統(tǒng),可以處理256種不同的中斷。以產(chǎn)生中斷的方法來分類,256種中斷可以分為兩大類:外部中斷和內(nèi)部中斷。外部中斷也稱硬件中斷,是由外部的硬件產(chǎn)生的,硬件中斷又分成不可屏蔽中斷和可屏蔽中斷。

§7-1概述——中斷分類2/4/20236§7-1概述——中斷分類外部中斷(硬件中斷)內(nèi)部中斷:(引起中斷的原因)中斷源引腳NMI引入(馬上響應(yīng))(處理如系統(tǒng)掉電等重大故障)引腳INTR引入IF=1(允許響應(yīng))IF=0(不允許響應(yīng))意外情況如除法運算出錯、溢出錯誤等;調(diào)試;中斷指令I(lǐng)NTn;2/4/20237

NMIINTR可屏蔽中斷請求圖7-18086/8088中斷源§7-1概述——中斷分類2/4/20238

1.CPU響應(yīng)可屏蔽中斷的四個條件

外設(shè)向CPU發(fā)出中斷請求的時間是隨機的,而CPU在每條指令的最后一個機器周期的最后一個T狀態(tài)去采樣中斷請求輸入線INTR,當CPU在INTR引腳上接收到一個有效的中斷請求信號,而CPU內(nèi)部中斷允許觸發(fā)器是開放的(開中斷可用指令STI來實現(xiàn)),且中斷接口電路中的中斷屏蔽觸發(fā)器未被屏蔽,則在當前指令執(zhí)行完后CPU響應(yīng)中斷。

外設(shè)提出中斷申請本中斷位未被屏蔽中斷允許中斷優(yōu)先級最高

可屏蔽中斷處理的過程一般分成以下幾步:中斷請求;中斷響應(yīng);保護現(xiàn)場;轉(zhuǎn)入執(zhí)行中斷服務(wù)子程序;恢復(fù)現(xiàn)場和中斷返回。

§7-2中斷處理過程——CPU響應(yīng)中斷過程2/4/20239

2.CPU響應(yīng)可屏蔽中斷的過程從數(shù)據(jù)總線上讀取中斷類型號,將其存入內(nèi)部暫存器。將標志寄存器PSW的值入錢。將PSW中的中斷允許標志IF和單步標志TF清0,以屏蔽外部其它中斷請求,避免CPU以單步方式執(zhí)行中斷處理子程字。

保護斷點,將當前指令下面一條指令的段地址CS和指令指針I(yè)P的值入棧,中斷處理完畢后,能正確返回到主程序繼續(xù)執(zhí)行。根據(jù)中斷類型號到中斷向量表中找到中斷向量,轉(zhuǎn)入相應(yīng)中斷服務(wù)子程序。中斷處理程序結(jié)束以后,從堆棧中依次彈出IP、CS和PSW,然后返回主程序斷點處,繼續(xù)執(zhí)行原來的程序。

§7-2中斷處理過程——CPU響應(yīng)中斷過程2/4/202310可屏蔽CPU響應(yīng)中斷過程取下一條指令有中斷請求指令結(jié)束響應(yīng)中斷關(guān)中斷保護斷點尋找中斷源執(zhí)行指令轉(zhuǎn)中斷服務(wù)程序保護現(xiàn)場中斷服務(wù)恢復(fù)現(xiàn)場開中斷返回否是是否圖7-2可屏蔽中斷處理流程圖§7-2中斷處理過程——CPU響應(yīng)中斷過程2/4/202311

3.CPU須執(zhí)行完下一條指令才響應(yīng)可屏蔽中斷的情況發(fā)出中斷請求時,CPU正在執(zhí)行封鎖指令

。執(zhí)行向段寄存器傳送數(shù)據(jù)的指令(MOV和POP指令)

。遇STI和IRET指令。注意:當遇到等待指令或串操作指令時,允許在指令執(zhí)行過程中進入中斷,但在一個基本操作完成后響應(yīng)中斷。

4.CPU響應(yīng)不可屏蔽中斷的過程不必判斷IF是否為1,也不是由外設(shè)接口給出中斷類型號,從NMI引腳進入的中斷請求規(guī)定為類型2。在運行中斷子程序過程中,若NMI上有不可屏蔽中斷請求進入,CPU仍能響應(yīng)。

§7-2中斷處理過程——CPU響應(yīng)中斷過程2/4/202312

5.軟件中斷響應(yīng)過程軟件中斷由程序設(shè)定,沒有隨機性,它不受中斷允許標志位IF的影響,中斷類型號由指令I(lǐng)NTn中的n決定。正在執(zhí)行軟件中斷時,如果有不可屏蔽中斷請求,就會在當前指令執(zhí)行完后立即予以響應(yīng)。如果有可屏蔽中斷請求,并且IF=1,也會在當前指令執(zhí)行完后予以響應(yīng)?!?-2中斷處理過程——CPU響應(yīng)中斷過程2/4/202313

二、中斷向量表

中斷向量表又稱中斷服務(wù)程序入口地址表。8086/8088系統(tǒng)允許處理256種類型的中斷,對應(yīng)類型號為0~FFH。在存儲器的00000H~003FFH,占1K字節(jié)空間,用作存放中斷向量。每個類型號占4個字節(jié),高2個字節(jié)存放中斷入口地址的段地址,低2個字節(jié)存放段內(nèi)偏移地址。各個中斷處理程序的段地址和段內(nèi)偏移地址按中斷類型號順序存放在中斷向量表中。因此由中斷類型號n×4即可得到相應(yīng)中斷向量的地址,取4n和4n十1單元中的內(nèi)容(中斷入口段內(nèi)偏移地址)裝入指令指針寄存器IP,取4n十2和4n十3單元中內(nèi)容(中斷入口段地址)裝入代碼段寄存器CS,即可轉(zhuǎn)入中斷處理程序。1.中斷向量表§7-2中斷處理過程——中斷向量表2/4/202314類型255中斷入口……類型32中斷入口類型31中斷入口……類型5中斷入口類型4中斷入口(溢出中斷)類型3中斷入口(斷點中斷)類型2中斷入口(NMI)類型1中斷入口(單步中斷)類型0中斷入口(除法出錯)IPCSIPCSIPCS03F07C08000000400800C010014專用中斷系統(tǒng)使用供用戶使用(224個)(5個)(27個)圖7-48086/8088中斷向量表§7-2中斷處理過程——中斷向量表2/4/202315

2.中斷向量(中斷入口地址)的設(shè)置有兩種方法可為中斷類型號n設(shè)置中斷向量,即將中斷服務(wù)程序的入口地址置入中斷類型號n所對應(yīng)的中斷向量表中。一種方法用指令來設(shè)置,另一種方法利用DOS功能調(diào)用來設(shè)置。

用指令來設(shè)置中斷服務(wù)程序的入口地址表

利用DOS功能調(diào)用來設(shè)置中斷服務(wù)程序的入口地表§7-2中斷處理過程——中斷向量表2/4/202316方法一:MOVAX,0;主程序中設(shè)置MOVES,AXMOVDI,N×4;中斷類型號×4MOVAX,

OFFSETINTRAD;送中斷子程序的偏移地址至AXCLDSTOSW;偏移地址送到[4n],[4n+1]單元MOVAX,

SEGINTRADSTOSW;段地址送到[4n+2],[4n+3]單元STI;開中斷……INTRAD:……;中斷服務(wù)子程序IRET用指令來設(shè)置中斷服務(wù)程序的入口地址表§7-2中斷處理過程——中斷向量表2/4/202317方法二:MOVAX,0;主程序中設(shè)置MOVES,AXMOVBX,N×4;中斷類型號×4MOVAX,OFFSET

INTRAD;置偏移地址MOVES:WORDPTR[BX],AXMOVAX,SEGINTRAD;置段地址送MOVES:WORDPTR[BX+2],AXSTI;開中斷……INTRAD:……;中斷服務(wù)子程序IRET§7-2中斷處理過程——中斷向量表2/4/202318設(shè)置中斷向量:把由AL中指定中斷類型號的中斷向量DS:DX,放置在中斷向量表中。預(yù)置:AL=中斷類型號DS:DX=中斷服務(wù)程序入口地址

AH=25H執(zhí)行:INT21H

利用DOS功能調(diào)用來設(shè)置中斷服務(wù)程序的入口地址表取中斷向量:把由AL中指定書斷類型號的中斷向量.預(yù)置:AL=中斷類型號

AH=35H執(zhí)行:INT21H返回:

ES:BX=中斷服務(wù)程序入口地址§7-2中斷處理過程——中斷向量表2/4/202319MOVAL,N;取中斷向量到ES:BXMOVAH,35HINT21HPUSHES;存原中斷向量PUSHBXPUSHDS;下面要用到DSMOVAX,SEGINTRAD;設(shè)置中斷向量段地址在DSMOVDS,AXMOVDX,OFFSETINTRADMOVAL,N;中斷類型號nMOVAH,25H;設(shè)置中斷向量INT21H

§7-2中斷處理過程——中斷向量表2/4/202320 POPDS ……;中斷在此段程序內(nèi)產(chǎn)生并響應(yīng)

POPDX;恢復(fù)原中斷向量 POPDS

MOVAL,N MOVAH,25H INT 21H RETINTRAD: …… IRET

§7-2中斷處理過程——中斷向量表2/4/202321中斷類型號的獲取對于除法出錯,單步中斷,不可屏蔽中斷NMI,斷點中斷和溢出中斷,CPU分別自動提供中斷類型號0~4。對于用戶自己確定的軟件中斷INTn,類型號由n決定。對外部可屏蔽中斷INTR,可以用可編程中斷控制器8259A獲得中斷類型號。

§7-2中斷處理過程——中斷向量表2/4/202322三、中斷程序相關(guān)

3.1主程序中的初始化(1)設(shè)置中斷向量。(2)設(shè)置8259A的寄存器。(3)設(shè)置CPU中斷允許位標志IF(開中斷STI)§7-2中斷處理過程——中斷服務(wù)子程序2/4/2023233.2中斷服務(wù)子程序1.程序開始必須保護中斷現(xiàn)場,可以通過一系列PUSH指令將CPU各寄存器的值入棧保護。2.若允許中斷嵌套,則用STI指令來設(shè)置開中斷,使中斷允許標志IF為1。3.執(zhí)行中斷處理程序。4.用CLI指令來設(shè)置關(guān)中斷,使中斷允許標志IF=0,禁止其他中斷請求進入。§7-2中斷處理過程——中斷服務(wù)子程序2/4/2023245.給中斷命令寄存器送中斷結(jié)束命令EOI,使當前正在處理的中斷請求標志位被清除,否則同級中斷或低級中斷的請求仍會被屏蔽掉。6.恢復(fù)中斷時的現(xiàn)場,通過一系列POP指令將CPU各寄存器的值恢復(fù)。7.用STI指令來設(shè)置開中斷,允許其他中斷請求進入。8.用中斷返回指令I(lǐng)RET返回主程序,此時堆棧中保存的斷點和標志值分別裝入IP、CS和PSW?!?-2中斷處理過程——中斷服務(wù)子程序2/4/202325說明:中斷服務(wù)程序中兩次開中斷,第一次開中斷是為了允許中斷嵌套而設(shè)置的。第二次開中斷是因為恢復(fù)寄存器內(nèi)容時,為了防止有中斷進入破壞其內(nèi)容,先執(zhí)行了關(guān)中斷,然后在中斷返回前再開中斷,這樣返回主程序后,中斷請求能得到允許。中斷結(jié)束命令EOI一般在中斷處理結(jié)束前發(fā)出,使一次中斷處理的過程是完整的。§7-2中斷處理過程——中斷服務(wù)子程序2/4/202326四、中斷響應(yīng)時序§7-2中斷處理過程——中斷響應(yīng)時序2/4/202327CPU對可屏蔽中斷請求的響應(yīng)過程要執(zhí)行兩個連續(xù)的中斷響應(yīng)INTA總線周期,每個總線周期包括4個時鐘周期Tl~T4。第一個中斷響應(yīng)總線周期,CPU通知外設(shè)準備響應(yīng)中斷,外設(shè)應(yīng)該準備好中斷類型號,第二個中斷響應(yīng)總線周期,CPU接收外設(shè)接口發(fā)來的中斷類型號。CPU將地址/數(shù)據(jù)總線置于浮動狀態(tài),在T2~T4期間發(fā)出中斷響應(yīng)信號INTA給8259A,表示CPU響應(yīng)此中斷請求,禁止來自其它總線控制器的總線請求。在最大模式時,CPU啟動LOCK信號,通知系統(tǒng)中總線仲裁器8289,使系統(tǒng)中其它處理器不能訪問總線。1.第一個INTA周期§7-2中斷處理過程——中斷響應(yīng)時序2/4/202328

CPU向8259A發(fā)出第二個INTA信號,8259A響應(yīng)第二個INTA,在T2和T3時鐘周期將一個字節(jié)的中斷類型號N送到數(shù)據(jù)總線低8位。CPU讀取中斷類型號N,乘以4,得到中斷向量表的地址繼而查得中斷服務(wù)程序入口地址。CPU保護PSW,清標志位IF和TF,將斷點返回地址CS和IP入棧,轉(zhuǎn)向中斷服務(wù)程序入口。

2.第二個INTA周期注意:8086執(zhí)行中斷響應(yīng)時,在兩個中斷響應(yīng)周期之間要插入2~3個空閑狀態(tài),8088系統(tǒng)并沒有在兩個中斷響應(yīng)總線周期中插入空閑狀態(tài)。

§7-2中斷處理過程——中斷響應(yīng)時序2/4/202329

8086要求中斷請求信號INTR是一個電平信號,必須維持2個時鐘周期的高電平。否則CPU執(zhí)行完一條指令后,如果總線接口部件正在執(zhí)行總線周期,則會使中斷請求得不到響應(yīng)而執(zhí)行其他的總線周期。8086工作在最大模式時,不從INTA引腳上發(fā)中斷響應(yīng)脈沖,而是由S2S1S0組合為000,通過總線控制器8288發(fā)出INTA中斷響應(yīng)信號。8086不允許在兩個INTA周期之間響應(yīng)總線保持請求(通過HOLD或RQ/GT線請求),但如果同時出現(xiàn)中斷請求和總線保持請求,則CPU先對總線保持請求服務(wù)。

3.說明§7-2中斷處理過程——中斷響應(yīng)時序2/4/202330

外設(shè)的中斷類型號一般通過16位數(shù)據(jù)總線的低8位傳送給8086,所以提供中斷向量的外設(shè)接口應(yīng)該接在數(shù)據(jù)總線的低8位上。在兩個中斷響應(yīng)總線周期中,地址/數(shù)據(jù)/狀態(tài)總線是浮空的,但是M/IO為低電平,而ALE在每個總線周期的T1狀態(tài)輸出一個高電平脈沖,作為地址鎖存信號。軟件中斷和非屏蔽中斷不按照這種時序來響應(yīng)中斷?!?-2中斷處理過程——中斷響應(yīng)時序2/4/202331

多個中斷源同時向CPU請求中斷,CPU響應(yīng)哪個中斷由中斷優(yōu)先級排隊決定,CPU先響應(yīng)優(yōu)先級高的中斷請求。當CPU正在處理中斷時,有更高優(yōu)先級別的中斷請求,并且IF=1,CPU能響應(yīng)更高級別的中斷請求,而屏蔽掉低級的中斷請求,形成了中斷嵌套,或稱為多重中斷。多個中斷源的中斷流程如圖7-7所示,與單級中斷流程圖7-2相比,流程圖中增加了屏蔽本級與較低級中斷請求;中斷服務(wù)前要開中斷,以允許中斷嵌套;恢復(fù)現(xiàn)場前要關(guān)中斷,使恢復(fù)現(xiàn)場不受干擾;返回前要開中斷,以允許其它中斷能被CPU響應(yīng)。§7-2中斷優(yōu)先級和中斷嵌套——中斷優(yōu)先級一、中斷優(yōu)先級2/4/202332中斷服務(wù)子程序關(guān)中斷開中斷恢復(fù)現(xiàn)場返回開中斷執(zhí)行一條指令關(guān)中斷取下一條指令保護現(xiàn)場屏蔽本級和低級中斷中斷?是否圖7-7多個中斷源中斷流程圖§7-2中斷優(yōu)先級和中斷嵌套——中斷優(yōu)先級2/4/202333

1.軟件查詢中斷優(yōu)先級軟件查詢中斷方式,是將各個外設(shè)的中斷請求信號通過或門相“或”后,送到CPU的INTR端,同時把幾個外設(shè)的中斷請求狀態(tài)位組成一個端口,賦以端口號。任一外設(shè)有中斷請求,CPU響應(yīng)中斷后進入中斷處理子程序,用軟件讀取端口內(nèi)容,逐位查詢端口的每位狀態(tài),查到哪個外設(shè)有請求中斷,就轉(zhuǎn)入哪個外設(shè)的中斷服務(wù)程序。查詢程序的次序,決定了外設(shè)優(yōu)先級別的高低,先測試的中斷源優(yōu)先級別最高。

IBMPC機中規(guī)定優(yōu)先級從高到低的次序為:內(nèi)中斷(除法錯,INTO,INTn)不可屏蔽中斷(NMI)可屏蔽中斷(INTR)單步中斷§7-2中斷優(yōu)先級和中斷嵌套——中斷優(yōu)先級2/4/202334

2.硬件查詢中斷優(yōu)先級——菊花鏈法§7-2中斷優(yōu)先級和中斷嵌套——中斷優(yōu)先級2/4/202335

3.矢量中斷優(yōu)先級IR0中斷類型寄存器由中斷請求決定圖7-9矢量中斷優(yōu)先權(quán)控制器的原理圖IR1IR7……§7-2中斷優(yōu)先級和中斷嵌套——中斷優(yōu)先級2/4/202336二、中斷嵌套

§7-2中斷優(yōu)先級和中斷嵌套——中斷嵌套2/4/202337

從上圖中可以看到:主程序必須有開中斷指令,使IF=1,才能響應(yīng)中斷。進入中斷處理程序時,系統(tǒng)自動關(guān)中斷,在中斷服務(wù)程序中必須有STI開中斷指令,這樣才可以允許其它中斷進入實現(xiàn)中斷嵌套。中斷結(jié)束返回前要有EOI中斷結(jié)束命令,用來清除中斷服務(wù)寄存器中的對應(yīng)位,允許低級中斷進入。最后有中斷返回指令I(lǐng)RET,使程序返回到被中斷的程序的斷點處。中斷處理程序中如果沒有EOI指令,中斷處理中不會受其它中斷影響,在執(zhí)行IRET指令后,因為自動返回中斷斷點及中斷標志寄存器PSW的內(nèi)容,當IF的值為1,系統(tǒng)便能開放中斷?!?-2中斷優(yōu)先級和中斷嵌套——中斷嵌套2/4/202338

一個正在執(zhí)行的中斷處理程序,中斷服務(wù)寄存器相應(yīng)位置“1”,在開中斷(IF=1)的情況下,能夠被優(yōu)先級高于它的中斷源中斷。但如果中斷處理中提前發(fā)出了EOI命令,則清除了正在執(zhí)行的中斷服務(wù),中斷服務(wù)寄存器置“1”位被清0,允許響應(yīng)同級或低級的中斷申請。從上圖中可以看到在IR2處理程序中,由于發(fā)出了EOI命令,清除了IR2的中斷服務(wù)寄存器,所以較低優(yōu)先級的IR4請求到達后,轉(zhuǎn)去處理IR4中斷請求。但這種情況要盡量避免,防止重復(fù)嵌套,使優(yōu)先級高的中斷不能及時服務(wù),因此一般EOI結(jié)束命令放在中斷返回指令I(lǐng)RET前面?!?-2中斷優(yōu)先級和中斷嵌套——中斷嵌套2/4/202339一、功能和引腳

圖7-11a8259A芯片引腳8259A14131615121110171819202122232425262728943215678SP/ENCAS2INTIR0VCC(+5V)INTAGNDCAS1CAS0IR1IR2IR3IR4IR5IR6IR7A0D7D6D5D4D3D2D1D0CSWRRD§7-4可編程中斷控制器8259A——功能和引腳2/4/2023401.主要功能

具有8級優(yōu)先級控制,通過級聯(lián)可以擴展到64級優(yōu)先級控制。每一級中斷可由程序單獨屏蔽或允許??商峁┲袛囝愋吞杺魉徒oCPU??梢酝ㄟ^編程選擇多種不同工作方式。2.引腳D7~D0:雙向數(shù)據(jù)線,三態(tài),它直接或通過總線驅(qū)動器與系統(tǒng)的數(shù)據(jù)總線相連。IR7~IR0:外設(shè)的中斷請求信號輸入端,輸入,中斷請求信號可以是電平觸發(fā)或邊沿觸發(fā)。中斷級聯(lián)時,連接8259A從片INT端。§7-4可編程中斷控制器8259A——功能和引腳2/4/202341RD:讀命令信號,輸入,低電平有效,用來控制數(shù)據(jù)由8259A讀到CPU。WR:寫命令信號,輸入,低電平有效,原來控制數(shù)據(jù)由CPU寫到8259A。CS:片選信號,輸入,通過譯碼電路與高位地址總線相連。A0:選擇8259A的兩個端口,輸入,連低位地址線。INT:向CPU發(fā)出的中斷請求信號,輸出,與CPU的INTR端相連。INTA:CPU給8259A的中斷響應(yīng)信號,輸入。8259A要求兩個負脈沖的中斷響應(yīng)信號,第一個是CPU響應(yīng)中斷的信號,第二個INTA結(jié)束后,CPU讀取8259A送去的中斷類型號。CAS2~CAS0:雙向級聯(lián)信號線。8259A作主片時,為輸出線,作從片時,為輸入線。與SP/EN配合實現(xiàn)8259A級聯(lián)。§7-4可編程中斷控制器8259A——功能和引腳2/4/202342SP/EN:從片編程/允許緩沖信號作為輸入使用時,用來決定本片8259A是主片還是從片:若SP/EN=l,則為主片;若SP/EN=0,則為從片。作為輸出使用時,啟動8259A到CPU之間的數(shù)據(jù)總線驅(qū)動器。SP/EN作為輸入還是輸出,決定于8259A是否采用緩沖方式工作,若采用緩沖方式工作,則SP/EN作為輸出,若采用非緩沖方式,SP/EN作為輸入?!?-4可編程中斷控制器8259A——功能和引腳2/4/202343

二、內(nèi)部結(jié)構(gòu)

§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/202344

數(shù)據(jù)總線緩沖器是8位雙向三態(tài)緩沖器,是8259A與系統(tǒng)數(shù)據(jù)總線接口,通常連接低8位數(shù)據(jù)總線D7~D0。CPU編程控制字寫入8259A、8259A的狀態(tài)信息讀出、及中斷響應(yīng)時8259A送出的中斷類型號,都經(jīng)過它傳送。

1.數(shù)據(jù)總線緩沖器

§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/202345

2.讀寫控制電路讀寫控制電路接收CPU送來的讀/寫命令RD、WR,片選信號CS及端口選擇信號A0。高阻高阻

1××××11×INIRR/ISR至CPUIMR至CPU

00100011OUTCPU至ICW1CPU至ICW2,ICW3,ICW4,OCW1CPU至OCW2CPU至OCW3

01001×0101××010000010001指令讀寫操作CSRDWRA0

D4D38259A的讀寫功能§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/202346

高位地址譯碼后送CS作片選信號。A0連地址總線A0或A1,用來選擇8259A的兩個I/O端口,一個為奇地址,另一個偶地址。讀寫操作由這4個信號控制來實現(xiàn)的,使8259A接收CPU送來的初始化命令字(ICW)和操作命令字(OCW),或?qū)?nèi)部狀態(tài)信息送給CPU。

實際設(shè)計時,8259A的D7~D0與CPU數(shù)據(jù)總線低8位相連。為了保證CPU與8259A用低8位傳輸數(shù)據(jù),CPU的A1連8259A的A0。這樣對CPU來說A0=0,A1可以為1或為0,給8259A的端口分配了兩個地址,一個奇地址,一個偶地址,符合了8259A的編程要求。

注意:8086系統(tǒng)中數(shù)據(jù)總線為16位,CPU傳送數(shù)據(jù)時,低8位數(shù)據(jù)總線傳送到偶地址端口,高8位數(shù)據(jù)總線傳送到奇地址端口。當8位I/O接口芯片與8086CPU16位數(shù)據(jù)總線相連接時,既可以連到低8位數(shù)據(jù)總線,也可以連到高8位數(shù)據(jù)總線?!?-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/2023473.級聯(lián)緩沖/比較器

緩沖方式:在多片8259A級聯(lián)的系統(tǒng)中,8259A通過總線驅(qū)動器8286和數(shù)據(jù)總線相連,這就是緩沖方式。在緩沖方式下,8259A的SP/EN端與總線驅(qū)動器8286的T腳相連,控制總線驅(qū)動器的方向,SP/EN作為輸出端。

§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)當EN=0時,8259A控制數(shù)據(jù)從8259A送到CPU;當EN=1時,控制數(shù)據(jù)從CPU送到8259A。

2/4/202348

非緩沖方式:單片8259A或少量8259A級聯(lián)時,可以將8259A直接與數(shù)據(jù)總線相連,稱為非緩沖方式。非緩沖方式下,8259A的SP/EN端作輸入端,控制8259A作為主片還是從片。SP=1,表示此8259A為主片。SP=0,表示此8259A為從片。單片8259A時,SP/EN接高電平。由初始化命令字ICW4來設(shè)置緩沖方式或非緩沖方式。 §7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/202349

4.中斷請求寄存器

中斷請求寄存器是一個8位寄存器,存放外部輸入的中斷請求信號IR7~IR0。

當某個IR端有中斷請求時,IRR相應(yīng)的某位置“1”??梢栽试S8個中斷請求信號同時進入,此時IRR寄存器被置成全“1”。當中斷請求被響應(yīng)時,IRR的相應(yīng)位復(fù)位。

§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/202350

5.中斷屏蔽寄存器IMR中斷屏蔽寄存器是一個8位寄存器,用來存放對各級中斷請求的屏蔽信息。當用軟件編程使IMR寄存器中某一位置“0”時,允許IRR寄存器中相應(yīng)位的中斷請求進入中斷優(yōu)先級判別器。若IMR中某位為“1”,則此位中斷請求被屏蔽。各個中斷屏蔽位是獨立的,屏蔽了優(yōu)先級高的中斷,不影響其它較低優(yōu)先級的中斷允許。§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/2023516.優(yōu)先級判別器PR

優(yōu)先級判別器對保存在IRR寄存器中的中斷請求進行優(yōu)先級識別,送出最高優(yōu)先級的中斷請求到中斷服務(wù)奇存器ISR中去。當出現(xiàn)多重中斷時,PR判定是否允許所出現(xiàn)的中斷去打斷正在處理的中斷,讓優(yōu)先級更高的中斷優(yōu)先處理。

7.中斷服務(wù)寄存器ISR中斷服務(wù)寄存器是一個8位寄存器,保存正在處理中的中斷請求信號。某個IR端的中斷請求被CPU響應(yīng)后,當CPU發(fā)出第一個INTA信號時,ISR寄存器中的相應(yīng)位置“1”,一直保持到該級中斷處理結(jié)束為止。允許多重中斷時,ISR多位同時被置成“1”。

§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/202352

8.控制電路

根據(jù)中斷請求寄存器IRR的置位情況和中斷屏蔽寄存器IMR的設(shè)置的情況,通過優(yōu)先級判別器PR判定優(yōu)先級,向8259A內(nèi)部及其它部件發(fā)出控制信號。向CPU發(fā)出中斷請求信號INT和接收CPU的中斷響應(yīng)信號INTA,使中斷服務(wù)寄存器ISR的相應(yīng)位置“1”,并使中斷請求寄存器IRR的相應(yīng)位置“0”。當CPU第二個INTA信號到來,控制8259A送出中斷類型號,使CPU轉(zhuǎn)入中斷服務(wù)子程序。如果方式控制字ICW4的中斷自動結(jié)束位為“1”,則在第二個INTA脈沖結(jié)束時,將8259A中斷服務(wù)寄存器ISR的相應(yīng)位清“0”。

§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/2023531.8259A的編程結(jié)構(gòu)

§7-4可編程中斷控制器8259A——內(nèi)部結(jié)構(gòu)2/4/202354

三、8259A的中斷管理方式1.8259A的編程結(jié)構(gòu)

中斷管理方式是通過8259A初始化時寫入初始化命令字和操作命令字來設(shè)置的。初始化命令字寫入寄存器ICW1~ICW4,它是由初始化程序設(shè)置的初始化命令字一經(jīng)設(shè)定,在系統(tǒng)工作過程中就不再改變。操作命令字寫入寄存器OCW1~OCW3,它是由應(yīng)用程序設(shè)定的,用來對中斷處理過程進行控制,在系統(tǒng)運行過程中,操作命令字可以重新設(shè)置?!?-4可編程中斷控制器8259A——中斷管理方式2/4/202355

2.優(yōu)先級設(shè)置方式

若8259A初始化后沒有設(shè)置其它優(yōu)先級的方式,就自動進入完全嵌套方式。在這種方式下,中斷優(yōu)先級分配固定級別0~7級,IR0具有最高優(yōu)先級,IR7優(yōu)先級最低。可用初始化命令宇I(lǐng)CW4中SFNM=0,將8259A置成完全嵌套優(yōu)先級方式。在完全嵌套工作方式下,當一個中斷請求被響應(yīng)后,中斷服務(wù)寄存器ISR中的對應(yīng)位置“1”,中斷類型號被放到數(shù)據(jù)總線上,CPU轉(zhuǎn)入中斷服務(wù)程序。完全嵌套方式§7-4可編程中斷控制器8259A——中斷管理方式2/4/202356

一般情況下(除自動中斷結(jié)束方式外),在CPU發(fā)出中斷結(jié)束命令EOI前,ISR寄存器中此對應(yīng)位一直保持“1”。當新的中斷請求進入時,中斷優(yōu)先級裁決器將新的中斷請求和當前ISR寄存器中置“1”位比較,判斷哪一個優(yōu)先級更高。允許打斷正在處理的中斷,優(yōu)先處理更高級的中斷,實現(xiàn)中斷嵌套,但禁止同級與低級中斷請求進入。中斷嵌套時,ISR寄存器中內(nèi)容發(fā)生變化,又有一個對應(yīng)位置“1”,當實現(xiàn)8級中斷嵌套時,ISR寄存器內(nèi)容為0FFH。§7-4可編程中斷控制器8259A——中斷管理方式2/4/202357

特殊全嵌套方式與全嵌套工作方式基本相同,區(qū)別在于當處理某級中斷時,有同級中斷請求進入,8259A也會響應(yīng),從而實現(xiàn)了對同級中斷請求的特殊嵌套。在級聯(lián)方式中,當從片上有中斷請求進入并正在處理時,同一從片上又進入更高優(yōu)先級的中斷請求,從片能響應(yīng)更高優(yōu)先級中斷請求,并向主片申請中斷,但對主片來說是同級中斷請求。當主片處于特殊全嵌套工作方式時,主片就能允許對相同級別的中斷請求開放。因此,特殊全嵌套方式通常用于級聯(lián)方式中。特殊全嵌套方式§7-4可編程中斷控制器8259A——中斷管理方式2/4/202358

在優(yōu)先級自動循環(huán)方式中,優(yōu)先級別可以改變。初始優(yōu)先級次序規(guī)定為IR0、IR1、…、IR7,當任何一級中斷被處理完后,它的優(yōu)先級別變?yōu)樽畹停瑢⒆罡邇?yōu)先級賦給原來比它低一級的中斷請求,其它依次類推。優(yōu)先級自動循環(huán)方式適合用在多個中斷源優(yōu)先級相等的場合。

優(yōu)先級自動循環(huán)方式例:當前IR3中斷請求,則處理IR3,處理完IR3后,IR4變成最高優(yōu)先級,優(yōu)先級依次為IR4,IR5、IR6、…、IR2、IR3?!?-4可編程中斷控制器8259A——中斷管理方式2/4/202359

優(yōu)先級特殊循環(huán)方式和優(yōu)先級自動循環(huán)方式相比,不同之處在于優(yōu)先級特殊循環(huán)方式中,初始時最低優(yōu)先級由程序規(guī)定,最高優(yōu)先級也就確定了。優(yōu)先級特殊循環(huán)方式例:若初始時指定IR1為最低優(yōu)先級,則IR2為最高優(yōu)先級,其它依次類推。而優(yōu)先級自動循環(huán)方式初始時最高優(yōu)先級一定是IR0?!?-4可編程中斷控制器8259A——中斷管理方式2/4/202360

3.中斷結(jié)束方式

中斷結(jié)束處理實際上就是對中斷服務(wù)寄存器ISR中對應(yīng)位的處理。當一個中斷得到響應(yīng)時,8259A使ISR寄存器中對應(yīng)位置“1”,表明此對應(yīng)外設(shè)正在服務(wù),并為中斷優(yōu)先判別器提供判別依據(jù)。中斷結(jié)束時,必須使ISR寄存器中對應(yīng)位置“0”,否則中斷優(yōu)先權(quán)判別會不正常。什么時刻使ISR中對應(yīng)位置“0”,就產(chǎn)生不同的中斷結(jié)束方式?!?-4可編程中斷控制器8259A——中斷管理方式

實際上8259對中斷優(yōu)先級的控制就是通過對中斷結(jié)束EOI的控制來實現(xiàn)的!2/4/202361

在完全嵌套工作方式下,任何一級中斷處理結(jié)束返回上一級程序前,CPU向8259A傳送EOI結(jié)束命令字,8259A收到EOI結(jié)束命令后,自動將ISR寄存器中級別最高的置“1”位清“0”(此位對應(yīng)當前正在處理的中斷)。EOI結(jié)束命令字必須放在返回指令I(lǐng)RET前,沒有EOI結(jié)束命令,ISR寄存器中對應(yīng)位仍為“1”,繼續(xù)屏蔽同級或低級的中斷請求。若EOI結(jié)束命令字放在中斷服務(wù)程序中其它位置,會引起同級或低級中斷在本級未處理完前進入,容易產(chǎn)生錯誤。普通EOI結(jié)束方式§7-4可編程中斷控制器8259A——中斷管理方式2/4/202362

在非全嵌套工作方式下,中斷服務(wù)寄存器無法確定哪一級中斷為最后響應(yīng)和處理的,這時要采用特殊SEOI結(jié)束方式。CPU向8259A發(fā)特殊EOI結(jié)束命令字,此時,8259將ISR寄存器中指定級別的對應(yīng)位清“0”,它在任何情況下均可使用。

特殊EOI結(jié)束方式§7-4可編程中斷控制器8259A——中斷管理方式2/4/202363

在自動AEOI方式中,任何一級中斷被響應(yīng)后,ISR寄存器對應(yīng)位置“1”,但在CPU進入中斷響應(yīng)周期,發(fā)第二個INTA脈沖后,8259A自動將ISR寄存器中對應(yīng)位清“0”。此時,盡管對某個外設(shè)正在進行中斷服務(wù),但對8259A來說,ISR寄存器中沒有指示,好象已結(jié)束了中斷處理一樣。這種方式雖然簡單,但因為ISR寄存器中沒有標志,低級中斷申請時,可以打斷高級中斷,產(chǎn)生重復(fù)嵌套,嵌套深度也無法控制,容易產(chǎn)生錯誤,使用時要特別小心。自動EOI結(jié)束方式§7-4可編程中斷控制器8259A——中斷管理方式2/4/202364

4.循環(huán)優(yōu)先級的循環(huán)方式

在主程序或中斷服務(wù)程序中設(shè)置操作命令字,當任何一級中斷被處理完后,使CPU給8259A回送普通EOI循環(huán)命令,8259A收到EOI循環(huán)命令后,將ISR寄存器中最高優(yōu)先級的IRi置“1”位清“0”,并賦給它最低優(yōu)先級,將最高優(yōu)先級賦給它的下一級IRi+1,其它依次類推。普通EOI循環(huán)方式§7-4可編程中斷控制器8259A——中斷管理方式2/4/202365普通EOI循環(huán)方式例:

某中斷系統(tǒng)IR0為最高優(yōu)先級,IR7為最低優(yōu)先級。有IR2、IR5兩個中斷請求。設(shè)置為普通EOI循環(huán)方式,要求給出IR2及IR5中斷處理完后中斷優(yōu)先級的變化情況。原始狀態(tài)ISR內(nèi)容ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR000100100優(yōu)先級7654321

0處理完IR2ISR內(nèi)容00100000優(yōu)先級4321

0765處理完IR5ISR內(nèi)容00000000優(yōu)先級1

0765432普通EOI循環(huán)方式§7-4可編程中斷控制器8259A——中斷管理方式2/4/202366特殊EOI循環(huán)方式特殊EOI循環(huán)方式即指定最低級循環(huán)方式,最低優(yōu)先級由編程確定,最高優(yōu)先級也相應(yīng)而定。例:某一時刻8259A中IR2,IR6有中斷嵌套服務(wù)。在IR2中斷服務(wù)程序中安排了最低優(yōu)先權(quán)給IR3,指令執(zhí)行后,中斷優(yōu)先級變化情況如下表。初始狀態(tài)ISR內(nèi)容ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR001000100優(yōu)先級76543210執(zhí)行置位優(yōu)先權(quán)指令后ISR內(nèi)容01000100優(yōu)先級32107654特殊EOI循環(huán)方式§7-4可編程中斷控制器8259A——中斷管理方式2/4/202367自動EOI循環(huán)方式在自動EOI循環(huán)方式中,任何一級中斷被響應(yīng)后,中斷響應(yīng)總線周期中第二個INTA信號的后沿自動將ISR寄存器中相應(yīng)位清0,并立即改變各級中斷的優(yōu)先級別,改變方式與普通EOI循環(huán)循環(huán)方式相同。注意:使用這種方式要小心,防止重復(fù)嵌套產(chǎn)生?!?-4可編程中斷控制器8259A——中斷管理方式2/4/2023685.中斷源屏蔽方式普通屏蔽方式將中斷屏蔽寄存器IMR中某一位或某幾位置“1”,即可將對應(yīng)位的中斷請求屏蔽掉。特殊屏蔽方式此方式能對本級中斷進行屏蔽,而允許優(yōu)先級比它高或低的中斷進入。

§7-4可編程中斷控制器8259A——中斷管理方式2/4/2023696.中斷請求引入方式邊沿觸發(fā)方式在邊沿觸發(fā)方式下,8259A將中斷請求輸入端出現(xiàn)的上升沿作為中斷請求信號。中斷請求輸入端出現(xiàn)上升沿觸發(fā)信號后,可以一直保持高電平。

電平觸發(fā)方式在電平觸發(fā)方式下,8259A將中斷請求輸入端出現(xiàn)的高電平作為中斷請求信號。注意:當中斷得到響應(yīng)后,中斷輸入端必須及時撤出高電平,否則在CPU進入中斷處理過程,并且開中斷的情況下,原輸入端的高電平會引起第二次中斷的錯誤?!?-4可編程中斷控制器8259A——中斷管理方式2/4/202370中斷查詢方式在中斷查詢方式下,外部設(shè)備向8259A發(fā)中斷請求信號,但8259A不通過INT信號向CPU發(fā)中斷請求信號。CPU要使用軟件查詢來確定中斷源,才能實現(xiàn)對外設(shè)的中斷服務(wù)。CPU所執(zhí)行的查詢程序應(yīng)包括如下過程:

系統(tǒng)關(guān)中斷。用OUT指令使CPU向8259A端口(偶地址端口)送OCW3命令字。若外設(shè)已發(fā)出過中斷請求,8259A在當前中斷服務(wù)寄存器中使對應(yīng)位置“1”,且立即組成查詢字。CPU用IN指令從端口(偶地址)讀取8259A的查詢字?!?-4可編程中斷控制器8259A——中斷管理方式2/4/202371四、8259A的編程方法

對8259A的編程有兩類命令字:初始化命令字ICW和操作命令字OCW。系統(tǒng)復(fù)位后,初始化程序?qū)?259A置入初始化命令字。初始化后可通過發(fā)出操作命令字OCW來定義8259A的操作方式,實現(xiàn)對8259A的狀態(tài)、中斷方式和優(yōu)先級管理的控制。初始化命令字只發(fā)一次,操作命令字允許重置,以動態(tài)改變8259A的操作與控制方式?!?-4可編程中斷控制器8259A——8259A的編程方法2/4/2023721.初始化命令字初始化命令字完成的功能:設(shè)定中斷請求信號觸發(fā)形式,高電乎觸發(fā)或上升沿觸發(fā)。設(shè)定8259A工作方式,單片或級聯(lián)。設(shè)定8259A中斷類型號基值,即IR0對應(yīng)的中斷類型號。設(shè)定優(yōu)先級設(shè)置方式。設(shè)定中斷處理結(jié)束時的結(jié)束操作方式。注意:對8259A編程初始化命令字,共預(yù)置4個命令字:ICW1、ICW2、ICW3、ICW4。初始化命令字必須順序填寫,但并不是任何情況下都要置4個命令字,用戶根據(jù)具體使用情況而定?!?-4可編程中斷控制器8259A——8259A的編程方法2/4/202373⑴ICW1——芯片控制初始化命令字01:需要設(shè)置ICW4

0:不需要設(shè)置ICW41:單級使用0:級聯(lián)使用1:電平觸發(fā)0:邊緣觸發(fā)標志位8086/8088系統(tǒng)中不用IC4SNGL0LTIM1×××A0D7D0格式:§7-4可編程中斷控制器8259A——8259A的編程方法ICW1——必須寫入8259A的偶地址端口,對IBMPC/XT機而言,地址為20H2/4/202374⑵ICW2——設(shè)置中斷類型號初始化命令字8259A中IR0端對應(yīng)的中斷類型號為中斷類型號基值,它是可以被8整除的正整數(shù),ICW2用來設(shè)置這個中斷類型號基值,由此提供外部中斷的中斷類型號。在IBMPC/XT機由于T7~T3=00001,即基值為08H

ICW2低3位為0,高5位由用戶設(shè)定。當8259A收到CPU發(fā)來的第二個INTA信號,它向CPU發(fā)送中斷類型號,其中高5位為ICW2的高5位,低3位根據(jù)IR0~IR7中響應(yīng)哪級中斷(對應(yīng)000~111)來確定。(即對應(yīng)的中斷號為08H~0FH)000T3T4T5T6T7D0A0D71中斷類型的高5位(在IBMPC/XT機T7~T3=00001)§7-4可編程中斷控制器8259A——8259A的編程方法ICW2——必須寫入8259A的奇地址端口,對IBMPC/XT機而言,地址為21H2/4/202375⑶ICW3——標識主片/從片初始化命令字

0:表示IRi端上未接8259A從片1:表示IRi端上接有8259A從片S0S1S2S3S4S5S6S7D0A0D71Si=8259A主片格式:從8259A的識別地址(即主片的端口號)ID0ID1ID20

0

0

0

0D0A0D718259A從片格式:§7-4可編程中斷控制器8259A——8259A的編程方法ICW3——必須寫入8259A的奇地址端口,對IBMPC/XT機而言,地址為21H2/4/202376在多片8259A級聯(lián)情況下,主片與從片的CAS2~CAS0相連,主片的CAS2~CAS0為輸出,從片的CAS2~CAS0為輸入。當CPU發(fā)第一個中斷響應(yīng)信號INTA時,主片通過CAS2~CAS0發(fā)一個編碼ID2~ID0,從片的CAS2~CAS0收到主片發(fā)來的編碼與本身ICW3中ID2~ID0相比較,如果相等,則在第二個INTA信號到來后,將自己的中斷類型號送到數(shù)據(jù)總線上。

§7-4可編程中斷控制器8259A——8259A的編程方法2/4/202377ICW1中IC4為1時,要求預(yù)置ICW4命令字,對8086/8088系統(tǒng)必須預(yù)置ICW4。⑷ICW4——方式控制初始化命令字μPMAEOIM/SBUFSFNM0001:8086/8088配置0:8080/8085配置1:自動EOI方式0:非自動EOI方式1:特殊完全嵌套方式0:非特殊完全嵌套方式0×:非緩沖方式10:緩沖方式,從8259A11:緩沖方式,主8259A1D7D0A0§7-4可編程中斷控制器8259A——8259A的編程方法ICW4——必須寫入8259A的奇地址端口,對IBMPC/XT機而言,地址為21H2/4/202378

BUF=1,采用緩沖方式,8259A通過總線驅(qū)動器與數(shù)據(jù)總線相連,SP/EN作輸出端,控制數(shù)據(jù)總線驅(qū)動器的方向(8286的T腳),此時SP/EN線中EN有效,EN=0允許緩沖器輸出(CPU←8259A),EN=1允許緩沖器輸入(CPU→8259A)。此時,M/S=l,表示該片是8259A主片,M/S=0,表示該片是8259A從片。

BUF=0,采用非緩沖方式,SP/EN線中SP有效,SP=0,該片是8259A從片,SP=1,該片是8259A主片,此時,M/S信號無效。

BUF位M/S位SP/EN端0非緩沖方式無意義SP有效(輸入信號)SP=1SP=0主8259A從8259A1緩從方式1主8259A0從8259AEN有效(輸出信號)EN=1EN=0CPU→8259A8259A→CPUBUF、M/S、SP/EN之間關(guān)系初始化命令字必須從ICW1開始設(shè)置,依下順序進行設(shè)置.并分別根據(jù)ICW1中的SNGL位和IC4位決定是否設(shè)置ICW3和ICW4。級聯(lián)時要設(shè)置ICW3,并且主片與從片的ICW3設(shè)置不同?!?-4可編程中斷控制器8259A——8259A的編程方法2/4/202379初始化命令字設(shè)置次序§7-4可編程中斷控制器8259A——8259A的編程方法2/4/2023802.操作命令字操作命令字決定中斷屏蔽,中斷優(yōu)先級次序,中斷結(jié)束方式等。

⑴OCW1——中斷屏蔽操作命令字M0M1M2M3M4M5M6M711:屏蔽由IRi引入的中斷請求0:允許IRi端中斷請求引入Mi=A0D7D0§7-4可編程中斷控制器8259A——8259A的編程方法OCW1——必須寫入8259A的奇地址端口,對IBMPC/XT機而言,地址為21H2/4/202381⑵OCW2——優(yōu)先權(quán)循環(huán)方式和中斷結(jié)束方式操作字0標志位L0L1L200EOISLR000―IR0001―IR1010―IR2011―IR3100―IR4101―IR5110―IR6111―IR7001―普通EOI方式011―特殊EOI方式101―普通EOI循環(huán)方式111―特殊EOI循環(huán)方式000―自動EOI循環(huán)(復(fù)位)100―自動EOI循環(huán)(置位)110―置位優(yōu)先權(quán)命令010―無效D7D0A0

L2~L0:SL=1時,L2~L0有效。L2~L0有兩個用途,一個是當OCW2設(shè)置為特殊EOI結(jié)束命令時,L2~L0指出清除中斷服務(wù)寄存器中的哪1位,第二個當OCW2設(shè)置為特殊優(yōu)先級循環(huán)方式時,L2~L0指出循環(huán)開始時設(shè)置的最低優(yōu)先級。§7-4可編程中斷控制器8259A——8259A的編程方法OCW2——必須寫入8259A的偶地址端口,對IBMPC/XT機而言,地址為20H2/4/202382RSLEOIR、SL、EOI組合功能100設(shè)置自動EOI循環(huán)方式:在中斷響應(yīng)周期的第二個INTA信號結(jié)束時,將ISR寄存器中正在服務(wù)的相應(yīng)位置0,本級賦予最低優(yōu)先級,最高優(yōu)先級賦給它的下一級,其他中斷優(yōu)先級依次循環(huán)賦給。000取消自動EOI循環(huán)101設(shè)置普通EOI循環(huán):一旦中斷結(jié)束,8259A將中斷服務(wù)寄存器ISR中,當前級別最高的置1位清0,此級賦予最低優(yōu)先級,最高優(yōu)先級賦給它的下一級,其他中斷優(yōu)先級依次循環(huán)賦給。111設(shè)置特殊EOI循環(huán):一旦中斷結(jié)束,將中斷服務(wù)寄存器ISR中,由L2~L0字段給定級別的相應(yīng)位清0,此級賦予最低優(yōu)先級,最高優(yōu)先級賦給它的下一級,其他中斷優(yōu)先級依次循環(huán)賦給。110置位優(yōu)先級循環(huán):8259A按L2~L0字段確定一個最低優(yōu)先級,最高優(yōu)先級賦給它的下一級,其他中斷優(yōu)先級依次循環(huán)賦給,系統(tǒng)工作在優(yōu)先級特殊循環(huán)方式。001普通EOI結(jié)束方式:一旦中斷結(jié)束,CPU向8259A發(fā)出EOI結(jié)束命令,將中斷服務(wù)寄存器ISR中當前級別最高的置1位清0。一般用在完全嵌套(包括特殊嵌套)工作方式。011特殊EOI結(jié)束方式:一旦中斷結(jié)束,CPU向8259A發(fā)出結(jié)束命令,將中斷服務(wù)寄存器ISR中,由L2~L0字段指定的中斷級別的相應(yīng)位清0。010OCW2無意義2/4/202383⑶OCW3——特殊屏蔽方式和查詢方式操作字OCW3功能有三個:設(shè)定特殊屏蔽方式,設(shè)置對8259A寄存器的讀出及設(shè)置中斷查詢工作方式。RISRRP10SMMESMM×0A0D7D00×:無效10:下次RD有效,讀IRR11:下次RD有效,讀ISR

1:查詢8259A狀態(tài)0:不查詢0×:無效10:特殊屏蔽方式復(fù)位11:特殊屏蔽方式置位標志位§7-4可編程中斷控制器8259A——8259A的編程方法OCW3——必須寫入8259A的偶地址端口,對IBMPC/XT機而言,地址為20H2/4/202384在查詢工作方式下,CPU不是靠接收中斷請求信號來進入中斷處理過程,而是靠發(fā)送查詢命令,讀取查詢字來獲得外部設(shè)備的中斷請求信息。CPU先送操作命令OCW3(P=1)給8259A,再送一條輸入指令將一個RD信號送給8259A,8259A收到后將中斷服務(wù)寄存器的相應(yīng)位置1,并將查詢字送到數(shù)據(jù)總線,查詢字反映了當前外設(shè)有無中斷請求及中斷請求的最高優(yōu)先級是哪個。W0W1W2××××IR0A0D7D0§7-4可編程中斷控制器8259A——8259A的編程方法2/4/202385操作控制字OCW1~OCW3的設(shè)置,安排在初始化命令字之后,用戶根據(jù)需要可在程序的任何位置去設(shè)置。盡管8259A只有兩個端口地址,但不會混淆命令字及控制字的,因為:ICW2、ICW3、ICW4和OCW1寫入8259A奇地址端口。初始化時ICW1后面緊跟ICW2、ICW3、ICW4,而OCW1是單獨寫入的,不會緊跟在ICW1后面。ICW1、OCW2、OCW3寫入8259A偶地址端口,但一方面ICW1在初始化時寫入,另一方面可用D4位區(qū)分,D4=1為ICW1,D4=0為OCW;再用D3位區(qū)分,D3=0為OCW2,D3=1為OCW3。說明:§7-4可編程中斷控制器8259A——8259A的編程方法2/4/202386

8259A的中斷優(yōu)先級較為復(fù)雜,總結(jié)如下:說明:§7-4可編程中斷控制器8259A——8259A的編程方法自動EOI方式;非自動EOI方式;特殊完全嵌套方式;非特殊完全嵌套方式;由初始化指令I(lǐng)CW4控制普通EOI方式特殊EOI方式普通EOI循環(huán)方式特殊EOI循環(huán)方式自動EOI循環(huán)(復(fù)位/置位)置位優(yōu)先權(quán)命令

對優(yōu)先級控制,則由操作指令OCW2控制“特殊”或“置位”的可以直接指定最低級2/4/2023878259A單片使用例子8259A的IR1、IR5端引入兩個中斷請求,中斷類型號為41H、45H。中斷采用電平觸發(fā)方式,完全嵌套工作方式,普通EOI結(jié)束方式,只允許IR1、IR5中斷,屏蔽其它中斷請求端口?!?-4可編程中斷控制器8259A——8259A的編程方法2/4/202388五、8259A的中斷級聯(lián)主片8259A的SP/EN端接VCC,從片的SP/EN端接地。若系統(tǒng)中連接數(shù)據(jù)總線驅(qū)動器,主片的SP/EN端與數(shù)據(jù)總線驅(qū)動器8286的T腳相連。從片的INT腳接主片的IRi端,主片的IRi端若未接從片,可直接連中斷源。主片的CAS2~CAS0作為輸出端,從片的CAS2~CAS0作輸入端,二者相連。1.中斷級聯(lián)使用時的連線§7-4可編程中斷控制器8259A——8259A的中斷級聯(lián)2/4/202389§7-4可編程中斷控制器8259A——8259A的中斷級聯(lián)2/4/202390設(shè)置主片初始化命令字時:級聯(lián)時,ICW1中SNGL=0,單片時SNGL=1。級聯(lián)時,要求設(shè)置ICW3,若某個IRi引腳上連有從片,主片ICW3的對應(yīng)位設(shè)為1,未連從片的對應(yīng)位設(shè)為0。單片不要設(shè)置ICW3。級聯(lián)時,可設(shè)置為特殊全嵌套工作方式,此時,ICW4中SFNM=l,通常應(yīng)定義在特殊完全嵌套工作方式。設(shè)置從片初始化命令字時:從片的ICW1中,SNGL=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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論