第5章 中斷技術_第1頁
第5章 中斷技術_第2頁
第5章 中斷技術_第3頁
第5章 中斷技術_第4頁
第5章 中斷技術_第5頁
已閱讀5頁,還剩133頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

浙江工業(yè)大學計算機學院1內(nèi)容回顧DMA傳輸基本概念DMA的傳送過程、傳送方式和操作類型。DMA控制器8237A8237A的內(nèi)部結構和外部引腳。8237A的內(nèi)部寄存器(10種)及其地址分配。8237A的編程步驟和工作時序。PC中的DMA應用DMA系統(tǒng)的組成。單片DMA系統(tǒng)和雙片DMA系統(tǒng)。DMA系統(tǒng)的應用實例。23第五章中斷技術8259A的應用舉例48086/8088微機中斷系統(tǒng)28259A可編程中斷控制器3PC機中的中斷應用5中斷技術概述1中斷方式下,CPU無需完全服務于某個外設,效率高。當出現(xiàn)某些異?;蚰惩庠O有請求時,CPU暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行某一特定的程序,執(zhí)行完后再返回原來的程序處繼續(xù)執(zhí)行。

5.1中斷技術概述4中斷指CPU正在執(zhí)行某程序的過程中,由于出現(xiàn)了某些異?;蛲庠O提出了某種請求,CPU暫停當前程序,轉(zhuǎn)去處理異常或外設請求的程序,執(zhí)行完后再返回原來被終止的程序處繼續(xù)執(zhí)行。該過程稱為中斷。主程序未發(fā)生中斷時,CPU正在執(zhí)行的程序稱為主程序。5

(1)中斷的常用術語中斷服務程序ISR處理中斷事件的程序,又稱中斷子程序。不同的中斷對應不同的ISR。斷點中斷時,主程序中被終止指令的下一條指令的地址。CPU轉(zhuǎn)去執(zhí)行ISR時,斷點被壓入棧中進行保護;ISR執(zhí)行完畢后,CPU通過出棧操作從棧頂獲得中斷斷點,確保能返回到主程序處繼續(xù)執(zhí)行。6中斷源引起中斷的事件或設備。內(nèi)部中斷:在CPU的內(nèi)部產(chǎn)生。例:CPU執(zhí)行程序時遇到的特殊情況,如:除法錯。外部中斷:在CPU的外部產(chǎn)生。例:外設提出的中斷,如電源故障。中斷類型號微機系統(tǒng)中有多個中斷源。為便于區(qū)分,為每個中斷源分配一個編號,即中斷類型號。7中斷接口當中斷源向CPU發(fā)中斷請求時,需由一個電路來進行管理,如:接收中斷請求、屏蔽/打開中斷請求、中斷優(yōu)先級排隊、中斷嵌套和中斷結束等。實現(xiàn)中斷管理的邏輯電路稱為中斷接口。本章使用8259A可編程中斷控制器對系統(tǒng)的中斷進行管理。8中斷識別指CPU確定哪一個中斷源發(fā)出中斷請求的過程。目的:最終形成該中斷源所對應的中斷服務程序的入口地址,實現(xiàn)程序的轉(zhuǎn)移。中斷識別的2種方法:查詢法:采用軟件或硬件查詢技術來確定發(fā)出中斷請求的中斷源。硬件法:由可編程中斷控制器來提供中斷類型號。9中斷向量和中斷向量表中斷向量:指中斷服務程序的入口地址。每個ISR都有一個確定的入口地址。入口地址=段基址CS:

偏移地址IP,共4個字節(jié)。中斷向量表:將系統(tǒng)中所有的中斷向量集中起來,按中斷類型號從小到大的順序存放在內(nèi)存某區(qū)域。該存儲區(qū)域稱為中斷向量表。PC機中共有256個中斷(0~255),每個中斷向量占4個字節(jié),共占1KB的存儲區(qū)域。用0000~03FFH的內(nèi)存單元存儲中斷向量表。1011

從中斷源請求中斷到完成ISR后返回主程序的過程,稱為中斷過程。包含4個階段。中斷源請求中斷外設發(fā)出中斷請求時,中斷接口電路需設置中斷請求觸發(fā)器,保持外設的中斷請求信號,直到CPU響應該中斷后才清除它。中斷接口電路應設置中斷屏蔽寄存器,CPU可通過對其進行設置,使得某些中斷源的中斷請求不能提交到CPU。12

(2)中斷過程中斷判優(yōu)由于同一時刻可能會有多個中斷源同時請求中斷服務,因此接口電路需對這些中斷源進行優(yōu)先級判別和優(yōu)先級排隊。這個過程稱為中斷判優(yōu)。CPU按照優(yōu)先級的高低順序來響應中斷。13中斷響應收到中斷請求后,若CPU滿足響應條件,則進入中斷響應周期。CPU響應中斷的條件:CPU當前指令執(zhí)行結束。沒有更高級的中斷請求在執(zhí)行。CPU處于開中斷狀態(tài)(IF=1)??捎弥噶罡淖僆F的狀態(tài):STI開中斷;CLI關中斷。1415中斷響應及處理過程示意圖中斷響應周期需完成的操作(CPU硬件自動完成)清IF和TF單步陷阱標志,以免在響應過程中被新的中斷源中斷,破壞了當前中斷處理的現(xiàn)場。將標志寄存器FLGAS和中斷斷點(CS:IP)壓棧保存。查找中斷向量表,獲得ISR的入口地址,轉(zhuǎn)去執(zhí)行ISR。中斷服務CPU轉(zhuǎn)入ISR后,需做以下幾件事情:保護現(xiàn)場:ISR將要用到的寄存器壓棧,以免其數(shù)據(jù)破壞。開中斷:以便在執(zhí)行ISR時,能響應更高級的中斷請求。中斷處理:處理中斷請求所要求的操作。關中斷:保證在恢復現(xiàn)場時不被新的中斷打斷。恢復現(xiàn)場:在ISR結束前,執(zhí)行出棧操作,恢復各寄存器的內(nèi)容,以便主程序正確執(zhí)行。開中斷:保證返回主程序后仍能響應中斷。中斷返回:ISR的最后一條指令為IRET,它將IP、CS和FLAGS的內(nèi)容依次彈出,以便恢復到主程序的斷點處。16中斷管理包括中斷源識別、優(yōu)先級排隊和中斷嵌套。中斷源識別PC機內(nèi)有多個中斷源,CPU收到中斷請求后,需識別是哪一個中斷源發(fā)出了中斷請求信號,以便執(zhí)行相應的中斷服務程序。中斷源識別的兩種方法:軟件查詢:CPU逐個查詢各中斷源的狀態(tài),從而確定是哪個設備發(fā)出了中斷請求。硬件處理:中斷接口電路將要響應的中斷類型號送給CPU。17

(3)中斷管理2.中斷的優(yōu)先級排隊當有多個中斷源同時請求中斷時,由于CPU在同一時刻只能響應并處理一個中斷請求,因此,需根據(jù)中斷的性質(zhì)及輕重緩急對中斷源進行優(yōu)先級排隊。CPU先響應優(yōu)先級高的中斷請求。高優(yōu)先級的中斷請求可中斷低優(yōu)先級的中斷服務。優(yōu)先級排隊的方法:軟件查詢法硬件菊花鏈排隊法可編程中斷控制器排隊法18軟件查詢法19軟件查詢法的實現(xiàn):屏蔽法20INAL,20H;讀取中斷請求觸發(fā)器的內(nèi)容TESTAL,80H

JNEA_ISP;外設A有請求,則轉(zhuǎn)入A的服務程序TESTAL,40H

JNEB_ISP ;外設B有請求,則轉(zhuǎn)入B的服務程序TESTAL,20HJNEC_ISP ;外設C有請求,則轉(zhuǎn)入C的服務程序……移位法21INAL,20HSHLAL,1JCA_ISP ;外設A有請求,則轉(zhuǎn)至A的服務程序SHLAL,1JCB_ISP ;外設B有請求,則轉(zhuǎn)至B的服務程序SHLAL,1JCC_ISP ;外設C有請求,則轉(zhuǎn)至C的服務程序……軟件查詢法的優(yōu)缺點:優(yōu)點:實現(xiàn)簡單,節(jié)省硬件。缺點:中斷源較多時,查詢程序較長,由查詢轉(zhuǎn)入相應的中斷服務程序入口需要的時間較長。查詢的先后順序決定了中斷的優(yōu)先級順序:先被查詢的中斷,優(yōu)先級最高。22硬件菊花鏈法在每個外設的接口上接一個邏輯電路,這些電路構成一個鏈來實現(xiàn)中斷應答信號的控制,稱為菊花鏈。23(a)菊花鏈

(b)菊花鏈邏輯電路

菊花鏈工作原理中斷請求:設備A、B、C通過接口發(fā)出中斷請求:1有請求,0無請求。只要有一個設備發(fā)出請求,則INTR=1。中斷響應:若CPU允許中斷,則發(fā)INTA中斷響應信號。該信號先送給外設A的菊花鏈電路。若A沒有請求,則它輸出的INTA仍為0,繼續(xù)往下傳。若A有中斷請求,則經(jīng)過或門時,由于其中斷請求為1,故輸出的INTA為1,使得后繼的中斷得不到響應。24特點:越靠近CPU的外設,優(yōu)先級越高??删幊炭刂破髋抨牱ㄔ缙诘腜C多采用軟件查詢或菊花鏈法。目前的PC一般采用專用的可編程控制器芯片來完成中斷優(yōu)先級的排隊管理,如8259A。253.中斷嵌套CPU正在處理某個中斷的過程中,若出現(xiàn)了更高級的中斷請求,則CPU停止執(zhí)行級別低的ISR,而轉(zhuǎn)去處理級別更高的中斷。等高級別的中斷處理完后,再返回原來的低級中斷繼續(xù)執(zhí)行,依次類推,直到返回主程序。這種方式稱為多重中斷或中斷嵌套。2627內(nèi)容概要8259A的應用舉例48086/8088微機中斷系統(tǒng)28259A可編程中斷控制器3PC機中的中斷應用5中斷技術概述1中斷的常用術語:9個基本概念中斷過程:申請、判優(yōu)、響應、服務中斷管理:判優(yōu)、優(yōu)先級、嵌套8086/8088用8位二進制數(shù)表示一個中斷類型號,可區(qū)分256個中斷源。8086/8088中斷系統(tǒng)的結構28

(1)中斷的類型外部中斷

由CPU外的硬件產(chǎn)生,又稱硬件中斷。有以下2種:

①NMI(不可屏蔽中斷)觸發(fā),不受IF標志位控制。只要有NMI,CPU在當前指令結束后,立刻響應該中斷。中斷類型號為2,CPU無需發(fā)中斷應答即可立即執(zhí)行2號中斷的ISR。外部中斷中,NMI的優(yōu)先級最高,用于電源掉電、時鐘錯誤等緊急情況,一般用戶不能使用。29②INTR(可屏蔽中斷)高電平觸發(fā),必須保持到當前指令結束。受IF標志位控制。STI:允許中斷;CLI:禁止中斷。中斷類型號為08~0FH和070H~077H。當中斷允許時,CPU發(fā)出中斷應答信號INTA,并從8259A獲得中斷源的中斷類型碼。中斷響應的條件:有中斷請求系統(tǒng)處于開中斷狀態(tài)(IF=1)30內(nèi)部中斷

由CPU執(zhí)行指令產(chǎn)生的中斷,又稱軟件中斷。

①除法錯當除數(shù)為0,或?qū)Х枖?shù)進行除法運算時所得結果超出規(guī)定的范圍,則CPU自動產(chǎn)生該中斷。中斷類型號為0。31②單步中斷調(diào)試程序時用。CPU每執(zhí)行一條指令,就進入一次中斷。功能:顯示出CPU內(nèi)部各寄存器的內(nèi)容。受TF標志位控制。TF=1時,CPU自動產(chǎn)生單步中斷。中斷類型號為1。32③斷點中斷INT單字節(jié)中斷指令,類型號為3。調(diào)試時可在程序關鍵處設置斷點。當程序執(zhí)行到該指令處,轉(zhuǎn)去執(zhí)行一個斷點中斷。功能:顯示CPU內(nèi)部各寄存器的內(nèi)容,并給出一些提示信息。33④溢出中斷INTO單字節(jié)中斷指令。類型號為4。該指令常跟在帶符號數(shù)加、減法運算指令之后。若標志寄存器的OF=1,則執(zhí)行溢出中斷,其中斷服務程序給出出錯信息。⑤用戶定義的軟件中斷雙字節(jié)中斷指令INTn,由用戶定義,類型號為n。不可被屏蔽。CPU不發(fā)響應信號,中斷控制器不提供中斷類型號。34內(nèi)、外中斷的優(yōu)先級次序8086/8088系統(tǒng)中,除單步中斷外,所有內(nèi)部中斷的優(yōu)先級均高于外部中斷。除單步中斷外,所有內(nèi)部中斷都不能被屏蔽。

35中斷名中斷類型號優(yōu)先級除法出錯類型0高↑低INTn類型nINTO類型4NMI類型2INTR外設送入單步類型18086/8088系統(tǒng)支持256個中斷源,各個中斷源用不同的中斷類型號標識,即:0~255。每個中斷源都有相應的ISR,每個ISR都有不同的入口地址(又稱中斷向量)。每個入口地址由4個字節(jié)標識:低2個字節(jié):存放中斷入口的偏移地址(IP)。高2個字節(jié):存放中斷入口的段基址(CS)。系統(tǒng)各個中斷入口地址的集合形成中斷向量表。共占1KB空間,地址范圍0000H~03FFH(DS=0)。36

(2)中斷向量表37由于0~255號中斷的入口地址依次連續(xù)排列,故:已知某中斷的類型號為n,則其對應的ISR入口地址在中斷向量表中的存儲位置為4n。依次從4n處取出4個字節(jié)的內(nèi)容,低2個字節(jié)送入偏移地址IP,高2個字節(jié)送入段地址CS,即:(IP)←(4n+1,4n)。(CS)←(4n+3,4n+2)。獲得了中斷的入口地址,即可轉(zhuǎn)入相應的ISR執(zhí)行中斷處理過程。38【例5-1】已知類型號為15H的中斷,其ISR存放在內(nèi)存的5678H:0100H~5678H:0123H單元。畫出該中斷的中斷向量在中斷向量表中的位置和內(nèi)容。解:ISR的入口地址為5678H:0100H,其中IP=0100H,CS=為5678H。已知中斷類型號n=15H,n×4=15H×4=0054H,故0054H和0055H單元存放偏移地址0100H。0056H和0057H單元存放段地址5678H。由此可畫出中斷向量在中斷向量表中的位置和內(nèi)容。3940中斷向量表建立中斷類型號與中斷向量間的關系。中斷類型號固定不變,但其對應的中斷向量(即存儲的內(nèi)容)可以修改和變化。(系統(tǒng)中的專用中斷不允許修改)設置或修改中斷向量前,要關閉中斷,避免在設置或修改過程中被中斷。設置中斷向量的2種方法:直接寫入法利用DOS功能調(diào)用41

(3)中斷向量的設置與修改①直接寫入法

直接使用MOV指令把中斷向量寫入向量表對應的單元。方法:設中斷類型號為n,對應的中斷服務程序名為P1,則將P1程序的偏移地址放到內(nèi)存0000數(shù)據(jù)段的[4n+1]、[4n]單元中;將其段地址放到[4n+3]、[4n+2]單元中。4243CLI ;關中斷MOV AX,0MOV DS,AX ;中斷向量表段基址為0MOV BX,n*4 ;中斷類型號為nMOV AX,OFFSETP1 MOV DS:[BX],AX ;偏移地址放入4n,4n+1單元MOV AX,SEGP1 MOV DS:[BX+2],AX ;段地址寫入4n+2,4n+3單元STI ;開中斷【例5-2】某外設的中斷服務程序名為P1,中斷類型號為5。請使用直接寫入法設置其中斷向量。44CLI ;關中斷MOV AX,0MOV DS,AX ;中斷向量表段基址為0MOV AX,OFFSETP1MOV DS:[0014H],AX ;

4*5=0014HMOV AX,SEGP1 MOV DS:[0016H],AX ;段地址寫入0016H,0017HSTI ;開中斷②DOS功能調(diào)用寫入法

使用INT21H中斷的25H號功能調(diào)用,設置中斷向量。

功能號:AH=25H

入口參數(shù):DS=中斷服務程序入口地址的段基址DX=中斷服務程序入口地址的偏移量AL=中斷類型號45【例5-3】某外設的中斷服務程序名為P1,中斷類型號為5。請使用DOS功能調(diào)用法設置其中斷向量。46PUSHDS ;原DS入棧MOV AX,SEGP1;段基址存入DS中MOV DS,AX MOV AX,OFFSETP1 MOV DX,AX ;偏移地址存入DX中MOVAL,5

;中斷類型號在AL中MOVAH,25H;DOS調(diào)用功能號INT21HPOPDS

;DS出棧中斷向量的修改

中斷類型號不變,但是其指向的中斷服務程序(入口地址)改變,即中斷向量改變。

修改中斷向量的步驟:利用35H號功能,獲取原中斷向量,并保存。利用25H號功能,設置新的中斷向量。新的中斷服務程序服務完畢,利用25H號功能恢復原中斷向量。4735H號功能——讀取中斷向量

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

出口參數(shù):ES=中斷服務程序入口地址的段基址

BX=中斷服務程序入口地址的偏移地址25H號功能——設置新的中斷向量

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

DS=中斷服務程序入口地址的段基址

DX=中斷服務程序入口地址的偏移地址

出口參數(shù):無48【例5-4】修改類型號為n的中斷向量,使得新中斷服務程序入口地址的段基址為SEG_INTR,偏移地址為OFFSET_INTR。對應的程序段為:49MOV AH,35H;獲取原中斷向量MOV AL,n INT21H

;保存在ES:BX中MOV OLD_OFF,BX

;保存原中斷向量的偏移量

MOV BX,ESMOVOLD_SEG,BX;保存原中斷向量的段基址

50MOV AH,25H;設置新的中斷向量MOV AL,nMOVDX,SEG_INTR

MOVDS,DX

;DS=段基址MOVDX,OFFSET_INTR

;DX=偏移地址INT21H……MOV AH,25H;恢復原中斷向量MOV AL,nMOVDX,OLD_SEG

MOVDS,DX

;DS=段基址MOVDX,OLD_OFF

;DX=偏移地址INT21H51內(nèi)容概要8259A的應用舉例48086/8088微機中斷系統(tǒng)28259A可編程中斷控制器3PC機中的中斷應用5中斷技術概述1中斷的類型:外部中斷與內(nèi)部中斷中斷向量表:中斷入口地址的排列中斷向量表的設置與修改Intel8259A是一種可編程中斷控制器,可協(xié)助CPU進行中斷管理。其功能:接受和擴充外設的中斷請求中斷優(yōu)先級排隊提供中斷類型號屏蔽或打開中斷接受CPU命令或返回當前工作狀態(tài)一片8259A可直接管理8級中斷,通過級聯(lián)可擴展至64級中斷。通過對8259A進行編程,可設置多種工作方式,以滿足不同中斷系統(tǒng)的需要。52

5.38259A可編程中斷控制器53

(1)8259A的內(nèi)部結構1.數(shù)據(jù)總線緩沖器8位的雙向三態(tài)緩沖器,連接8259A與系統(tǒng)數(shù)據(jù)總線。用于在CPU與8259A間傳送數(shù)據(jù)、命令和狀態(tài)信息。2.讀/寫控制邏輯接收CPU命令,完成對8259A內(nèi)部端口的讀寫操作。具體操作內(nèi)容由CS、RD、WR和A0

信號來決定。543.級聯(lián)緩沖/比較器CAS0~CAS2用于多塊8259A的級聯(lián)。4.中斷請求寄存器(IRR)8位寄存器,通過引腳IR0

~IR7與8個中斷源相連。若IRi=1,表明對應的中斷源有中斷請求,則IRR寄存器相應的第i位置1。5.中斷屏蔽寄存器(IMR)8位寄存器,第i位為1,表示屏蔽IRi的請求。其值可通過軟件設置或改變。556.中斷優(yōu)先權判別電路PR對已進入IRR且未被IMR屏蔽的中斷請求進行優(yōu)先權判別,確定優(yōu)先級最高的中斷,向CPU發(fā)送中斷請求信號INT。若8259A正在為某一中斷服務時,又出現(xiàn)了新的中斷請求,則PR判斷新的中斷請求優(yōu)先級是否更高。若是,則進入中斷嵌套。567.中斷服務寄存器(ISR)8位,用來記錄CPU當前正在為哪些中斷源服務。當CPU響應IRi請求時,ISR中相應的位置1。當ISR中有多個1時,表明CPU處于中斷嵌套

中。當某個中斷處理完畢,ISR相應的位復位。578.控制邏輯作用:根據(jù)IRR、IMR和PR的狀態(tài),通過INT信號向CPU發(fā)送中斷請求。接受CPU的中斷響應信號INTA,置ISR相應的位,且使IRR相應的位清0,避免該中斷源的一次請求產(chǎn)生多次中斷。內(nèi)部包含7個寄存器:ICW1~ICW4

存放初始化命令字,用來設置8259A的工作方式和工作條件等。OCW1~OCW3存放操作命令字,用來對中斷處理過程進行動態(tài)控制。58幾個縮寫字母的含義IRR:中斷請求寄存器(InterruptRequestRegister)IMR:中斷屏蔽寄存器(InterruptMaskRegister)ISR:中斷服務寄存器(InServiceRegister)PR:優(yōu)先級裁決器(PriorityResolver)ICW:初始化命令字(InitializationCommandWord)OCW:操作命令字(OperationCommandWord)5960

(2)8259A外部引腳61D7~D0:雙向三態(tài)數(shù)據(jù)線,與系統(tǒng)數(shù)據(jù)總線相連,在8259A與CPU間傳送數(shù)據(jù)、命令和狀態(tài)信息。A0:選擇8259A內(nèi)寄存器的端口地址。2種端口地址:A0=0的端口為偶端口,A0=1的端口為奇端口。WR、RD、CS:寫、讀、片選信號。IR7~IR0:中斷請求信號,高電平或上升沿有效。INT:中斷請求信號,高有效。向CPU發(fā)中斷請求。INTA:中斷響應信號,為2個負脈沖。CAS2~CAS0:級聯(lián)信號線,雙向。主片8259A的CAS2~CAS0為輸出。從片8259A的CAS2~CAS0為輸入。SP/EN:主從片設定/允許緩沖信號,雙向雙功能。緩沖方式下,為輸出信號,EN信號控制緩沖器。非緩沖方式下,作為輸入信號,表示8259A是主片(SP=1)還是從片(SP=0)。621.8259A的工作過程單片8259A工作時,每次中斷處理過程如下:當IR7~IR0上有中斷請求,則IRR相應的位置1。對于已進入IRR且未被IMR屏蔽的中斷請求,PR電路進行優(yōu)先級判定,得到最高級的中斷請求。控制邏輯接收中斷請求,向CPU發(fā)INT信號。若CPU允許中斷,則在當前指令結束后連續(xù)發(fā)出2個中斷應答信號INTA,進行中斷響應。每個信號持續(xù)2個時鐘周期。63

(3)8259A工作方式CPU發(fā)第一個INTA時,輸出總線鎖定信號LOCK,防止其它處理器或DMA控制器占用總線。8259A收到第一個負脈沖后,將優(yōu)先級最高的中斷ISR相應位置1,同時使IRR相應位清0。64CPU發(fā)第二個INTA時,撤銷總線鎖存信號LOCK,地址允許信號ALE無效,允許數(shù)據(jù)線工作。8259A收到第二個負脈沖后,將相應中斷的類型號送到數(shù)據(jù)線上。CPU讀取中斷類型號,查找中斷向量表得到中斷向量,轉(zhuǎn)而進入中斷服務程序。若系統(tǒng)為自動結束中斷方式(AEOI),則8259A會在第2個脈沖結束時,自動將ISR的相應位復位;

若為非自動結束中斷方式(EOI),則ISR相應位的“1”一直保持,直到CPU發(fā)EOI(中斷結束)命令時才將其復位。652.8259A的級聯(lián)方式單片8259A最多可管理8級中斷。當中斷源多于8個時,需將多個8259A芯片級聯(lián)構成主從模式。系統(tǒng)最多支持8個8259A芯片級聯(lián),即:最多可支持64個中斷源。每個從片的IR7~IR0可直接與8個中斷源相連,經(jīng)過優(yōu)先級判優(yōu)后主片發(fā)送INT信號。主片對所有從片發(fā)來的INT進行判優(yōu)后,最終向CPU發(fā)INT信號。6667SP/EN引腳用于區(qū)分8259A是主片還是從片。高電平為主片,低電平為從片。主/從片通過CAS2~CAS0互連。主片的CAS2~CAS0為輸出,從片的CAS2~CAS0為輸入。CPU發(fā)出第一個INTA時,主片使ISR相應的位置1,使IRR的相應位清0;并通過CAS2~CAS0輸出一組從片的編碼

ID2~ID0。從片收到該編碼后,與自身ICW3中的D2~D0編碼進行比較。若相同,則在第二個INTA信號將從片的中斷類型號送到數(shù)據(jù)總線。683.中斷觸發(fā)方式電平觸發(fā):IRi端出現(xiàn)高電平時,有中斷請求。

邊沿觸發(fā):IRi端出現(xiàn)上升沿時,有中斷請求。

69注意:當該中斷請求得到響應后(ISR相應位置1),必須及時撤銷其高電平,否則可能會再次觸發(fā)中斷。優(yōu)點:IRi端可一直保持高電平,而不會被誤判為又一次中斷請求。4.中斷屏蔽方式普通屏蔽方式中斷屏蔽寄存器IMR的某位為1,則禁止相應的中斷請求;為0,則允許。這種方式下,由于優(yōu)先權判別器PR的作用(查ISR的狀態(tài)),只有級別高的中斷源才允許中斷。若CPU不希望某些中斷源申請中斷,或在處理某中斷時不希望比該中斷級別低的中斷源申請中斷,可采用該方法。70特殊屏蔽方式在處理某中斷時,若想開放級別較低的中斷請求,則:(1)將IMR中本級中斷的相應位置1,屏蔽本級中斷,為開放級別較低的中斷提供可能。(2)將本級中斷ISR的相應位復位,才能真正開放級別較低的中斷。71與普通屏蔽的區(qū)別:特殊屏蔽方式除了在IMR中屏蔽本級中斷源外,還需使當前ISR的相應位復位。5.中斷優(yōu)先權管理方式①固定優(yōu)先級--IR0優(yōu)先級最高,IR7最低。②循環(huán)優(yōu)先級--某中斷被服務后,其優(yōu)先權自動降為最低,而相鄰中斷源的優(yōu)先級升為最高。優(yōu)先權自動循環(huán)方式初始時,IR0優(yōu)先級最高,IR7優(yōu)先級最低。優(yōu)先權特殊循環(huán)方式用戶編程來指定初始時哪個中斷源的優(yōu)先級最低。例:初始時規(guī)定IR5最低,則優(yōu)先級順序為:IR6

>IR7>IR0>

…>IR4>IR5。726.中斷嵌套方式普通全嵌套方式簡稱全嵌套方式,是最基本、最常用的方式。某中斷被響應時,只有更高級的中斷請求才會響應。特殊全嵌套方式用于級聯(lián)場合??身憫呒墑e和同級別中斷。級聯(lián)時從片的INT端連接主片IRi端。從片上不同級別的中斷請求,主片視之為同一級別。普通全嵌套無法響應第二次高級別中斷。而特殊全嵌套方式可正常響應。73單片8259A時,通常采用普通全嵌套方式。多片級聯(lián)時,從片采用普通全嵌套方式,而主片必須采用特殊全嵌套。7.中斷結束方式當某個中斷請求得到響應時,其ISR的相應位置1。當其中斷服務結束時,其ISR中的相應位必須清0。中斷結束方式是指使ISR相應位復位的方式。8259A有2種中斷結束方式自動結束方式(AEOI)非自動結束方式(EOI)74自動結束方式(AEOI)ISR相應位的復位由8259A硬件自動完成。當CPU響應某中斷時,第二個INTA信號的下降沿

自動將ISR相應位的復位。該方式只適用于單片8259A、無中斷嵌套的場合。75非自動結束方式(EOI)該方式下,由CPU發(fā)EOI命令來使ISR的相應位復位。普通中斷結束方式CPU向8259A發(fā)送EOI命令,使當前ISR中級別最高的位復位。特殊中斷結束方式CPU向8259A發(fā)送EOI命令,該命令字指定了要結束哪一級中斷源,從而使ISR相應的位復位。768.連接系統(tǒng)總線的方式緩沖方式多片8259A級聯(lián)時,8259A通過總線驅(qū)動器與數(shù)據(jù)總線相連。此時8259A的SP/EN

端輸出一個低電平(EN=0)作為總線驅(qū)動器的啟動信號。即:SP/EN信號與總線驅(qū)動器的允許端相連。7778輸出信號緩沖器非緩沖方式當系統(tǒng)中只有單片或少數(shù)幾片8259A時,8259A可直接與數(shù)據(jù)總線相連。此時,8259A的SP/EN端作為輸入信號。單片8259A時,SP=1。多片8259A級聯(lián)時,主片的SP=1,從片的SP=0。798081

(4)8259A編程CPU向8259A發(fā)送的命令字分為以下2種:初始化命令字ICW包含ICW1~ICW4四個命令字,在系統(tǒng)啟動時由初始化程序設置。一旦設定后,在系統(tǒng)工作過程中一般不再改變。操作命令字OCW包含OCW1~OCW3,由應用程序設定,用來對中斷處理過程進行動態(tài)控制,如:中斷屏蔽、中斷結束、優(yōu)先權設定等??啥啻卧O置。828259A只有一根輸入地址線A0,如何區(qū)分7個寄存器?ICW1:

20H A0=0,D4=1ICW2:21H A0=1ICW3:21H A0=1,ICW1中的SNGL(D1)=0ICW4:21H A0=1,ICW1中的IC4(D0)=1OCW1:21H A0=1OCW2:20H A0=0,D3D4=00OCW3:20H A0=0,D3D4=1083采用讀寫分時法、順序法及特征位法解決端口沖突。1.ICW1:設置觸發(fā)方式、是否級聯(lián)和需ICW4等。84(一)初始化命令字ICW未用表ICW1要寫入偶端口特征位×××1LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0IRi中斷觸發(fā)方式1:電平觸發(fā)0:邊沿觸發(fā)8086/8088中不用是否級聯(lián)1:單片0:級聯(lián)1:需要ICW40:不需要85D0(ICW4)的設置:8086/8088系統(tǒng)必須設置D0=1,即:需要ICW4。寫入ICW1后,8259A內(nèi)部有一個初始化過程,相當于Reset功能,其作用:指示8259A順序邏輯復位,即:它準備按ICW2、ICW3、ICW4的順序接受其余初始化命令字。清除IMR、ISR。指定優(yōu)先級方式為普通全嵌套方式、普通屏蔽方式、非自動中斷結束方式。86【例5-5】若8259A采用電平觸發(fā),單片使用,需要ICW4,請寫出ICW1的初始化程序段?!痢痢?LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0MOV AL,1BH ;ICW1=00011011OUT 20H,AL ;偶端口2.ICW2:設置類型碼。87高5位由用戶編程設定表ICW2要寫入奇端口T7T6T5T4T3D7D6D5D4D3D2D1D01A0低3位由IR7~IR0自動生成中斷類型號=ICW2高5位+低3位(IRi的編碼)。ICW2緊隨ICW1之后。CPU響應中斷發(fā)第2個INTA時,8259A將ICW2的內(nèi)容(中斷類型號)送到數(shù)據(jù)總線。88【例5-6】PC機中斷系統(tǒng)的中斷類型號范圍為08~0FH,某中斷請求線連接到8259A的IR5上,請寫出設置ICW2

的程序段。MOV AL,08H ;高5位OUT 21H,AL ;奇端口

CPU響應硬盤中斷后,8259A把IR5的編碼101作為低3位,與ICW2中設置的高5位合一起,構成完整的8位中斷類型號0DH,經(jīng)數(shù)據(jù)總線提供給CPU。T7T6T5T4T3D7D6D5D4D3D2D1D01A03.ICW3:設置級聯(lián)方式。僅當級聯(lián)模式下(即ICW1

的SNGL=0時)才需設置ICW3。這時需分別對主片和從片進行設置。主片ICW3:說明主片IR7~IR0的哪些引腳上連有從片。89S7S6S5S4S3S2S1S0D7D6D5D4D3D2D1D01A01:IRi

上接有從片0:IRi

上未接從片表ICW3要寫入奇端口從片ICW3:ID2~ID0的編碼值說明該從片的INT信號連接至主片IR7~IR0的哪個引腳。90×××××ID2ID1ID0D7D6D5D4D3D2D1D01A0任意表ICW3要寫入奇端口000:連至主片的IR0……111:連至主片的IR7例:從片的INT連接至主片的IR5,則ID2~ID0

=101。4.ICW4:設置緩沖方式、中斷結束方式等。當ICW1

的D0=1時,需設置ICW4。91000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0表ICW4要寫入奇端口1:緩沖方式0:非緩沖方式1:特殊全嵌套0:普通全嵌套1:主片0:從片1:AEOI0:EOI1:8086/80880:8080/8085特征位僅當buf=1時M/S位才起作用92【例5-7】PC機中,單片8259A與系統(tǒng)總線之間采用緩沖器連接,非自動結束方式,正常完全嵌套。請寫出設置ICW4

的程序段。MOV AL,0DH ;00001101BOUT 21H,AL ;奇端口000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0要使中斷系統(tǒng)正常工作,CPU必須對系統(tǒng)中的每片8259A進行初始化編程,即:順序?qū)CW1~ICW4寫入各個8259A芯片。單片8259A時,需依次寫入ICW1、ICW2和ICW4。多片8259A時,需依次寫入ICW1、ICW2、ICW3和ICW4。93(二)8259A初始化編程9495【例5-8】IBMPC/XT機中,僅用單片8259A,中斷請求采用邊沿觸發(fā),中斷類型號為08H~0FH,普通全嵌套,緩沖方式,非自動中斷結束方式。8259A的端口地址為20H和21H。請按上述要求對8259A進行初始化編程。MOVAL,00010011B;ICW1:邊沿觸發(fā),單片,需ICW4OUT20H,ALMOVAL,00001000B;ICW2:08H~0FH的高5位OUT21H,ALMOVAL,00001101B;ICW4:全嵌套,緩沖,EOI方式OUT21H,AL96【例5-9】IBMPC/AT機中,使用兩片8259A構成主從中斷系統(tǒng)。從片的INT與主片的IRQ2相連。主片的中斷類型號為08H~0FH,端口地址為20H和21H。從片的中斷類型號為70H~77H,端口地址為0A0H和0A1H。主片、從片均采用邊沿觸發(fā)、緩沖、非自動中斷結束方式。請按照上述要求對8259A進行初始化編程。97主片編程:MOVAL,00010001B;ICW1:邊沿觸發(fā)、級聯(lián)、需ICW4OUT20H,ALMOVAL,00001000B;ICW2:08H~0FH的高5位OUT21H,ALMOVAL,00000100B;ICW3:主片IRQ2接有從片OUT21H,ALMOVAL,00011101B;ICW4:特殊全嵌套、緩沖方式、OUT21H,AL ;主片、EOI方式98從片編程:MOVAL,00010001B;ICW1:邊沿觸發(fā)、級聯(lián)、需ICW4OUT0A0H,ALMOVAL,01110000B;ICW2:70H~77H的高5位OUT0A1H,ALMOVAL,00000010B;ICW3:從片接主片的IRQ2OUT0A1H,ALMOVAL,00001001B;ICW4:普通全嵌套、緩沖方式、OUT0A1H,AL ;從片、EOI方式對8259A進行初始化后(寫入初始化命令字),8259A進入工作狀態(tài),可接收IRi的中斷請求,并按系統(tǒng)設定的方式來響應和管理中斷。在8259A工作期間,可通過寫入操作命令字OCW,對其中斷管理方式進行動態(tài)設置和修改。操作命令字有3個:OCW1~OCW3。99(三)操作命令字OCW1.OCW1:設置中斷屏蔽字直接對IMR

相應的位進行設置。100M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D01A01:屏蔽中斷0:允許中斷OCW1要寫入奇端口101【例5-10】已知8259A的端口地址為20H、21H。若要屏蔽IR5、IR4和IR1引腳上的中斷請求,而不改變其余中斷源原來的屏蔽情況。試給出對應的程序段。INAL,21H ;讀取IMR的當前值ORAL,00110010B;IRQ5、IRQ4、IRQ1OUT21H,AL ;寫入OCW12.OCW2:設置/修改優(yōu)先級模式、發(fā)送EOI命令等102指出優(yōu)先級最低的IRi,或要清除的ISR的相應位。OCW2要寫入偶端口特征位RSLEOI00L2L1L0D7D6D5D4D3D2D1D00A00:固定優(yōu)先級1:循環(huán)優(yōu)先級0:普通1:特殊0:不發(fā)1:發(fā)EOI命令D7(R):0為固定優(yōu)先級;1為循環(huán)優(yōu)先級。D6(SL):0為“普通”;1為“特殊”。這2位決定優(yōu)先級方式:

R=0,SL=× :固定優(yōu)先級(L2~L0無效)

R=1,SL=0 :優(yōu)先級自動循環(huán)(L2~L0無效)

R=1,SL=1 :優(yōu)先級特殊循環(huán)(L2~L0有效)此時L2~L0指明循環(huán)開始時哪個IRi的優(yōu)先級最低。

103D5(EOI):1時發(fā)EOI命令;0時不發(fā)EOI命令。

在非自動中斷結束方式下,可通過發(fā)EOI命令來使ISR相應的位復位。(非硬件復位)

EOI位可和SL位配合使用。EOI=0,SL=×:不發(fā)EOI命令。EOI=1,SL=0:普通中斷結束。此時EOI命令將ISR中優(yōu)先級最高的中斷對應的位清0。(L2~L0無效)EOI=1,SL=1:特殊中斷結束。此時EOI命令將ISR中L2~L0所指定的中斷對應位清0。(L2~L0有效)104R、SL、EOI三位的組合含義

105RSLEOI功能說明001普通EOI命令,全嵌套方式011特殊EOI命令,全嵌套方式,L2~L0指定的ISR位清0101普通EOI命令,優(yōu)先級自動循環(huán)111特殊EOI命令,優(yōu)先級特殊循環(huán),L2~L0指定的ISR位清0,且L2~L0指定的IR位為最低優(yōu)先級100自動EOI時,優(yōu)先級自動循環(huán)000自動EOI時,取消優(yōu)先級自動循環(huán)110優(yōu)先級特殊循環(huán),L2~L0指定優(yōu)先級最低的IR位010無操作106MOVAL,00100000B;OCW2:EOI=1,SL=0OUT20H,AL ;寫入OCW2IRET ;中斷返回,回到主程序【例5-11】已知8259A的端口地址為20H、21H。8259A設置為非自動中斷結束的普通中斷結束方式。在中斷子程序中,CPU向8259A發(fā)送一個中斷結束命令后返回主程序。試給出對應的程序段。3.OCW3:設置中斷屏蔽方式;設置中斷查詢方式;發(fā)送讀內(nèi)部寄存器的命令10710:讀IRR11:讀ISR0×:無效

OCW3要寫入偶端口特征位0ESMMSMM01PIRRISRD7D6D5D4D3D2D1D00A0未用11:設置特殊屏蔽10:取消特殊屏蔽0×:保持原方式

1:發(fā)查詢命令0:不發(fā)查詢命令ESMM/SMM:設置/取消特殊屏蔽方式11:設置特殊屏蔽方式。屏蔽正在服務的同級中斷,而允許優(yōu)先級較低的中斷請求。10:取消特殊屏蔽方式。0×:保持原來的屏蔽方式。SMM無效。108D2(P):查詢命令位。P=1,CPU向8259A發(fā)查詢命令。P=0不發(fā)。當CPU處于關中斷時(IF=0),INTR引腳發(fā)送的中斷不被處理。此時,CPU可向8259發(fā)查詢命令(偶端口),然后從偶端口讀取查詢字,以獲知當前是否有中斷請求及正在申請的中斷源中優(yōu)先級最高的中斷源編碼。109有中斷請求時,當前中斷請求中優(yōu)先級最高的中斷源編號偶端口I××××W2W1W0D7D6D5D4D3D2D1D00A01:有中斷請求0:無中斷請求未用110CLI ;關中斷L1:MOVAL,00001100B;OCW3:D4D3=01,P=1OUT0A0H,AL ;發(fā)查詢命令字

INAL,0A0H;讀查詢字TESTAL,10000000B;判斷是否有中斷請求JNZNEXT ;有中斷請求時轉(zhuǎn)入NEXTJMPL1NEXT:……【例5-12】已知8259A的端口地址為0A0H~0A1H,處于關中斷狀態(tài)。將8259A設置為中斷查詢方式,判斷當前是否有中斷請求。若有,則轉(zhuǎn)向NEXT處執(zhí)行;若無,則重復查詢。試編寫程序段實現(xiàn)之。111讀IMR:直接讀OCW1(奇端口)INAL,21H

【例5-13】已知8259A的端口地址為20H、21H。試寫程序段,讀取其IMR、IRR、ISR三個寄存器的值。讀IRR:必須發(fā)讀IRR寄存器的命令才能讀取(OCW3)MOVAL,00001010B;發(fā)讀IRR的OCW3命令字OUT20H,ALINAL,20H;讀IRR的內(nèi)容

讀ISR:必須發(fā)讀ISR寄存器的命令才能讀?。∣CW3)MOVAL,00001011B;發(fā)讀ISR的OCW3命令字OUT20H,ALINAL,20H;讀ISR的內(nèi)容

112內(nèi)容概要8259A的應用舉例48086/8088微機中斷系統(tǒng)28259A可編程中斷控制器3PC機中的中斷應用5中斷技術概述1內(nèi)部結構、外部引腳工作方式(7個:工作過程、級聯(lián)方式、觸發(fā)方式、屏蔽方式、優(yōu)先級方式、中斷結束方式、系統(tǒng)連線方式)8259A編程:ICW、OCW、初始化編程(1)中斷程序設計若要以中斷方式實現(xiàn)CPU與外設間的數(shù)據(jù)交換,用戶需完成主程序和中斷服務子程序的設計。主程序:對中斷系統(tǒng)的軟硬件進行初始化。如:設置中斷向量、設置8259A的工作方式等。中斷服務程序:實現(xiàn)數(shù)據(jù)輸入輸出及相關控制。113

5.48259A應用舉例主程序設計CPU初始化:設置中斷向量表、設置中斷標志(使IF=1開中斷)。8259A初始化:寫ICW1~ICW4初始化命令字,設置工作方式、優(yōu)先級、結束方式等。中斷源接口初始化:如:使中斷源允許中斷等。中斷服務程序初始化:進入ISR前,要設置ISR使用的緩沖區(qū)指針和狀態(tài)位等。114中斷服務程序設計(ISR)保護現(xiàn)場:把ISR中要使用的寄存器入棧。開中斷:運行當前ISR程序時,要能響應更高級的中斷。數(shù)據(jù)輸入輸出:與外設間進行數(shù)據(jù)傳輸。數(shù)據(jù)的處理比較費時,一般交由主程序完成。關中斷:ISR結束時,關中斷以避免不必要的中斷嵌套?;謴同F(xiàn)場:將堆棧中保存的各寄存器值出棧,以便返回主程序后可以正確使用原數(shù)據(jù)。中斷結束命令:8259A采用非自動中斷結束方式時,發(fā)EOI命令使ISR的相應位清0。中斷返回:用IRET指令返回主程序。115116

(2)中斷應用實例【例5-14】已知某輸入設備接口內(nèi)有一個8位的數(shù)據(jù)端口(地址200H)和一個8位的狀態(tài)端口(地址201H)。當狀態(tài)端口的最高位為1時,數(shù)據(jù)端口中的數(shù)據(jù)有效,并且此時在STB引腳上出現(xiàn)一個脈沖信號。請設計一個微機系統(tǒng),讀取該接口內(nèi)的有效數(shù)據(jù),并將之存入內(nèi)存的BUFFER單元中。117方法一:查詢法硬件電路設計軟件流程圖設計118MOVDX,201H ;讀取狀態(tài)端口L1:INAL,DXTESTAL,10000000B;測試其最高位JZL1 ;無有效數(shù)據(jù)MOVDX,200H ;有有效數(shù)據(jù),讀數(shù)據(jù)端口INAL,DXMOVBUFFER,AL ;保存數(shù)據(jù)到BUFFER

119方法二:中斷法當接口中的數(shù)據(jù)有效時,會產(chǎn)生STB脈沖信號,該信號可作為中斷請求信號,通過8259A向CPU發(fā)送中斷請求。一旦有數(shù)據(jù)到來,觸發(fā)中斷,進入中斷服務程序ISR。CPU在ISR中讀取數(shù)據(jù)端口的內(nèi)容。當沒有數(shù)據(jù)到來時(STB信號不觸發(fā)中斷),CPU可運行其它程序。120假設條件:STB信號連接到8259A的IR3端。8259A的端口地址為20H~21H,其IR0~IR7中斷類型號為08H~0FH。中斷服務子程序名為P1。未發(fā)生中斷時,CPU執(zhí)行其它程序。其它程序假設用CX+1的來模擬。121硬件電路設計122軟件程序設計關中斷開中斷123DATASEGMENT;定義數(shù)據(jù)段就是數(shù)據(jù)存放的地方 BUFFERDB?DATAENDSCODESEGMENT;定義代碼段當然就是要執(zhí)行的程序代碼了 ASSUMECS:CODE,DS:DATA;assumeds:data這是指明了ds(數(shù)據(jù)段寄存器)和data段的對應關系START:

MOV AX,DATA ;數(shù)據(jù)段段地址MOV DS,AX

PUSHDSCLI ;關中斷MOVAL,00010011B;ICW1:邊沿觸發(fā),單片,要ICW4OUT20H,ALMOVAL,08H ;ICW2:中斷類型號前5位OUT21H,AL主程序設計124MOVAL,00000001B ;ICW4:普通全嵌套,非緩沖OUT21H,AL ;非自動中斷結束

MOVAX,0 ;設置中斷向量表段基址為0MOVDS,AXMOVAX,OFFSETP1 MOV[002CH],AX ;IR3中斷類型號為0BH,2CH?MOVAX,SEGP1 MOV[002EH],AX POPDSSTI ;開中斷L1:INCCXJMPL1125P1PROC ;中斷服務子程序PUSHCX ;保護現(xiàn)場STI ;開中斷MOVDX,200H ;讀數(shù)據(jù)端口IN AL,DXMOVBUFFER,AL ;保存數(shù)據(jù)CLI ;關中斷

溫馨提示

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

評論

0/150

提交評論