微機原理課件-第7章中斷系統(tǒng)_第1頁
 微機原理課件-第7章中斷系統(tǒng)_第2頁
 微機原理課件-第7章中斷系統(tǒng)_第3頁
 微機原理課件-第7章中斷系統(tǒng)_第4頁
 微機原理課件-第7章中斷系統(tǒng)_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章中斷系統(tǒng)1第7章中斷系統(tǒng)2

本章主要闡述中斷的基本概念、中斷的功能、中斷的分類、中斷的響應(yīng)過程,概括了實模式與保護模式中斷技術(shù)的區(qū)別與聯(lián)系以及中斷與異常的區(qū)別與聯(lián)系;并以可編程中斷控制器8259A為例,介紹了中斷控制器8259A的組成結(jié)構(gòu)、寄存器模型、級聯(lián)方式、中斷應(yīng)用程序的編寫方法以及微機系統(tǒng)中斷的實現(xiàn)過程。7.1中斷概述37.1.1中斷的基本概念

中斷最初是作為處理器與外部設(shè)備交換信息的一種控制方式提出的。由此,最初的中斷全部是對外部設(shè)備而言的,稱為外部中斷或硬件中斷。

隨著計算機技術(shù)的發(fā)展,中斷的范圍也隨之擴大,出現(xiàn)了內(nèi)部軟件中斷的概念,它是為解決機器內(nèi)部運行時出現(xiàn)的異常以及為編程方便而提出的。

中斷是指CPU在正常運行程序時由于內(nèi)部/外部事件,或由程序事先安排的事件發(fā)生,而被中途打斷,且轉(zhuǎn)到為事件服務(wù)的程序中去,服務(wù)完畢,再返回原程序中。7.1中斷概述47.1.2

中斷源中斷源是能夠向CPU發(fā)出中斷請求的事件。常見中斷源有:(1)輸入、輸出設(shè)備中斷。如鍵盤、打印機等工作過程中已做好接收或發(fā)送準備。(2)數(shù)據(jù)通道中斷。如磁盤、磁帶等要同主機進行數(shù)據(jù)交換等。(3)實時時鐘中斷。(4)故障中斷。例如電源掉電、設(shè)備故障等要求CPU進行緊急處理等。(5)系統(tǒng)中斷。如運算過程出現(xiàn)溢出、數(shù)據(jù)格式非法,數(shù)據(jù)傳送過程出現(xiàn)校驗錯,控制器遇到非法指令等等。(6)為了調(diào)試程序而設(shè)置的中斷。7.1中斷概述5外部中斷或硬件中斷通常稱為中斷。軟件中斷或異常中斷通常稱為異常(Exception)。7.1中斷概述67.1.3中斷處理過程下面以外部向量中斷為例,將中斷處理的過程概括如下:(1)初始化:設(shè)置工作方式,送屏蔽字,送中斷號。中斷控制器初始化編程。(2)發(fā)啟動命令(送命令字),啟動設(shè)備。(3)設(shè)備完成工作,申請中斷。(4)中斷控制器匯集各請求,經(jīng)屏蔽、判優(yōu),形成中斷號,并向CPU送INT。(5)CPU響應(yīng),發(fā)批準INTA。7.1中斷概述77.1.3中斷處理過程(6)中斷控制器送出中斷號。(7)CPU進入中斷響應(yīng)周期,將中斷類型碼轉(zhuǎn)換為向量地址,查向量表,進入中斷服務(wù)程序。(8)CPU執(zhí)行中斷服務(wù)程序,進行中斷處理(與接口中數(shù)據(jù)緩沖器交換數(shù)據(jù))。(9)中斷處理完畢,返回原程序(開中斷)。7.1中斷概述87.1.4中斷優(yōu)先級與中斷嵌套微機系統(tǒng)中常見的中斷其中斷優(yōu)先級由高向低分別是:內(nèi)部中斷和異常軟件中斷外部非屏蔽中斷外部可屏蔽中斷中斷的排隊方式主要有:1.按優(yōu)先級排隊——根據(jù)任務(wù)的輕重緩急;2.循環(huán)輪流排隊——CPU輪流響應(yīng)各個中斷源的中斷請求。7.1中斷概述97.1.4中斷優(yōu)先級與中斷嵌套

當CPU正在響應(yīng)某一中斷源的請求,執(zhí)行為其服務(wù)的中斷服務(wù)程序時,如果有優(yōu)先級更高的中斷源發(fā)出請求,CPU將中止正在執(zhí)行的中斷服務(wù)程序而轉(zhuǎn)入為新的中斷源服務(wù),等新的中斷服務(wù)程序執(zhí)行完后,再返回到被中止的中斷服務(wù)程序,這一過程稱為中斷嵌套。

中斷嵌套可以有多級,具體級數(shù)原則上不限,只取決于堆棧深度。7.1中斷概述107.1.4中斷優(yōu)先級與中斷嵌套

中斷的優(yōu)先級與中斷嵌套的基本原理如圖1所示。7.1中斷概述117.1.5中斷向量與中斷向量表

發(fā)出中斷請求的外設(shè)或引起中斷的內(nèi)部原因稱為中斷源。尋找中斷源的操作過程稱為中斷識別。獲得中斷服務(wù)程序的入口地址是中斷處理過程中的關(guān)鍵。

因此,在實模式引入了中斷向量及中斷向量表,通過中斷向量表中的中斷向量獲取入口地址;在保護模式引入了中斷門描述符及中斷門描述符表IDT,通過IDT中的中斷門描述符獲取入口地址。7.1中斷概述127.1.5中斷向量與中斷向量表(1)實模式下的中斷管理

在實模式下,每個中斷類型對應(yīng)一段中斷服務(wù)程序。中斷向量是中斷服務(wù)程序的入口地址,包括中斷服務(wù)程序的段基址CS,偏址IP,共4個字節(jié)。中斷向量表是所有的中斷向量集中存放到存儲器的某一區(qū)域,在實模式下,該表稱為中斷向量表。

實模式下中斷類型號通過中斷向量表與中斷服務(wù)程序入口地址相聯(lián)。中斷向量表包含256個中斷向量。每個中斷向量包含兩個字(4個字節(jié)),高地址字為中斷服務(wù)程序所在代碼段的段基址,低地址字為中斷服務(wù)程序第一條指令的偏移量。實模式下,中斷向量表存放在內(nèi)存最低端的1K單元之中,物理地址00000H~003FFH。7.1中斷概述137.1.5中斷向量與中斷向量表

中斷向量指針用于指出中斷向量存放在中斷向量表的位置(或地址)。

在微機系統(tǒng)中,中斷類型碼和中斷向量所在位置之間的對應(yīng)關(guān)系為:向量地址=中斷向量最低字節(jié)的指針=中斷類型號(n)×4,如圖所示。7.1中斷概述147.1.5中斷向量與中斷向量表7.1中斷概述15例1.60號中斷的中斷向量CS60:IP60

存放在存儲器的什么位置?(假如CS60=2345H;IP60=7890H)

地址=0000+60×4=240=0F0H

再如:硬盤INT

13H

向量地址=0000:13H×4=0000:004CH。即004CH開始連續(xù)4個單元中用來存放“INT13H”的中斷向量。32位微處理器實模式下的中斷向量7.1中斷概述177.1.5中斷向量與中斷向量表(2)保護模式下的中斷管理

保護模式下采用中斷描述符表IDT管理各級中斷。IDT中最多可以有256個描述符,對應(yīng)于256個中斷源。IDT表中的描述符包括了中斷服務(wù)程序的入口地址信息。IDT可置于內(nèi)存的任意區(qū)域,其起始地址由中斷描述符表寄存器(IDTR)設(shè)置。保護模式下中斷服務(wù)程序入口地址的計算方法:

根據(jù)中斷類型號n從中斷描述符表中找到中斷描述符,中斷類型號n的中斷描述符的起始地址=IDT(中斷描述符表基地址)+n×8

根據(jù)中斷描述符中段選擇子從GDT或LDT中找到段描述符根據(jù)段描述符提供的段基值和中斷描述符提供的偏移量形成物理地址7.1中斷概述187.1.5中斷向量與中斷向量表(3)中斷向量表的填寫系統(tǒng)未配置系統(tǒng)軟件的情況:

例1.假設(shè)中斷類型號為60H,中斷服務(wù)程序的段地址為SEG-INTR60,偏移地址是OFFSET-TNTR60,編寫裝入程序:

7.1中斷概述197.1.5中斷向量與中斷向量表CLI ;關(guān)中斷CLD ;串操作時地址增量MOV AX,0 MOV ES,AX ;中斷向量表在0段MOV DI,4×60H ;中斷向量指針 DI MOV AX,OFFSET-INTR;中斷服務(wù)程序偏移值存于AXSTOSW ;AX存于[DI]和[DI+1]中,DI=DI+2MOV AX,SEG-INTR;段地址存于AXSTOSW;AX存于[DI]和[DI+1]中,DI=DI+2STI ;開中斷

7.1中斷概述20有系統(tǒng)資源的情況:

修改中斷向量并非修改中斷號,而是修改同一中斷號下的中斷服務(wù)程序入口地址。

在實模式下,用DOS功能調(diào)用INT21H的35H號和25H號功能35H號功能

功能:從向量表中讀取中斷向量

入口參數(shù):AH=35H,AL=中斷號

出口參數(shù):ES:BX=讀取的中斷向量段基址:偏移量25H號功能

功能:向向量表中寫入中斷向量

入口參數(shù):AH=25H,AL=中斷號DS:DX=要寫入的中斷向量的段基址:偏移量

出口參數(shù):無35H號功能和25H號功能的中斷類型號是同一個7.1中斷概述217.1.5中斷向量與中斷向量表中斷向量表的修改的具體步驟:有系統(tǒng)資源的情況1)取中斷向量——用35H功能,獲取原中斷向量,并保存在字變量中(假設(shè)中斷類型號為n):格式:MOVAH,35H

MOVAL,nH;n為中斷類型號

INT21H出口參數(shù):BX放原中斷程序的偏移地址ES放原中斷程序的段地址即原中斷向量取出放到ES:BX中保存7.1中斷概述227.1.5中斷向量與中斷向量表2)設(shè)置新中斷向量——用25H功能,設(shè)置新中斷向量,取代原中斷向量,以便當中斷發(fā)生后轉(zhuǎn)移到新中斷服務(wù)程序中。入口參數(shù):DX放新中斷服務(wù)程序入口地址的偏移地址

DS放新中斷服務(wù)程序入口地址的段地址 MOV

AH,25H

MOVAL,nH;n為中斷類型號

INT

21H把DS:DX指向的中斷向量放到中斷向量表類型號為n的中斷向量處7.1中斷概述237.1.5中斷向量與中斷向量表3)恢復(fù)中斷向量——新中斷服務(wù)程序完畢后,用25H功能恢復(fù)原中斷向量例:假如原中斷服務(wù)程序的中斷號為N,新中斷程序的入口地址的段基址為SEG_INTRnew,偏移地址為OFFSET_INTRnew,中斷向量修改程序:DATA SEGMENTOLD_SEG DW?OLD_OFF DW? …DATA ENDS

….7.1中斷概述24

…. MOV AH,35H MOV AL,N INT 21H MOV OLD_SEG,ES MOV OLD_OFF,BX MOV AL,N MOV AH,25H MOV DX,SEG_INTRnew MOV DS,DX MOV DX,OFFSET_INTRnew INT 21H7.1中斷概述25….MOV AH,25HMOV AL,NMOV DX,SEGOLD_SEGMOV DS,DXMOV DX,OFFSETOLD_OFFINT 21H中斷服務(wù)程序:INTRnewPROCFAR

……

IRETINTRnew

ENDP

7.280X86中斷系統(tǒng)26對于中斷系統(tǒng),在Intel80X86微處理器、Pentium4微處理器、Itanium處理器中都用到了可編程中斷控制器PIC(ProgrammableInterruptController)。作為中斷系統(tǒng)的一個重要組成部分,它對于硬件中斷起著重要的控制作用。7.280X86中斷系統(tǒng)277.2.180X86中斷管理

微處理器為每個不同類型的中斷與異常分配一個中斷號,以便識別和處理。16位和32位微處理器支持256個中斷號,并且對中斷與異常統(tǒng)一編號為0號~255號。微處理器以提交的中斷號為向?qū)У街袛嘞蛄勘砘蛑袛嗝枋龇鞩DT找到相應(yīng)的中斷/異常處理程序:

在實模式下:中斷號×4得一個指針,指向中斷向量表,在中斷向量表中可以找到中斷服務(wù)程序的入口;

保護模式下:中斷號×8得一個指針,指向中斷描述表IDT,在IDT中找到中斷/異常處理程序的中斷門/陷阱門描述符,然后通過門描述符獲得中斷/異常處理程序的入口。7.280X86中斷系統(tǒng)287.2.28086/8088中斷處理過程實模式下的中斷/異常處理全過程包括以下4個階段:

(1)中斷申請與響應(yīng)握手

(2)標志位的處理與斷點保存

(3)向中斷服務(wù)程序轉(zhuǎn)移并執(zhí)行中斷服務(wù)程序(4)返回斷點7.280X86中斷系統(tǒng)297.2.28086/8088中斷處理過程可屏蔽中斷的響應(yīng)周期當:1.CPU收到INT中斷請求2.前一條指令執(zhí)行完,且中斷標志位IF=1進入中斷響應(yīng)周期;完成兩個工作:1)第一個INTA脈沖時,CPU產(chǎn)生LOCK信號,使總線處于封鎖狀態(tài),防止DMA占用總線。2)第二個INTA時,LOCK撤除,總線解封。

7.280X86中斷系統(tǒng)307.2.28086/8088中斷處理過程異常的處理(不可屏蔽)

異常是由于指令執(zhí)行結(jié)果有錯而使指令不能執(zhí)行而產(chǎn)生的故障,其故障號由系統(tǒng)安排。因此一旦發(fā)生異常,就自動按所分配的故障號通過中斷向量表進入異常處理程序,而不需要從外部獲取中斷號。

異常具有軟件中斷的特征,不產(chǎn)生中斷響應(yīng)總線周期。異常處理程序不需發(fā)中斷結(jié)束命令EOI。

7.280X86中斷系統(tǒng)317.2.28086/8088中斷處理過程(3)80X86微機系統(tǒng)實模式與保護模式下中斷處理過程的比較

兩種模式下對中斷/異常的處理過程存在很大的差別,根本原因是微處理器的兩種模式下對存儲器的管理方式不同和是否引入保護機制所致。

實模式下使用中斷向量和中斷向量表;保護模式下使用中斷門描述符和中斷門,保護模式下使用描述符來描述虛擬地址空間,而實模式下使用段來表示實際地址空間的緣故。

7.280X86中斷系統(tǒng)327.2.28086/8088中斷處理過程(3)80X86微機系統(tǒng)實模式與保護模式下中斷處理過程的比較

保護模式下必須通過門(中斷門、陷阱門、任務(wù)門)描述符來實現(xiàn)向服務(wù)程序轉(zhuǎn)移,實模式直接轉(zhuǎn)移到服務(wù)程序。保護模式下引入了保護機制,而實模式下沒有保護機制。保護模式下可以轉(zhuǎn)移到一個以獨立任務(wù)方式出現(xiàn)的中斷/異常服務(wù)程序,而實模式下不可以。保護模式下,執(zhí)行中斷程序控制轉(zhuǎn)移和返回斷點的過程中,都要進行一系列的特權(quán)級與條件保護性檢測,而實模式對此不予考慮。實模式下不支持多任務(wù),只有保護模式下才有多任務(wù)的功能。

7.3可編程中斷控制器8259A337.3.18259A概述

為了幫助CPU管理中斷,Intel公司為80X86CPU專門設(shè)計了可編程中斷控制器,該芯片有很強的中斷管理功能,單片8259A可以管理8級外部中斷,并對中斷可以有效屏蔽、多個中斷進行判優(yōu)、嵌套、多種結(jié)束方式的管理,該芯片還提供級聯(lián),并且與CPU相連不需要任何額外電路。

可編程中斷控制器PIC(ProgramableInterruptController)82C59A作為中斷系統(tǒng)的核心器件,協(xié)助CPU管理外部中斷,是一個十分重要的芯片,可以針對多個中斷請求,對其進行屏蔽、優(yōu)先級等管理,以及向CPU轉(zhuǎn)達中斷請求,當接到CPU的響應(yīng)后送出中斷類型號。7.3可編程中斷控制器8259A347.3.18259A概述8259A是一種可編程中斷控制器,有如下功能:(1)接收和記錄各級中斷源的中斷請求。(2)優(yōu)先級排隊管理:判優(yōu),確定是否響應(yīng)和響應(yīng)哪一級的中斷請求。(3)當CPU響應(yīng)中斷時,為CPU提供中斷類型碼。(4)屏蔽和開放中斷請求。(5)一片Intel8259可管理8個中斷請求。(6)允許9片8259級聯(lián),構(gòu)成64級中斷系統(tǒng)。7.3可編程中斷控制器8259A357.3.28259A的外特性主要信號線如下:D7~~D0:數(shù)據(jù)總線,雙向,三態(tài)。用于與CPU之間傳送命令、狀態(tài)、中斷類型碼。RD:讀信號,輸入。用來通知8259把某個內(nèi)部寄存器的值送數(shù)據(jù)線D7~D0

。WR:寫信號,輸入。用來通知8259把數(shù)據(jù)線D7~D0上的值寫入內(nèi)部某個寄存器。CS:片選信號,輸入。通過地址譯碼邏輯電路與地址總線相連。A0:地址線,輸入。用來指出當前8259的哪個端口被訪問,選擇內(nèi)部寄存器的端口地址。7.3可編程中斷控制器8259A367.3.28259A的外特性從8259的端口地址:A0H,A1HINT:中斷請求,輸出。把IR7~IR0上的最高優(yōu)先級請求傳送到CPU的INTR引腳,向CPU發(fā)中斷請求。INTA:中斷響應(yīng),接收CPU的中斷應(yīng)答信號。CPU發(fā)出的中斷響應(yīng)信號為兩個負脈沖。第一個負脈沖作為中斷應(yīng)答信號,第二個負脈沖到來時,8259從數(shù)據(jù)線D7~D0上發(fā)出中斷類型碼。7.3可編程中斷控制器8259A377.3.28259A的外特性IR7~~IR0:外設(shè)中斷請求輸入。在含有多片8259的復(fù)雜系統(tǒng)中,主片的IR7~IR0分別與從片的INT端相連,用來接收來自從片的中斷請求。CAS2~~CAS0:級聯(lián)線,用來指出具體從片。主控時為輸出,從控時為輸入。SP/EN:從設(shè)備編程/緩沖器允許,雙向,輸入時用來決定8259是主片還是從片(1-主片;0-從片,非緩沖方式);輸出時,使數(shù)據(jù)總線驅(qū)動器啟動(緩沖方式),控制緩沖器的接收/發(fā)送。7.3可編程中斷控制器8259A387.3.28259A的外特性IR7~~IR0:外設(shè)中斷請求輸入。在含有多片8259的復(fù)雜系統(tǒng)中,主片的IR7~IR0分別與從片的INT端相連,用來接收來自從片的中斷請求。CAS2~~CAS0:級聯(lián)線,用來指出具體從片。主控時為輸出,從控時為輸入。SP/EN:從設(shè)備編程/緩沖器允許,雙向,輸入時用來決定8259是主片還是從片(1-主片;0-從片,非緩沖方式);輸出時,使數(shù)據(jù)總線驅(qū)動器啟動(緩沖方式),控制緩沖器的接收/發(fā)送。7.3可編程中斷控制器8259A397.3.38259A的內(nèi)部結(jié)構(gòu)7.3可編程中斷控制器8259A407.3.38259A的內(nèi)部結(jié)構(gòu)(1)中斷請求寄存器(IRR)中斷請求寄存器(IRR)為8位,接受來自IR0~IR7的中斷請求信號,當IR0~IR7上出現(xiàn)某一中斷請求信號時,IRR對應(yīng)位被置1;(2)中斷屏蔽寄存器IMR中斷屏蔽寄存器IMR為8位(8個中斷輸入),若IRR(中斷請求寄存器)中記錄的8個中斷請求中有任何一個需要屏蔽,只要將IMR的相應(yīng)位置1即可,未被屏蔽的中斷請求可以進入優(yōu)先權(quán)判別器;它的內(nèi)容由CPU通過對8259初始化時設(shè)置設(shè)定。7.3可編程中斷控制器8259A417.3.38259A的內(nèi)部結(jié)構(gòu)(3)中斷服務(wù)寄存器ISR8位,保存當前正在處理的中斷請求,例如,如果ISR的D2=1,表示CPU正在為來自IR2的中斷請求服務(wù)。(4)優(yōu)先權(quán)判別器PR若某中斷請求正在被處理,8259A外部又有新的中斷請求,則由優(yōu)先權(quán)判別器將新進入的中斷請求和當前正在處理的中斷進行比較,以決定哪一個優(yōu)先級更高。若新的中斷請求比正在處理的中斷級別高,由PR通過控制邏輯向CPU發(fā)出中斷申請INT,正在處理的中斷自動被禁止,先處理級別高的中斷。7.3可編程中斷控制器8259A427.3.48259A的工作方式7.3可編程中斷控制器8259A437.3.48259A的工作方式1.引入中斷請求的方式(1)邊沿觸發(fā)方式正跳沿接入IRi,向8259A請求中斷。上跳沿后可一直維持高電平,不會產(chǎn)生中斷。(2)電平觸發(fā)方式高電平申請中斷。但在響應(yīng)中斷后必須及時清除高電平,以防止引起第二次誤中斷。7.3可編程中斷控制器8259A447.3.48259A的工作方式(3)中斷查詢方式用軟件確定中斷請求位的方式。特點:a.外設(shè)仍通過8259A的IRi申請中斷,但8259A卻不

使用INT信號向CPU申請中斷。b.CPU內(nèi)部關(guān)中斷(IF=0)c.CPU用軟件查詢確定中斷源用OUT指令向8259A的偶地址發(fā)一個查詢命令字OCW3。再用IN指令從8259A的偶地址讀這個查詢字,以確定中斷源。7.3可編程中斷控制器8259A457.3.48259A的工作方式2.屏蔽中斷源的方式屏蔽中斷源的方式有常規(guī)屏蔽方式和特殊屏蔽方式兩種。常規(guī)屏蔽方式:用OCW1使屏蔽寄存器IMR中的一位或幾位置1來屏蔽一個或幾個中斷源的中斷請求。特殊屏蔽方式:用OCW3的D6D5=11屏蔽自己。7.3可編程中斷控制器8259A467.3.48259A的工作方式3.中斷優(yōu)先級排隊方式(1)完全嵌套方式:

特點:a.優(yōu)先級別IR0最高,IR7最低,且級別固定不變。

b.只允許響應(yīng)高級中斷。c.中斷嵌套的深度取決于整個中斷系統(tǒng)所具有的中斷級數(shù)。(2)特殊全嵌套方式:一般是自動和特殊兩種

具有與完全嵌套方式基本相同的功能。

另有:可以響應(yīng)同級的中斷請求。7.3可編程中斷控制器8259A477.3.48259A的工作方式4.中斷結(jié)束方式(EOI)8259A的中斷結(jié)束方式有自動中斷結(jié)束方式、普通中斷結(jié)束方式和特殊中斷結(jié)束方式三種。一般情況下,全嵌套方式用普通和自動中斷結(jié)束方式;特殊全嵌套方式用特殊中斷結(jié)束方式;優(yōu)先級自動循環(huán)方式用普通中斷結(jié)束方式;優(yōu)先級特殊循環(huán)方式用特殊中斷結(jié)束方式。

自動中斷結(jié)束方式:系統(tǒng)一旦進入中斷服務(wù)程序,當8259收到第二個中斷響應(yīng)脈沖INTA就將中斷服務(wù)寄存器對應(yīng)位清0,不需發(fā)中斷結(jié)束命令。用于沒有多級中斷嵌套的場合。7.3可編程中斷控制器8259A487.3.48259A的工作方式4.中斷結(jié)束方式(EOI)

普通中斷結(jié)束方式:該方式主要用于全嵌套方式。中斷服務(wù)程序返回主程序前,發(fā)一條中斷結(jié)束命令,使8259A中斷服務(wù)寄存器ISR中優(yōu)先級最高的位復(fù)位,表示當前處理的中斷服務(wù)程序結(jié)束。

特殊中斷結(jié)束方式:該方式用于非全嵌套方式,在非全嵌套方式中通過中斷服務(wù)寄存器ISR無法確定哪一級中斷是最后響應(yīng)和處理的,因此在中斷服務(wù)程序返回主程序之前發(fā)一條特殊的中斷結(jié)束命令,在命令中指出要將中斷服務(wù)寄存器ISR的哪一位復(fù)位。7.3可編程中斷控制器8259A497.3.48259A的工作方式5.連接系統(tǒng)總線的方式連接系統(tǒng)總線的方式有數(shù)據(jù)緩沖方式和非緩沖方式兩種。7.3可編程中斷控制器8259A507.3.58259A的編程命令8259A編程命令有兩種設(shè)置工作方式:初始化命令字ICW1~ICW4

控制操作:操作命令字:CW1~OCW3每片8259A有2個片內(nèi)地址

A0=0偶地址端口A0=1奇地址端口所有的命令都是通過這兩個端口按一定的規(guī)則寫入8259A。7.3可編程中斷控制器8259A517.3.58259A的編程命令8259的初始化命令字:

(預(yù)置命令字ICW1—ICW4)ICW1~ICW4在初始化程序中設(shè)定,且在整個工作過程中保持不變。ICW1~ICW4必須按順序設(shè)定。ICW1寫入8259偶地址中。ICW2~ICW4寫入8259奇地址中。7.3可編程中斷控制器8259A527.3.58259A的編程命令(1)ICW1格式:對A0=0的端口寫入一個D4=1的數(shù)據(jù),表示初始化編程開始。D3——

LTIM:中斷信號的觸發(fā)方式 0:邊沿;1:高電平D1——

SGNL:是否單片方式0:多片級聯(lián)

1:單片D0——

IC4

:是否有ICW40:無 1:有寫ICW1后,中斷屏蔽寄存器全部清零,優(yōu)先級IR0最高IR7最低7.3可編程中斷控制器8259A537.3.58259A的編程命令7.3可編程中斷控制器8259A547.3.58259A的編程命令(2)ICW2

:設(shè)置中斷類型碼在寫ICW1之后,對A0=1的端口第一次寫入的數(shù)據(jù)是ICW2。設(shè)置D7~D3D2~D0為000(由8259A根據(jù)IR0~IR7自動填充為000~111)

例如,ICW2為20H,則8259的IR0~IR7對應(yīng)中斷類型碼為20H~27H,ICW2為40H,則8259的IR0~IR7對應(yīng)中斷類型碼為40H~47H7.3可編程中斷控制器8259A557.3.58259A的編程命令(3)ICW3:設(shè)置級聯(lián):

只有當系統(tǒng)中有多片8259A級聯(lián)時(ICW1中SNGL=0),才需在ICW2之后寫ICW3,且主片和從片的格式不同。對于主片:置1的位表示對應(yīng)的引腳IR有從片級聯(lián)。D7 D6 D5 D4 D3 D2 D1 D0IR4IR6IR5IR2IR1IR3IR0A01IR7IRi=0:表示IRi引腳上未接8259A從片1:表示IRi引腳上接有8259A從片對于從片:D2~D0表示該從片接在主片的哪個IR引腳上D7 D6 D5 D4 D3 D2 D1 D0XXXXID2ID1XID0A01IR0000IR1:001………IR7:111INTIR3IR6INT主片從片1從片2例:ICW3:主片:01001000B從片1:00000011B從片2:00000110B7.3可編程中斷控制器8259A地址總線控制總線數(shù)據(jù)總線8259A從片AINTCSINTAA0CAS0CAS1CAS2IR0IR7SP/EN…8259A從片BINTCSINTAA0CAS0CAS1CAS2IR0IR7SP/EN…8259A主片INTCSINTAA0CAS0CAS1CAS2IR0IR7SP/EN

…VCCGNDGND中斷申請(輸出)8259主從級聯(lián)7.3可編程中斷控制器8259A58(4)ICW4:設(shè)置模式

D7 D6 D5 D4 D3 D2 D1 D0SFNM000M/SAEOIBUF

PMA01當ICW1中的IC4=1時,有ICW4。D4——SFNM中斷的嵌套方式D1——AEOI自動結(jié)束中斷方式

D0——

PM微處理器類型

0:一般嵌套1:特殊全嵌套0:不自動清除ISR1:CPU響應(yīng)中斷后,自動清除ISR0:8080/8085/Z801:8086/80887.3可編程中斷控制器8259A(4)ICW4:設(shè)置模式

D3:BUF緩沖

1:8259通過數(shù)據(jù)緩沖器和總線相連,SP/EN引腳輸出,緩沖器選通端。

0:無緩沖,SP/EN引腳輸入,用作主片、從片選擇端。D2:M/S主片/從片選擇(BUF=1時,有效)

0:從片1:主片7.3可編程中斷控制器8259A607.3.58259A的編程命令2.8259的操作命令字OCW系統(tǒng)初始化完成以后,可以在應(yīng)用程序中進行操作編程。8259A有3條操作命令字:OCW1,OCW2,OCW3(1)OCW1——中斷屏蔽操作命令字Mi=1屏蔽中斷源IRiMi=0允許IRi端請求中斷例:MOVAL,0F7H;開放IR3中斷

OUT21H,AL7.3可編程中斷控制器8259A617.3.58259A的編程命令(2)OCW2——設(shè)置優(yōu)先級輪換方式和中斷結(jié)束方式對A0=0端口寫入D4D3=00的數(shù)據(jù),表示是OCW2R=1表示循環(huán);SL=1表示需要由L2~L1指定:EOI=1表示需要發(fā)中斷結(jié)束命令位。

在PC機中常用的EOI命令是: MOVAL,20H OUT20H,AL 7.3可編程中斷控制器8259A627.3.58259A的編程命令(3)OCW3

設(shè)置和撤銷特殊屏蔽方式

設(shè)置中斷查詢方式設(shè)置對8259A內(nèi)部寄存器的讀出。ESMMSMM0X:無效10:特殊屏蔽方式復(fù)位11:特殊屏蔽方式置位P:1:查詢8259A中斷狀態(tài)0:不查詢RRRIS0X:無效10:下次讀有效,讀IRR11:下次讀有效,讀ISR7.3可編程中斷控制器8259A637.3.58259A的編程命令(3)OCW3

設(shè)置和撤銷特殊屏蔽方式

設(shè)置中斷查詢方式設(shè)置對8259A內(nèi)部寄存器的讀出。查詢字格式: D7D6D5D4D3D2D1D0

IRXXXXW2W1W0

1表示有中斷請求

當前中斷請求的最高優(yōu)先級讀IRR:先向偶端口寫0AH,再讀偶端口讀ISR:先向偶端口寫0BH,再讀偶端口

讀優(yōu)先級最高的中斷請求IR(查詢8259A中斷狀態(tài)):先向偶端口寫0CH,再讀偶端口讀IMR:初始化后隨時可向奇端口讀7.3可編程中斷控制器8259A647.3.68259A在微機系統(tǒng)中對中斷管理的功能總結(jié)8259A與微處理器組成微機的中斷系統(tǒng),它協(xié)助CPU實現(xiàn)一些中斷事務(wù)的管理功能。(1)接收和記錄各級中斷源的中斷請求。(2)排隊管理:判優(yōu),確定是否響應(yīng)和響應(yīng)哪一級的中斷請求。(3)當CPU響應(yīng)中斷時,為CPU提供中斷類型碼。(4)屏蔽和開放中斷請求:一片Intel82C59可管理8個中斷請求,允許9片級聯(lián),構(gòu)成64級中斷系統(tǒng)。(5)執(zhí)行中斷結(jié)束命令:可屏蔽中斷的中斷服務(wù)程序,在中斷返回之前,要求發(fā)中斷結(jié)束命令。7.482C59A在32位微機中的應(yīng)用65

32位微機的微處理器已不使用單個的82C59A作為中斷處理的支持芯片,而采用芯片組。如在815EP芯片組的82801BA模塊中,集成了兩個82C59A可編程中斷控制器的功能,作為ISA兼容中斷提供可屏蔽中斷服務(wù)。

7.482C59A在32位微機中的應(yīng)用6682C59A的級聯(lián)(在32位微機中,實模式下82C59A的應(yīng)用) 82801BA模塊中有兩片82C59A,進行級聯(lián)可支持15級可屏蔽中斷處理.

(與16位微機的中斷系統(tǒng)在邏輯功能上兼容)IR0IR1IR2IR7…IRQ8IRQ9IRQ10CAS0~2IRQ11IRQ12IRQ13A0CSSP/ENINT從片INTARDWR8259AIR0IR1IR2IR7…IRQ0IRQ1IRQ2CAS0~2IRQ3IRQ4IRQ5A0CSSP/ENINT主片INTARDWR8259AIRQ14IRQ15

保留硬盤協(xié)處理器保留保留保留INT0AH實時鐘日時鐘鍵盤串行口2串行口1并行口2并行口2IRQ6IRQ7軟盤S0S1S2S0S1S2D0~7D0~7D0~7INTRINTAIORIOWCPU總線控制器+5V2.82C59A的初始化①中斷觸發(fā)方式采用邊沿觸發(fā),上跳變有效。②中斷屏蔽方式采用常規(guī)屏蔽方式,即使用OCW1向IMR寫屏蔽碼。③中斷優(yōu)先級排隊方式采用固定優(yōu)先級的完全嵌套方式④中斷結(jié)束方式采用非自動結(jié)束方式的兩種命令格式,即在中斷服務(wù)程序服務(wù)完畢,中斷返回之前,發(fā)結(jié)束命令代碼20H或6XH均可(X為0~7)。

7.482C59A在32位微機中的應(yīng)用⑤級聯(lián)方式采用兩片主/從連接方式,并且,規(guī)定把從片的中斷申請輸出引腳INT連到主片的中斷請求輸入引腳IR2上。兩片級聯(lián)處理15級中斷。

⑥15級中斷號的分配為:中斷號08H~0FH對應(yīng)IRQ0~IRQ7;中斷號70H~77H對應(yīng)IRQ8~IRQ15。

⑦兩片82C59A的端口地址分配為:主片82C59A的兩個端口是20H(A0=0)和21H(A0=1);從片82C59A的兩個端口是0A0H和0A1H。7.482C59A在32位微機中的應(yīng)用82C59A芯片的初始化流程送ICW1A0=0,D4=1送ICW2A0=1寫ICW3A0=1級聯(lián)方式?是否

需要IC4?是否送ICW4A0=1按順序?qū)0=1端口寫入命令字MOV

AL,11H OUT INTA00,AL

JMP SHORT$+2

MOV

AL,08H OUT INTA01,AL JMP SHORT$+2

MOV AL,04H OUT INTA01,AL JMP SHORT$+2

MOV AL,01H OUT INTA01,ALICW1ICW2ICW3ICW4ICW1ICW2ICW3ICW4初始化主片 初始化從片INTA00 EQU020H;INTA01 EQU021H;MOV

AL,11H OUT

INTB00,AL

JMP SHORT$+2

MOV

AL,70H OUT INTB01,AL JMP SHORT$+2 MOV AL,02H OUT INTB01,AL JMP SHORT$+2 MOV AL,01H OUT INTB01,ALINTB00 EQU0A0H;INTB01 EQU0A1H;3.實模式下中斷應(yīng)用程序設(shè)計用戶不能在系統(tǒng)機上另行增加中斷控制器當用戶使用系統(tǒng)的中斷資源時,82C59A在系統(tǒng)中總是按照初始化所規(guī)定的方式進行工作,用戶無法更改。

用戶利用系統(tǒng)中斷資源開發(fā)可屏蔽中斷應(yīng)用程序所要做的主要工作是編寫主程序和中斷服務(wù)程序。在主程序中,使用OCW1(屏蔽方式)進行屏蔽與開放,在中斷服務(wù)程序中使用OCW2(中斷結(jié)束方式)發(fā)中斷結(jié)束信號例

中斷用于數(shù)據(jù)采集系統(tǒng)要求從通道5采集1024個8位數(shù)據(jù),采集的數(shù)據(jù)以中斷方式傳送到內(nèi)存緩沖區(qū)BUFR。7.482C59A在32位微機中的應(yīng)用3.實模式下中斷應(yīng)用程序設(shè)計轉(zhuǎn)換結(jié)束信號EOC經(jīng)接口電路GAL20V8內(nèi)部邏輯組合后,送到IRQ9去申請中斷。中斷結(jié)束方式為指定結(jié)束方式。數(shù)據(jù)采集系統(tǒng)的A/D轉(zhuǎn)換器ADC0809的端口地址為:通道選擇端口為320H,啟動轉(zhuǎn)換端口為321H,讀數(shù)據(jù)端口為322H。中斷控制器主片82C59A端口:OCW1端口為21H,OCW2端口為20H。從片82C59A端口:OCW1端口為0A1H,OCW2端口為0A0H。7.482C59A在32位微機中的應(yīng)用7.482C59A在32位微機中的應(yīng)用

IR1中斷號是71H,82C59A的兩個端口地址為0A0H和0A1H。

因為是從片通過主片申請中斷的,所以在開放/屏蔽中斷請求和發(fā)中斷結(jié)束命令時,要對IRQ9和主片都要進行操作。

7.482C59A在32位微機中的應(yīng)用STACK SEGMENT PARA“STACK” DW 200 DUP(?)STACK ENDSDATA SEGMENT PARA“DATA” INTOA_OFF DW? INTOA_SEG DW? BUFR DB1024DUP(0) POINT DW?DATA E

溫馨提示

  • 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

提交評論