第7章-微型計算機中斷系統(tǒng)_第1頁
第7章-微型計算機中斷系統(tǒng)_第2頁
第7章-微型計算機中斷系統(tǒng)_第3頁
第7章-微型計算機中斷系統(tǒng)_第4頁
第7章-微型計算機中斷系統(tǒng)_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微型計算機原理與接口技術第七章微型計算機中斷系統(tǒng)1/14/20231第七章微型計算機中斷系統(tǒng)概述中斷處理過程中斷優(yōu)先級和中斷嵌套可編程中斷控制器8259A內容提要1/14/20232CPU正常運行程序時,微處理器內部事件或外設請求,引起CPU中斷正在運行的程序,轉去執(zhí)行請求中斷的外設(或內部事件)的服務子程序,執(zhí)行完畢,再返回被中止的程序,這一過程稱為中斷。1.中斷源引起中斷的事件。包括外部中斷和內部中斷。一、中斷概念

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

——中斷概念

§7-1概述1/14/202333.中斷向量表CPU響應中斷后,必須由中斷源提供地址信息,引導程序進入中斷服務子程序,這些中斷服務程序的入口地址存放在中斷向量表中。內存中專門開辟一個區(qū)域,存放中斷向量表(也稱中斷矢量表)。

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

——中斷概念

1/14/20234

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

——中斷概念

1/14/20235

二、中斷分類8086/8088可以處理256種不同的中斷。按產生中斷的方法來分類,256種中斷可以分為兩大類:外部中斷內部中斷外部中斷也稱硬件中斷,由外部的硬件產生,硬件中斷又分成不可屏蔽中斷和可屏蔽中斷。

如圖7-1所示?!?-1概述

——中斷分類

1/14/20236

NMIINTR可屏蔽中斷請求圖7-18086/8088中斷源§7-1概述

——中斷分類

1/14/20237

外部中斷⑴不可屏蔽中斷請求由CPU的引腳NMI引入,采用邊沿觸發(fā),上升沿之后維持兩個時鐘周期高電平有效。不能用軟件屏蔽,一旦有不可屏蔽中斷請求,如電源掉電等緊急情況,CPU必須予以響應。不可屏蔽中斷請求的中斷類型號為2,中斷處理程序的入口地址在0段的0008H~000BH的4個單元中。

§7-1概述

——中斷分類

1/14/20238⑵可屏蔽中斷請求由CPU的引腳INTR引入,采用電平觸發(fā),高電平有效,INTR信號的高電平必須維持到CPU響應中斷才結束??捎密浖O置來屏蔽,即使外部設備有可屏蔽中斷請求,CPU可以不予響應。由外部設備引起的可屏蔽中斷請求要得到響應有兩個條件:一個是外設中斷請求未被屏蔽,一個是CPU允許響應中斷。§7-1概述

——中斷分類

1/14/20239

§7-1概述

——中斷分類

2.內部中斷內部中斷又稱為軟件中斷。⑴由中斷指令INT引起的中斷CPU執(zhí)行一條INTn指令后會立即產生中斷,并且調用系統(tǒng)中相應的中斷處理程序去完成中斷功能,指令中n指出了中斷類型號。⑵由CPU的某些運算錯誤引起的中斷除法錯中斷:類型0中斷。在除法運算中,若除數為0或商超過寄存器所能表達的范圍,則產生類型0中斷,轉入類型0中斷處理。溢出中斷:類型4中斷,專用指令為INTO。在運算中,若溢出標志位OF置1,下面緊跟溢出中斷指令INTO,則產生類型4中斷;若OF為0,INTO指令不起作用。因此在加、減法運算指令后應安排一條INTO指令,否則運算產生溢出后無法向CPU發(fā)出溢出中斷請求。1/14/202310

單步中斷:類型1中斷。標志位TF=1時,每條指令執(zhí)行后,CPU自動產生類型1中斷。產生單步中斷時,CPU同樣自動地將PSW、CS和IP內容入棧,然后清除TF、IF,進入單步中斷處理程序,單步處理程序結束時,原來的PSW從堆棧中取出,CPU重新置成單步方式。斷點中斷:類型3中斷。

當CPU執(zhí)行到斷點時產生中斷,同時顯示當前各寄存器和有關存儲器的內容及下條要執(zhí)行的指令,供用戶檢查。設置斷點即把一條斷點指令INT3插入到斷點設置處,CPU執(zhí)行到INT3指令便產生中斷?!?-1概述

——中斷分類

1/14/202311

一、CPU響應中斷過程1.CPU響應可屏蔽中斷的三個條件

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

外設提出中斷申請本中斷位未被屏蔽中斷允許可屏蔽中斷處理的過程一般分成以下幾步:中斷請求;中斷響應;保護現場;轉入執(zhí)行中斷服務子程序;恢復現場和中斷返回。§7-2中斷處理過程

——CPU響應中斷過程

§7-2中斷處理過程1/14/202312取下一條指令有中斷請求指令結束響應中斷關中斷保護斷點尋找中斷源執(zhí)行指令轉中斷服務程序保護現場中斷服務恢復現場開中斷返回否是是否圖7-2可屏蔽中斷處理流程圖§7-2中斷處理過程

——CPU響應中斷過程

1/14/202313

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

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

§7-2中斷處理過程

——CPU響應中斷過程

1/14/202314

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

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

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

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

§7-2中斷處理過程

——CPU響應中斷過程

1/14/202315

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

——CPU響應中斷過程

1/14/202316

二、中斷向量表

中斷向量表又稱中斷服務程序入口地址表。8086/8088系統(tǒng)允許處理256種類型的中斷,對應類型號為0~FFH。在存儲器的00000H~003FFH,占1K字節(jié)空間,用作存放中斷向量。每個類型號占4個字節(jié),高2個字節(jié)存放中斷入口地址的段地址,低2個字節(jié)存放段內偏移地址。各個中斷處理程序的段地址和段內偏移地址按中斷類型號順序存放在中斷向量表中。因此由中斷類型號n×4即可得到相應中斷向量的地址,取4n和4n十1單元中的內容(中斷入口段內偏移地址)裝入指令指針寄存器IP,取4n十2和4n十3單元中內容(中斷入口段地址)裝入代碼段寄存器CS,即可轉入中斷處理程序。1.中斷向量表§7-2中斷處理過程

——中斷向量表

1/14/202317類型255中斷入口……類型32中斷入口類型31中斷入口……類型5中斷入口類型4中斷入口(溢出中斷)類型3中斷入口(斷點中斷)類型2中斷入口(NMI)類型1中斷入口(單步中斷)類型0中斷入口(除法出錯)IPCSIPCSIPCS03FF07C08000000400800C010014專用中斷系統(tǒng)使用供用戶使用(224個)(5個)(27個)圖8-48086/8088中斷向量表§7-2中斷處理過程

——中斷向量表

1/14/202318

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

②利用DOS功能調用來設置中斷服務程序的入口地表

§7-2中斷處理過程

——中斷向量表

1/14/202319方法一:MOVAX,0;主程序中設置MOVES,AXMOVDI,N×4;中斷類型號×4MOVAX,OFFSETINTRAD;送中斷子程序的偏移地址至AXCLDSTOSW;偏移地址送到[4n],[4n+1]單元MOVAX,SEGINTRADSTOSW;段地址送到[4n+2],[4n+3]單元STI;開中斷……INTRAD:……;中斷服務子程序IRET用指令來設置中斷服務程序的入口地址表§7-2中斷處理過程

——中斷向量表

1/14/202320方法二:MOVAX,0;主程序中設置MOVES,AXMOVBX,N×4;中斷類型號×4MOVAX,OFFSETINTRAD;置偏移地址

MOVES:WORDPTR[BX],AXMOVAX,SEGINTRAD;置段地址送

MOVES:WORDPTR[BX+2],AXSTI;開中斷……INTRAD:……;中斷服務子程序IRET①

用指令來設置中斷服務程序的入口地址表§7-2中斷處理過程

——中斷向量表

1/14/202321設置中斷向量:把由AL中指定中斷類型號的中斷向量DS:DX,放置在中斷向量表中。預置:AL=中斷類型號DS:DX=中斷服務程序入口地址AH=25H執(zhí)行:INT21H

②利用DOS功能調用來設置中斷服務程序的入口地址表取中斷向量:把由AL中指定中斷類型號的中斷向量.預置:AL=中斷類型號AH=35H執(zhí)行:INT21H返回:ES:BX=中斷服務程序入口地址§7-2中斷處理過程

——中斷向量表

1/14/202322MOVAL,N;取中斷向量到ES:BXMOVAH,35HINT21HPUSHES;存原中斷向量PUSHBXPUSHDSMOVAX,SEGINTRAD;設置中斷向量段地址在DSMOVDS,AXMOVDX,OFFSETINTRAD;設置中斷向量偏移地址在DXMOVAL,N;中斷類型號n在ALMOVAH,25H;設置中斷向量INT21H

利用DOS功能調用來設置中斷服務程序的入口地址表§7-2中斷處理過程

——中斷向量表

1/14/202323 POPDS ……;中斷在此段程序內產生并響應

POPDX;恢復原中斷向量 POPDS MOVAL,N MOVAH,25H INT 21H RETINTRAD: …… IRET

利用DOS功能調用來設置中斷服務程序的入口地址表§7-2中斷處理過程

——中斷向量表

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

對外部可屏蔽中斷INTR,可用硬件電路(例如通用并行接口芯片8212)設計產生中斷類型號?!?-2中斷處理過程

——中斷向量表

1/14/202325三、中斷程序的編寫方法:主程序初始化:①設置中斷向量。設置8259A的中斷屏蔽寄存器的中斷屏蔽位。設置CPU中斷允許位標志IF(開中斷STI)。

§7-2中斷處理過程

——中斷向量表

1/14/202326硬件(外設接口)和CPU自動完成:①外設接口向CPU的INTR端發(fā)出中斷請求。當前指令執(zhí)行完后,CPU發(fā)兩個中斷響應信號INTA給外設接口。CPU取中斷類型號n。CPU自動將當前PSW、CS、IP內容入棧保護。清除IF、TF,禁止外部中斷和單步中斷。從中斷向量表中取中斷程序入口地址(IP、CS)。轉向中斷服務子程序。

§7-2中斷處理過程

——中斷向量表

1/14/202327中斷服務子程序:中斷服務子程序的功能各有不同,但所有的中斷服務子程序都有相同的結構形式。①程序開始必須保護中斷現場,可以通過一系列PUSH指令將CPU各寄存器的值入棧保護。②允許中斷嵌套時,用STI指令設置開中斷,使中斷允許標志IF為1。③執(zhí)行中斷處理程序。④用CLI指令設置關中斷,使中斷允許標志IF=0,禁止其他中斷請求進入。⑤給中斷命令寄存器送中斷結束命令EOI,使當前正在處理的中斷請求標志位被清除,否則同級中斷或低級中斷的請求仍會被屏蔽掉?!?-2中斷處理過程

——中斷服務子程序

1/14/202328⑥恢復中斷時的現場,通過一系列POP指令將CPU各寄存器的值恢復。⑦用中斷返回指令IRET返回主程序,此時堆棧中保存的斷點和標志值分別裝入IP、CS和PSW?!?-2中斷處理過程

——中斷服務子程序

說明:中斷服務程序中開中斷,是為了允許中斷嵌套而設置的。恢復寄存器內容時,為了防止有中斷進入破壞其內容,先執(zhí)行了關中斷,然后在中斷返回時,原來的PSW返回,使IF=1,又再開中斷,這樣返回主程序時中斷請求能得到允許。中斷結束命令EOI一般在中斷處理結束前發(fā)出,使一次中斷處理的過程是完整的。1/14/202329 pushax ;1、保護現場 …… pushbx sti ;2、開中斷 …… ;3、中斷處理 cli ;4、關中斷 popbx ;5、恢復現場 …… popax sti ;6、開中斷和中斷返回

iret 1/14/202330§7-2中斷處理過程

——中斷服務子程序

例7-9編寫中斷處理程序,要求主程序運行時,每10秒響鈴一次,同時屏幕上顯示信息“Thebellisring!”。分析:①利用系統(tǒng)定時器:每1/18.2秒中斷一次,調用一次INT1CH;②INT1CH的處理程序只有一條IRET指令;③編寫一段程序替代INT1CH,實現相應功能。注意:①保存原中斷向量;②設置新中斷向量;③恢復原中斷向量。1/14/202331§7-2中斷處理過程

——中斷服務子程序

DATA SEGMENT ;定義數據段 COUNTDW1 MESSDB‘Thebellisring!’,0AH,0DH,‘$’DATA ENDSSTACK SEGMENT ;定義堆棧段 STTDB100DUP(?) TOPLABLEWORDSTACKENDSCODE SEGMENT ;定義代碼段MAIN PROC FAR ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK1/14/202332§7-2中斷處理過程

——中斷服務子程序

START: MOV AX,STACK ;堆棧段初始化

MOV SS,AX MOV SP,OFFSETTOP

PUSH DS ;程序段前綴

SUB AX,AX PUSH AX

MOV AX,DATA ;數據段初始化

MOV DS,AX;主程序初始化 ①設置中斷向量

MOV AL,1CH ;取原中斷向量,ES:BXMOV AH,35HINT 21H PUSH ES ;存儲原中斷向量 PUSH BX PUSH DS1/14/202333§7-2中斷處理過程

——中斷服務子程序

MOV DX,OFFSETRING ;RING的偏移地址

MOV AX,SEGRING ;RING的段地址

MOV DS,AX

MOV AL,1CH ;設置新中斷向量

MOV AH,25HINT 21H POP DS …… IN AL,21H ;②設置中斷屏蔽位(8259A) AND AL,0FEH OUT 21H,AL

STI ;③設置中斷允許標志

1/14/202334§7-2中斷處理過程

——中斷服務子程序

;程序主體

MOV DI,2000

;延時DELAY: MOV SI,3000

DELAY1:DEC SI

JNZ DELAY1

DEC DI

JNZDELAY

POP DX ;取原中斷向量,DS:DX

POP DS MOVAL,1CH ;恢復原中斷向量

MOVAH,25H INT 21H RETMAIN ENDP 1/14/202335§7-2中斷處理過程

——中斷服務子程序

;中斷服務程序RING PROCNEAR

PUSHDS ;①保護現場PUSHAXPUSHCXPUSHDX

MOVAX,DATA ;設置串顯示首地址

MOVDS,AX STI ;②開中斷(允許嵌套) DECCOUNT ;③中斷服務程序主體

JNZEXIT ;10s計數,不到零,退出

;到零,執(zhí)行中斷服務程序1/14/202336

MOV DX,OFFSETMESS

;顯示信息(參見P161)MOV AH,09H

INT21H

MOV DX,100 ;設定總延時常數

IN AL,61H ;響鈴(參見P113)

ANDAL,0FCH ;清零61H端口的D1和D0位SOUND:XOR AL,02H ;D1位:0→1→0→1……

OUT 61H,AL MOVCX,140H ;設定“響/不響”的延時常數WAIT: LOOPWAIT DEC DX JNZSOUND MOVCOUNT,182 ;設定10s的值

§7-2中斷處理過程

——中斷服務子程序

1/14/202337EXIT: CLI

;④恢復現場前關中斷, ;防止新中斷進入破壞原被保護現場的內容 ;⑤送中斷結束命令EOIPOPDX ;⑥恢復中斷現場 POPCX

POP AX

POP DS

IRET ;⑦中斷返回RINGENDPCODE ENDS

END START

§7-2中斷處理過程

——中斷服務子程序

1/14/202338四、中斷響應時序CPU對可屏蔽中斷請求的響應過程要執(zhí)行兩個連續(xù)的中斷響應INTA總線周期,每個總線周期包括4個時鐘周期Tl~T4。第一個中斷響應總線周期,CPU通知外設準備響應中斷,外設應該準備好中斷類型號;第二個中斷響應總線周期,CPU接收外設接口發(fā)來的中斷類型號。如下圖所示?!?-2中斷處理過程

——中斷響應時序

1/14/202339§7-2中斷處理過程

——中斷響應時序

1/14/202340CPU將地址/數據總線浮空,在T2~T4期間發(fā)中斷響應信號INTA給8259A,表示CPU響應此中斷請求,禁止其它總線控制器的總線請求。在最大模式時,CPU啟動LOCK信號,通知系統(tǒng)中總線仲裁器8289,使系統(tǒng)中其它處理器不能訪問總線。1.第一個INTA周期§7-2中斷處理過程

——中斷響應時序

1/14/202341

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

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

§7-2中斷處理過程

——中斷響應時序

1/14/202342

8086要求中斷請求信號INTR必須維持2個時鐘周期的高電平。否則CPU執(zhí)行完一條指令后,如果總線接口部件正在執(zhí)行總線周期,則會使中斷請求得不到響應而執(zhí)行其他的總線周期。8086工作在最大模式時,S2S1S0組合為000,通過總線控制器8288發(fā)出INTA中斷響應信號。8086不允許在兩個INTA周期之間響應總線保持請求,但如果同時出現中斷請求和總線保持請求,則CPU先對總線保持請求服務。3.說明§7-2中斷處理過程

——中斷響應時序

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

——中斷響應時序

1/14/202344

概述多個中斷源同時向CPU請求中斷時,CPU先響應優(yōu)先級高的中斷請求。當CPU正在處理中斷時,有更高優(yōu)先級別的中斷請求進入,并且IF=1,CPU先響應更高級別的中斷請求,而屏蔽低級的中斷請求,形成中斷嵌套,或稱為多重中斷。多個中斷源的中斷流程如圖7-7所示,與單級中斷流程圖7-2相比,流程圖中增加了:①屏蔽本級與較低級中斷請求;②中斷服務前要開中斷,以允許中斷嵌套;③恢復現場前要關中斷,使恢復現場不受干擾;④中斷返回時自動開中斷,以允許其它中斷能被CPU響應?!?-3中斷優(yōu)先級和中斷嵌套

——概述

§7-3中斷優(yōu)先級和中斷嵌套1/14/202345中斷服務子程序關中斷恢復現場返回開中斷執(zhí)行一條指令關中斷取下一條指令保護現場屏蔽本級和低級中斷中斷?是否圖7-7多個中斷源中斷流程圖§7-3中斷優(yōu)先級和中斷嵌套

——概述

1/14/202346一、中斷優(yōu)先級

IBMPC機中規(guī)定優(yōu)先級從高到低的次序為:內中斷(除法錯,INTO,INTn)不可屏蔽中斷(NMI)可屏蔽中斷(INTR)單步中斷可屏蔽中斷的優(yōu)先級設定有三種方法:§7-3中斷優(yōu)先級和中斷嵌套

——中斷優(yōu)先級

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

§7-3中斷優(yōu)先級和中斷嵌套

——中斷優(yōu)先級

1/14/202348

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

——中斷優(yōu)先級

1/14/2023493.矢量中斷優(yōu)先級§7-3中斷優(yōu)先級和中斷嵌套

——中斷優(yōu)先級

中斷類型寄存器由中斷請求決定圖8-9矢量中斷優(yōu)先權控制器的原理圖IR1……IR0IR71/14/202350二、中斷嵌套

§7-3中斷優(yōu)先級和中斷嵌套

——中斷嵌套

1/14/202351

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

——中斷嵌套

1/14/202352

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

1/14/2023537.4可編程中斷控制器Intel8259A一、8259A的功能具有8級優(yōu)先權控制,通過級聯(lián)可擴展到64級優(yōu)先權控制(主從式中斷系統(tǒng))每一級中斷都可以單獨屏蔽或允許可提供中斷類型號傳送給CPU,從而能迅速地轉至中斷服務程序可通過編程選擇多種不同的工作方式1/14/202354二、8259A的內部結構及引腳7.4可編程中斷控制器Intel8259A1/14/2023558259A的級聯(lián)緩沖/比較器緩沖方式8259A通過總線驅動器和數據總線相連SP/EN作輸出端(連總線驅動器允許端)EN=0,數據:8259A→CPUEN=1,數據:CPU→8259A非緩沖方式8259A直接與數據總線相連SP/EN作輸入端SP=1,主片SP=0,從片7.4可編程中斷控制器Intel8259A1/14/2023561、8259A的編程結構SP/ENCA0CA1CA2IORIOW總線D0~D7數據線D0~D7INTAINTRA0片選譯碼A5~A9CSA0RD

INTAWRINT

I3I4ICW1芯片控制

ICW2中斷類型號

ICW3主從片連接關系

ICW4方式控制0111A010010100OCW1

中斷屏蔽寄存器IMR

00

OCW2優(yōu)先級設置、發(fā)EOI

01

OCW3特殊屏蔽,查詢方式設置處理部分控制部分00000000

ISR當前中斷服務寄存器PR優(yōu)先級裁決器VCCGND100A0IR0IR1IR2IR3IR4IR5IR6IR7IRR中斷申請寄存器00000000

三、8259A的中斷管理方式7.4可編程中斷控制器Intel8259A1/14/2023574個初始化命令寄存器ICW1、ICW2ICW3、ICW43個操作命令寄存器OCW1(IMR)OCW2、OCW3當前中斷服務寄存器ISR中斷申請寄存器IRR

8259A內部有9個可讀寫的寄存器8259A的編程結構

I3I4ICW1芯片控制

ICW2中斷類型號

ICW3主從片關系

ICW4方式控制處理部分控制部分00000000

ISR當前中斷服務寄存器PR優(yōu)先級裁決器IRR中斷申請寄存器00000000

中斷屏蔽寄存器IMROCW2

10010100

00

01

OCW3OCW18259A中斷控制器1/14/202358(1)初始化命令字(ICW1-ICW4)

決定8259A的工作方式通常是在計算機系統(tǒng)啟動時在初始程序設置,一旦設定,一般在系統(tǒng)工作過程不再改變。例開機后,BIOS將8259A初始化為:①IR0~IR7中斷申請信號為上升沿觸發(fā)方式;②IR0~IR7對應的中斷類型號分別為08H~0FH;③優(yōu)先級IR0最高,IR7最低;7.4可編程中斷控制器Intel8259A1/14/202359(2)操作命令字(OCW1,OCW2,OCW3)

在應用程序中設定,動態(tài)地控制CPU處理中斷的過程(3)ISR和IRR存放當前8259A的狀態(tài)

通過讀取ISR和IRR的內容,可了解當前8259A工作情況7.4可編程中斷控制器Intel8259A1/14/202360(1)全嵌套方式8259A的中斷請求輸入端引入的中斷具有固定的優(yōu)先權排隊順序,IR0為最高優(yōu)先級,IR1為次高優(yōu)先級,依次類推,IR7為最低優(yōu)先級。

2、優(yōu)先級設置方式7.4可編程中斷控制器Intel8259A1/14/202361(2)特殊全嵌套方式特殊全嵌套方式和全嵌套方式基本相同,只有一點不同,就是在特殊全嵌套方式下,當處理某一級中斷時,如果有同級的中斷請求,那么,也會給予響應,從而實現一種對同級中斷請求的特殊嵌套。

注:特殊全嵌套僅用于多個8259A級連時的主8259A,而不能用于從屬8259A或單8259A系統(tǒng)。

7.4可編程中斷控制器Intel8259A1/14/202362(3)優(yōu)先級自動循環(huán)方式。初始時,優(yōu)先次序為IR0→IR7,IR0最高,IR7最低。當某級中斷響應后,則優(yōu)先級降為最低。而其后的與之相鄰的優(yōu)先級升為最高。如,IR3響應后的優(yōu)先級次序變?yōu)镮R4,IR5,IR6,IR7,IR0,IR1,IR2,IR3。(4)優(yōu)先權特殊循環(huán)方式。優(yōu)先權特殊循環(huán)方式與優(yōu)先權循環(huán)方式相比僅有一點不同,就是在優(yōu)先權特殊循環(huán)方式下,一開始的最低優(yōu)先權是由編程確定的。7.4可編程中斷控制器Intel8259A1/14/2023633、中斷結束的管理方式(固定優(yōu)先級的中斷結束)

中斷結束的管理就是用不同的方式使ISR中相應位清零。普通結束方式EOI

8259A每得到一次EOI命令,就將ISR中已置位的各位中優(yōu)先級最高的位復位。特殊結束方式SEOI

該方式的特殊性在于,除了普通EOI方式的功能外,將明確指明本次復位的ISR位。自動結束方式AEOI

自動EOI方式是利用響應中斷時最后一個響應脈沖的后沿執(zhí)行一次普通EOI,而不需要CPU發(fā)送EOI指令,這時CPU為中斷服務而ISR沒有指示。7.4可編程中斷控制器Intel8259A1/14/2023644、循環(huán)優(yōu)先級的循環(huán)方法在循環(huán)優(yōu)先級方式中,與中斷結束方式聯(lián)合,有三種循環(huán)結束,結束時并確定下面的優(yōu)先權排隊。(1)普通EOI循環(huán)方式當任地級中斷結束處理完后,使CPU給8259A回送普通EOI循環(huán)命令,8259A收到EOI循環(huán)命令后將ISR寄存器中最高優(yōu)先級的IRi置“1”位清“0”并賦給它最低優(yōu)先級,將最高優(yōu)先級賦給它的下一級IRi+1。7.4可編程中斷控制器Intel8259A1/14/202365(2)特殊EOI循環(huán)方式特殊EOI循環(huán)方式即指定最低級循環(huán)方式,最低優(yōu)先級由編程決定,最高優(yōu)先級也相應而定,這樣在當前中斷服務結束前,使CPU給8259A回送特殊EOI結束命令,8259A收到此命令字后,指定最低優(yōu)先級,并重新排列優(yōu)先級別。(3)自動EOI循環(huán)方式自動EOI方式是利用響應中斷時最后一個響應脈沖的后沿執(zhí)行一次普通EOI,自動將ISR寄存器中相應位清0,并立即改變各級中斷的優(yōu)先級別,改變方式與普通EOI循環(huán)循環(huán)方式相同。這時CPU為中斷服務而ISR沒有指示,使用這種方式要小心,防止重復嵌套產生。7.4可編程中斷控制器Intel8259A1/14/202366

IR7

IR6

IR5

IR4

IR3

IR2

IR1

IR0

ISR

內容

0

0

1

0

0

1

0

0

原始狀

態(tài)

優(yōu)先級

7

6

5

4

3

2

1

0

ISR內容

0

0

1

0

0

0

0

0

處理完IR2

優(yōu)先級

4

3

2

1

0

7

6

5

ISR內容

0

0

0

0

0

0

0

0

處理完IR5

優(yōu)先級

1

0

7

6

5

4

3

2

IR7

IR6

IR5

IR4

IR3

IR2

IR1

IR0

ISR

內容

0

1

0

0

0

1

0

0

原始狀

態(tài)

優(yōu)先級

7

6

5

4

3

2

1

0

ISR內容

0

1

0

0

0

1

0

0

執(zhí)行置位

優(yōu)先權

優(yōu)先級

3

2

1

0

7

6

5

4

ISR內容

0

1

0

0

0

0

0

0

處理完IR2

優(yōu)先級

4

3

2

1

0

7

6

5

普通EOI循環(huán)方式特殊EOI循環(huán)方式(正在處理IR2)1/14/2023675、中斷屏蔽方式

(1)普通屏蔽方式。這種屏蔽方式是通過編程將中斷屏蔽字寫入IMR而實現的。若寫入某位為1,則對應的中斷請求被屏蔽;為0,則對應的中斷請求被開放。(2)特殊屏蔽方式。在執(zhí)行較高級的中斷服務時,希望開放較低級的中斷請求。采用普通屏蔽方式是不能實現這一要求的,因為用普通方式時,即使把較低級的中斷請求開放,但由于ISR中當前正在服務的較高中斷級的對應位仍為“1”,它會禁止所有優(yōu)先級比它低的中斷請求。采用特殊屏蔽方式,可在中斷服務程序中用中斷屏蔽命令字來屏蔽當前正在服務的中斷級別(即設置IMR的相應位為“1”),同時使ISR中對應位清“0”,這樣就不但屏蔽了當前正在服務的中斷級,同時真正開放了其它優(yōu)先級較低的中斷請求。

7.4可編程中斷控制器Intel8259A1/14/2023686、中斷請求引入方式(2)電平觸發(fā)方式

8259A依靠IR引腳上的有效高電平信號來觸發(fā),而與有效電平出現的方式和時間無關。(1)邊沿觸發(fā)方式

利用IR輸入信號由低電平跳向高電平時觸發(fā)。當IR產生上升沿后,應保持高電平直到中斷被響應為止。(3)查詢方式

允許8259A不工作于中斷方式,而是以查詢方式工作。CPU中的IF=0時,禁止中斷請求,CPU要使用軟件查詢來確定中斷源,才能實現對外設的中斷服務。因此即有中斷的特點,又有查詢的特點。7.4可編程中斷控制器Intel8259A1/14/202369四8259A的編程方法初始化命令字ICW,操作命令字OCW;系統(tǒng)復位后,應初始化編程,按次序只寫一次;

設定觸發(fā)方式、緩沖方式、類型號基值、優(yōu)先級、結束方式初始化后,在任何位置可操作編程,沒有嚴格順序,允許重置,以動態(tài)改變8259A的操作與控制。7.4可編程中斷控制器Intel8259A1/14/2023701.8259A的初始化命令字(1)初始化命令字ICW1D3(LTIM)表示中斷請求信號起作用的觸發(fā)方式。D3=1為電平觸發(fā),D3=0為邊沿觸發(fā)。D1(SNGL)表示系統(tǒng)是使用單片8259A還是多片8259A。D1=1為單片,D1=0為多片。D0(ICW4)表示是否需要ICW4。D0=1為需要,D0=0為不需要。D2(ADI)在8080/8085CPU模式下用,80x86CPU模式下不用。7.4可編程中斷控制器Intel8259A1/14/202371(2)初始化命令字ICW2設定8259A的中斷類型號D7~D3為中斷類型號的高5位,由用戶給出。低3位由8259A按IR0~IR7三位編碼值自動填入。7.4可編程中斷控制器Intel8259A1/14/202372(3)初始化命令字ICW3(多片時需要)8259A作為主片的格式:(Di=1表示IRi接有從片)8259A作為從片的格式:

表示從片的INT輸出與主片8259A中的哪一個IRi相連接

7.4可編程中斷控制器Intel8259A1/14/202373(4)初始化命令字ICW4

D0(μPM):D0=1為80x86系統(tǒng),D0=0為8080/8085系統(tǒng)。D1(AEOI):表示是否采用自動結束中斷方式,D1=1為自動中斷結束方式,D1=0為非自動中斷結束方式。D2(M/S):D2=1為主片,D2=0為從片。D3(BUF):D3=1表示有緩沖器D3=0表示沒有緩沖器。(決定8259A和系統(tǒng)數據總線之間是否有緩沖器)D4(SFNM):D4=1為特殊全嵌套方式,D4=0為全嵌套方式。(用于設定級聯(lián)方式下的優(yōu)先權管理方式)

7.4可編程中斷控制器Intel8259A1/14/202374寫入初始化命令字的流程:

7.4可編程中斷控制器Intel8259A1/14/2023752.8259A的操作命令字

(1)操作命令字OCW1(屏蔽操作命令字)Mi=1表示IRi上的中斷請求被屏蔽

7.4可編程中斷控制器Intel8259A1/14/202376(2)操作命令字OCW2(中斷方式命令字)D7(R):中斷排隊是否循環(huán)的標志。R=1為優(yōu)先級循環(huán)方式,R=0為固定優(yōu)先級方式。D6(SL):選擇L2L1L0編碼是否有效的標志。若SL=1,則L2L1L0編碼有效,若SL=0,則無效。D5(EOI):中斷結束命令。D5=1時,則使現行的ISR中最高優(yōu)先級的相應位復位(一般中斷結束方式),或由L2L1L0指定的ISR相應位復位(特殊中斷結束方式)。D2D1D0(L2L1L0):對應8個二進制編碼,有兩個作用:一是用在特殊EOI命令中,表示清除的是ISR的哪一位;另一是用在優(yōu)先權特殊循環(huán)方式中,表示系統(tǒng)中最低優(yōu)先級編碼。

7.4可編程中斷控制器Intel8259A1/14/202377(3)操作命令字OCW3(狀態(tài)操作命令字)D6D5:決定8259A是否工作于特殊屏蔽方式。D6D5為11時,8259A為特殊屏蔽方式;D6D5為10時,8259A為一般屏蔽方式。D1D0:兩位規(guī)定隨后讀取的寄存器。D1D0為11時,表示要讀ISR;D1D0為10時,表示要讀IRR。D2(P):決定8259A是否處于程序查詢方式。D2=1時,8259A處于程序查詢方式。當8259A發(fā)出查詢命令后,隨后從偶地址讀出的數據即為中斷請求狀態(tài)字。OCW3命令字有三個功能:①設置或撤消特殊屏蔽方式;②設置中斷查詢方式;③設置讀8259A內部寄存器方式。7.4可編程中斷控制器Intel8259A1/14/2023788259A的應用舉例8086最小模式與8259A接口如下,外設中斷請求分別從IR2、IR4、IR7引入,中斷類型號從0C0H~0C7H,采用上升沿觸發(fā),寫出8259A初始化程序。

D0~D7RDWRA1A7A6A5A0M/IOA4A3A2INTRINTAD0~D7RDWRA0IR2IR4IR7CSINTINTAGG2AG2BCY1BA≥1≥1端口地址:10000100B84H10000110B86H7.4可編程中斷控制器Intel8259A1/14/202379CLI ;關中斷MOV AL,13H;ICW1:00010011B邊沿觸發(fā),單片,需要ICW4OUT 84H,ALMOV AL,0C0H;ICW2:中斷類型碼的D7~D3位為11000OUT 86H,ALMOV AL,01H;ICW4:00000001B全嵌套,非緩沖,非自動EOIOUT 86H,ALMOV AL,6BH;OCW1:01101011B屏蔽IR0.1.3.5.6OUT 86H,ALSTI ;開中斷若要讀IRR的內容MOVAL,0AH;OCW3:00001010BOUT84H,ALNOPINAL,84H7.4可編程中斷控制器Intel8259A1/14/202380若要讀ISR的內容MOVAL,0BH;OCW3:00001011BOUT84H,ALNOPINAL,84H若要讀IMR的內容,可直接從高地址讀入INAL,86H若中斷是關閉的,可采用查詢方式,看是否有中斷NEXT:MOVAL,0CH;OCW3:00001100BOUT84H,ALNOPINAL,84HTESTAL,80HJZNEXT7.4可編程中斷控制器Intel8259A1/14/202381例2:某8086系統(tǒng)中有兩片8259A,從片接主片的IR4,主片IR2、IR5有外部中斷引入,類型號分別為62H、65H;從片IR0、IR3有外部中斷引入,類型號分別為40H、43H。設主片的一個端口地址為82H,從片的一個端口地址為84H,分別進行初始化編程。分析端口地址:主片1000001082H

1000000080H從片

1000010084H

1000011086H類型號基值:主片60H從片40H7.4可編程中斷控制器Intel8259A1/14/202382主片初始化程序MOVAL,11H;ICW1,00010001B邊沿觸發(fā)級連OUT80H,AL;MOVAL,60H;類型號基值OUT82H,AL;MOVAL,00010000B;OUT82H,AL;MOVAL,11H;ICW4,00010001B特殊嵌套非緩沖非自動OUT82H,AL;MOVAL,11001011B;OUT82H,AL;7.4可編程中斷控制器Intel8259A1/14/202383從片初始化程序MOVAL,11H;00010001B邊沿觸發(fā)級連OUT84H,AL;MOVAL,40H;類型號基值OUT86H,AL;MOVAL,00000100B;OUT86H,AL;MOVAL,01H;00000001B完全嵌套非緩沖非自動80X86OUT86H,AL;MOVAL,11110110B;OUT86H,AL;7.4可編程中斷控制器Intel8259A1/14/202384【例3】試編程實現主機每次響應8259A的IR2中斷請求,顯示字符串“Thisisa8259Ainterrupt!”,中斷10次結束。8259A偶地址端口為20H,奇地址端口為21H,IR2的中斷類型號為0AH。程序流程如圖,程序如

溫馨提示

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

評論

0/150

提交評論