第九章中斷控制器及DMA控制器_第1頁(yè)
第九章中斷控制器及DMA控制器_第2頁(yè)
第九章中斷控制器及DMA控制器_第3頁(yè)
第九章中斷控制器及DMA控制器_第4頁(yè)
第九章中斷控制器及DMA控制器_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第九章中斷控制器及DMA控制器

中斷的概念可編程中斷控制器Intel8259ADMA控制器9.1中斷的概念

9.1.1中斷源

中斷源:引起中斷的條件。PC機(jī)的中斷源通常有以下幾種:1.輸入、輸出設(shè)備

2.實(shí)時(shí)時(shí)鐘

3.故障源

4.為程序調(diào)試而設(shè)置中斷源

中斷是指計(jì)算機(jī)的CPU在執(zhí)行主程序時(shí),收到了外部的或內(nèi)部的中斷請(qǐng)求,因而暫時(shí)中止主程序的執(zhí)行,轉(zhuǎn)去執(zhí)行一段預(yù)先編制好的中斷服務(wù)程序來處理這一中斷請(qǐng)求,待處理完畢之后,又返回主程序接著被中斷處繼續(xù)執(zhí)行,這樣的一個(gè)過程就稱為中斷。NMIINTR中斷邏輯軟件中斷指令溢出中斷除法錯(cuò)單步中斷非屏蔽中斷請(qǐng)求中斷控制器8259APIC8086/8088CPU內(nèi)部邏輯斷點(diǎn)中斷可屏蔽中斷請(qǐng)求n430128086/8088中斷源類型:┇┇00000H003FFH9.1.2中斷方式工作的優(yōu)點(diǎn)

1.并行操作2.實(shí)現(xiàn)實(shí)時(shí)處理9.1.3中斷系統(tǒng)應(yīng)具有的功能

1.能夠?qū)崿F(xiàn)中斷及返回

(1)CPU中斷允許控制:執(zhí)行指令STI置IF=1

(2)斷點(diǎn)自動(dòng)保護(hù):自動(dòng)保護(hù)斷點(diǎn)處的程序地址(3)自動(dòng)地轉(zhuǎn)到中斷服務(wù)程序:

CPU能夠提供中斷處理程序的入口地址,轉(zhuǎn)入中斷服務(wù)程序進(jìn)行中斷處理。(4)正確地返回原程序:自動(dòng)恢復(fù)斷點(diǎn),轉(zhuǎn)原程序。

2.實(shí)現(xiàn)優(yōu)先級(jí)排隊(duì)對(duì)多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),根據(jù)任務(wù)的輕重緩急,確定一個(gè)中斷優(yōu)先級(jí),級(jí)別高的中斷請(qǐng)求先被響應(yīng)。

3.中斷嵌套當(dāng)CPU響應(yīng)某一中斷請(qǐng)求時(shí),出現(xiàn)級(jí)別更高的中斷申請(qǐng),允許高級(jí)別的中斷請(qǐng)求中斷正在執(zhí)行的低級(jí)別中斷處理,CPU為高級(jí)中斷服務(wù)。9.2可編程中斷控制器Intel8259A

特點(diǎn):協(xié)助CPU實(shí)現(xiàn)對(duì)外部中斷請(qǐng)求的管理具有優(yōu)先級(jí)排隊(duì)和向CPU發(fā)中斷的功能能管理8個(gè)外部中斷源采用級(jí)聯(lián)方式,可擴(kuò)展8片8259A構(gòu)成64級(jí)主從式中斷系統(tǒng)??梢杂卸喾N功能和工作的方式9.2.18259A的引腳功能與內(nèi)部結(jié)構(gòu)一、引腳功能

D0~D7

數(shù)據(jù)線,雙向,與CPU進(jìn)行數(shù)據(jù)通信。/WR

寫控制信號(hào)輸入端,低電平有效。/RD

讀控制信號(hào)輸入端,低電平有效。/CS

片選輸入端,低電平有效。A0

地址線輸入端,提供奇地址和偶地址,用于選擇內(nèi)部寄存器。PC機(jī)8259的兩個(gè)端口地址為:20H,21H。IR0∽IR78級(jí)中斷申請(qǐng)輸入端,上升沿或高電平觸發(fā)有效。INT

中斷請(qǐng)求信號(hào)輸出端/INTA

中斷響應(yīng)信號(hào)輸入端。CPU在中斷響應(yīng)后,向8259A連續(xù)發(fā)兩個(gè)中斷響應(yīng)脈沖。/SP//EN

級(jí)連/緩沖允許信號(hào)線。在級(jí)連工作方式中,該端信號(hào)方向?yàn)檩斎?,若輸入高電平則本片為“主”8259A,若輸入低電平則本片為“從”8259A。在緩沖器工作方式中,該端信號(hào)方向?yàn)檩敵?,輸出為允許緩沖器選通信號(hào);但在此方式下,該端不能用于表示主從關(guān)系,而由ICW4中的M/S位來設(shè)置主從關(guān)系。CAS0~CAS2

級(jí)聯(lián)控制信號(hào)。對(duì)于“主”8259A,CAS0~CAS2為輸出信號(hào),對(duì)于“從”8259A,CAS0~CAS2

為輸入信號(hào)。二、8259A內(nèi)部結(jié)構(gòu)1.中斷請(qǐng)求寄存器(IRR)用于接收8位由外部引腳IR0-IR7輸入的中斷請(qǐng)求。當(dāng)IRi端由高電平或上升沿觸發(fā)時(shí),IRRi位置“1”,沒有中斷申請(qǐng)的端,與IRR對(duì)應(yīng)位清“0”。2.中斷服務(wù)寄存器(ISR)用來記錄正在服務(wù)中的所有中斷請(qǐng)求。當(dāng)IRi中斷請(qǐng)求被響應(yīng)時(shí),ISR中相應(yīng)位ISRi被置“1”,并將一直保持到該級(jí)中斷處理過程結(jié)束或處理過程中被清除為止。在多重中斷時(shí),ISR中可能有多位同時(shí)被置“1”。3.中斷屏蔽寄存器(IMR)用來屏蔽已被鎖存在IRR中的任何一個(gè)中斷請(qǐng)求。對(duì)所有要屏蔽的中斷請(qǐng)求線,IMR相應(yīng)位置“1”,即請(qǐng)求不能進(jìn)入PR去判優(yōu)。4.優(yōu)先級(jí)判別器(PR)用于判別已進(jìn)入IRR中的各中斷請(qǐng)求的優(yōu)先級(jí)別,或與ISR中正在服務(wù)的中斷比較優(yōu)先級(jí)。由PR決定是否響應(yīng)當(dāng)前IRR請(qǐng)求級(jí)。若PR判定出新進(jìn)入的中斷請(qǐng)求比當(dāng)前鎖存在ISR中的中斷請(qǐng)求優(yōu)先級(jí)為高時(shí),則通過邏輯使8259A的INT輸出端為“1”,從而向CPU發(fā)出一個(gè)新的中斷請(qǐng)求。9.2.28088/8086的外部中斷響應(yīng)過程

一、8088/8086與中斷有關(guān)的引腳功能

1.非可屏蔽中斷申請(qǐng)輸入端NMI

NMI不受中斷允許標(biāo)志位IF的控制。只要NMI端有中斷請(qǐng)求,CPU就在當(dāng)前指令執(zhí)行結(jié)束后立即響應(yīng)。常用于緊急故障處理或緊迫事件的處理。

2.可屏蔽中斷申請(qǐng)輸入端INTR

INTR受中斷標(biāo)志位IF狀態(tài)的控制,當(dāng)CPU執(zhí)行開中斷指令STI(IF=1)時(shí),CPU接受外部中斷請(qǐng)求。當(dāng)CPU執(zhí)行關(guān)中斷指令CLI(IF=0)時(shí),CPU不接受外部的中斷請(qǐng)求,即屏蔽所有外部硬件的中斷請(qǐng)求。

3.可屏蔽中斷響應(yīng)輸出端/INTA

CPU中斷響應(yīng)頭兩個(gè)總線周期中,/INTA輸出兩個(gè)響應(yīng)負(fù)脈沖。第一個(gè)負(fù)脈沖通知外設(shè)(8259)中斷得到允許,清相應(yīng)的IRR位,置相應(yīng)的ISR位;第二個(gè)負(fù)脈沖,控制外設(shè)(8259)接口向數(shù)據(jù)總線送中斷類型碼n。對(duì)于可屏蔽的外部中斷INTR,中斷類型號(hào)則由8259提供。8259的中斷類型號(hào)用輸出指令寫入中斷類型號(hào)寄存器中,當(dāng)CPU響應(yīng)中斷,發(fā)第二個(gè)脈沖時(shí),將中斷類型號(hào)寄存器中的n送到數(shù)據(jù)總線,此時(shí)CPU讀數(shù)據(jù)總線,而獲得該中斷類型號(hào)。

二、外部中斷過程

1.當(dāng)一條或幾條中斷請(qǐng)求線(IR0∽IR7)變成高電平或上沿脈沖時(shí),則使IRR相應(yīng)位置“1”。2.可用IMR對(duì)IRR進(jìn)行屏蔽,但至少有一位是中斷允許的。中斷請(qǐng)求狀態(tài)通過優(yōu)先級(jí)電路PR分析,把當(dāng)前未屏蔽的最高優(yōu)先級(jí)的中斷請(qǐng)求從INT輸出,送至CPU的INTR。3.若CPU是處于開中斷狀態(tài),中斷允許標(biāo)志IF=1,則在CPU執(zhí)行完當(dāng)前指令后,就可以響應(yīng)中斷,8086CPU將從端向8259A的端回送兩個(gè)負(fù)脈沖。4.8259A在收到CPU的第1個(gè)中斷響應(yīng)脈沖后,將ISR中的中斷優(yōu)先級(jí)最高的那一個(gè)位置“1”,而將IRR的相應(yīng)位復(fù)位成“0”。5.8259A在收到第2個(gè)脈沖后,將把對(duì)應(yīng)的中斷類型號(hào)n送到數(shù)據(jù)線,CPU自動(dòng)讀入數(shù)據(jù)線得到中斷類型號(hào)n。6.CPU自動(dòng)地將標(biāo)志位寄存器FLAGS內(nèi)容入棧,并清標(biāo)志位IF和TF為零,關(guān)閉可屏蔽中斷和禁止單步中斷。7.把當(dāng)前CS及IP的內(nèi)容(斷點(diǎn)地址)入棧:

SPSP-2,(SP)CS;SPSP-2,(SP)IP,8.CPU根據(jù)中斷類型號(hào)n,指向中斷矢量表4n地址處,從矢量表中取出中斷處理程序的段地址值和偏移值送入CS和IP中,轉(zhuǎn)入中斷處理程序執(zhí)行:

IP(4n+1,4n),CS(4n+3,4n+2)IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG中斷返回后

9.發(fā)中斷響應(yīng)結(jié)束命令若在自動(dòng)結(jié)束中斷(AEOI)方式下,8259A在第2個(gè)INTA脈沖結(jié)束時(shí),將正在服務(wù)中斷的ISR中的對(duì)相位自行復(fù)位成“0”;若是非自動(dòng)結(jié)束中斷方式(EOI),則該位的“1”狀態(tài)將一直保持到中斷過程結(jié)束,由CPU發(fā)EOI命令才能復(fù)位成“0”。10.在中斷處理程序中應(yīng)有一個(gè)開中斷指令STI,使IF=1,以準(zhǔn)備接收新的中斷。若開中斷指令STI放在中斷服務(wù)程序的開始處,則可以實(shí)現(xiàn)中斷嵌套。11.中斷處理程序完成后,執(zhí)行IRET:IP←(SP),SP←SP+2,CS←(SP),SP←SP+2,Flags←(SP),SP←SP+29.2.38259A中斷管理方式一、中斷觸發(fā)方式1.電平觸發(fā)方式

當(dāng)IR0∽IR7出現(xiàn)高電平時(shí),表示有中斷請(qǐng)求。高電平要持續(xù)到8259A收到第一個(gè)中斷響應(yīng)脈沖之前。當(dāng)中斷服務(wù)結(jié)束,ISR的對(duì)應(yīng)位被清0之前,IRi的高電平必須撤消,否則可能引起第二次中斷。2.邊沿觸發(fā)方式

IR0∽IR7出現(xiàn)低電平到高電平的躍變,表示有中斷請(qǐng)求。在CPU響應(yīng)中斷,8259A收到第一個(gè)中斷響應(yīng)脈沖之前,同一個(gè)輸入端不應(yīng)當(dāng)出現(xiàn)第二次躍變,否則第一次中斷請(qǐng)求可能被丟失。二、中斷屏蔽方式1.常規(guī)屏蔽方式將中斷屏蔽寄存器的某一位置1,即可屏蔽相應(yīng)級(jí)別的中斷請(qǐng)求。

常規(guī)屏蔽方式,當(dāng)一個(gè)中斷被響應(yīng)時(shí),禁止同級(jí)和較低級(jí)別的中斷請(qǐng)求。若開放同級(jí)和較低級(jí)別的中斷請(qǐng)求,則要將屏蔽寄存器中本級(jí)中斷的對(duì)應(yīng)位置“1”,但這樣不會(huì)屏蔽中斷服務(wù)寄存器中的本級(jí)標(biāo)志位,8259A還會(huì)據(jù)此禁止優(yōu)先級(jí)別比它低的中斷請(qǐng)求。2.特殊屏蔽方式特殊屏蔽的功能:當(dāng)屏蔽寄存器中本級(jí)中斷的對(duì)應(yīng)位置“1”,會(huì)同時(shí)屏蔽中斷服務(wù)寄存器中的本級(jí)標(biāo)志位,真正開放了較低級(jí)別的中斷。

一、嵌套中斷方式

1.完全嵌套方式

完全嵌套簡(jiǎn)稱全嵌套方式,在這種方式下,中斷請(qǐng)求按IR0到IR7處理,其中IR0中斷的優(yōu)先級(jí)最高,IR7的優(yōu)先級(jí)最低。在全嵌套方式下,只允許高一級(jí)中斷進(jìn)入嵌套,在低級(jí)中斷服務(wù)程序中能響應(yīng)高一級(jí)中斷,不允許低級(jí)中斷和同級(jí)中斷進(jìn)入嵌套。

2.特殊全嵌套方式

本方式,主要用于多片8259A系統(tǒng)中的主片8259A。因?yàn)橹髌哪硞€(gè)中斷請(qǐng)求輸入引腳要接另一從片8259A的中斷請(qǐng)求輸出瑞,而一個(gè)從片8259A又接8個(gè)外部中斷源,對(duì)于主片8259A的輸入端而言,從片輸入引腳是同一級(jí),但對(duì)于從片8259A的8個(gè)輸入端而言是不同級(jí)的,特殊嵌套方式,使從片8259A的各個(gè)中斷輸入端的高一級(jí)中斷能夠進(jìn)入低級(jí)中斷的嵌套。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:從片的INT被主片封鎖,故更高級(jí)別的IR0-IR2中斷也無法得到響應(yīng)特殊嵌套方式:因主片不封鎖從片的INT,故級(jí)別高的IR0-IR2中斷可以得到響應(yīng)。(但I(xiàn)R3-IR7仍被本從片封鎖)C.假定IR3發(fā)生中斷,并獲得服務(wù)一般嵌套方式:IR4的中斷被服務(wù)時(shí),這些中斷將被封鎖。B.特殊嵌套方式:IR4的中斷被服務(wù)時(shí),只封鎖IR5-IR7。A.INTE.從8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式與特殊全嵌套方式的區(qū)別

去CPU

主片為特殊全嵌套方式:

當(dāng)處理一級(jí)中斷時(shí),如果有同級(jí)的中斷請(qǐng)求,也會(huì)給予響應(yīng)。

否則:當(dāng)從片有中斷請(qǐng)求,若主片是普通全嵌套方式,則會(huì)屏蔽從片上它優(yōu)先級(jí)高的中斷請(qǐng)求。因?yàn)閺钠系?個(gè)IRi變成了主片的同一級(jí)。

而特殊全嵌套方式,對(duì)來自同一從片的較高優(yōu)先級(jí)請(qǐng)求不會(huì)屏蔽。四、中斷優(yōu)先級(jí)管理方式1.固定優(yōu)先級(jí)方式(1)IR0∽IR7的優(yōu)先級(jí)固定,IR0為最高級(jí),IR1次之,IR7為最低級(jí)。(2)CPU響應(yīng)某一級(jí)中斷時(shí),8259A將ISR中與該中斷源對(duì)應(yīng)的位置1,并自動(dòng)禁止同級(jí)和較低級(jí)的中斷請(qǐng)求。2.優(yōu)先級(jí)循環(huán)方式

IR0∽IR7的中斷級(jí)別不是固定的。當(dāng)任一中斷服務(wù)程序結(jié)束后,該中斷源就自動(dòng)降為最低級(jí),而原先比它低一級(jí)的中斷源自動(dòng)升為最高級(jí)

IR0IR1IR2IR3IR4IR5IR6IR7初始

五、中斷結(jié)束方式(EOI)在對(duì)IRi中斷源的中斷服務(wù)結(jié)束時(shí),把ISR寄存器中斷服務(wù)標(biāo)志位ISRi清0的方式:1.自動(dòng)EOI方式自動(dòng)中斷結(jié)束方式的功能是:8259A在收到第2個(gè)中斷響應(yīng)(/INTA)信號(hào)之后,自動(dòng)把ISR中置1的最高優(yōu)先級(jí)服務(wù)標(biāo)志ISRi位清0,但實(shí)際上中斷還沒有結(jié)束。若在IRi服務(wù)程序執(zhí)行過程中,如果有新的中斷請(qǐng)求,不論它的級(jí)別高低,只要CPU是處于開中斷狀態(tài),都將中斷IRi服務(wù)程序,出現(xiàn)“重復(fù)嵌套”。為了防止“重復(fù)嵌套”,服務(wù)程序必須在關(guān)中斷的前提下執(zhí)行。2.常規(guī)EOI方式在服務(wù)程序執(zhí)行IRET指令前,向8259A送一個(gè)“常規(guī)中斷結(jié)束”命令字。8259A收到EOI命令字之后,把ISR中優(yōu)先級(jí)最高的置1位清0。適合全嵌套方式下結(jié)束中斷。但是EOI不適合在特殊屏蔽方式應(yīng)用,因?yàn)樘厥馄帘畏绞较?,正在?zhí)行的高級(jí)中斷源服務(wù)程序可能被“掛起”,而響應(yīng)新的低級(jí)中斷。如果在低級(jí)服務(wù)程序中發(fā)出常規(guī)EOI命令,它所清0的不是本身的ISRi位,而是級(jí)別比它高的ISRi置1位。所以,在特殊屏蔽方式,應(yīng)使用特殊中斷結(jié)束命令。3.特殊中斷結(jié)束方式在服務(wù)程序執(zhí)行IRET之前,向8259A送一個(gè)“特殊中斷結(jié)束”命令字。8259A根據(jù)命令字L2∽L0位的編碼,把ISR中的指定位清0。該命令可在任何情況下使用。4.自動(dòng)EOI,優(yōu)先級(jí)循環(huán)方式

8259A收到第二個(gè)中斷響應(yīng)信號(hào)時(shí),自動(dòng)把ISR中置1的最高優(yōu)先級(jí)ISRi位清0,并且優(yōu)先級(jí)按循環(huán)方式進(jìn)行。5.常規(guī)EOI,優(yōu)先級(jí)循環(huán)方式

8259A收到此命令后,把ISR中最高優(yōu)先級(jí)置1位清0,同時(shí)完成優(yōu)先級(jí)循環(huán)。6.特殊EOI,優(yōu)先級(jí)循環(huán)方式“特殊EOI,優(yōu)先級(jí)循環(huán)”可將指定的ISRi位清0,并完成優(yōu)先級(jí)循環(huán)。

不管是正常、還是特殊的中斷結(jié)束方式,對(duì)于級(jí)聯(lián)系統(tǒng)中,在從片的中斷處理程序快結(jié)束時(shí),必須發(fā)送兩次EOI:一次給從片,一次給主片(向從片發(fā)EOI后,須檢查從片中的所有申請(qǐng)中斷的源是否全服務(wù)過。只有都服務(wù)過了,才能向主8259送另一個(gè)EOI命令)。在從片的中斷處理程序快結(jié)束時(shí),應(yīng)給8259A發(fā)EOI命令,方法是:(a)向從片發(fā)EOI;

(b)讀從片的ISR內(nèi)容:若為0,表示從片只有一個(gè)中斷源申請(qǐng)中斷,再向主片發(fā)一個(gè)EOI命令。若不為0,表示從片存在兩個(gè)以上的中斷源在申請(qǐng)中斷,則不應(yīng)發(fā)EOI給主片。六、總線連接方式1.緩沖方式緩沖方式是8259A通過總線驅(qū)動(dòng)器和系統(tǒng)數(shù)據(jù)線相連,此時(shí)/SP//EN端為輸出。在8259A輸出中斷類型號(hào)的時(shí)候,/SP//EN

輸出一個(gè)低電平,作為總線驅(qū)動(dòng)器的啟動(dòng)信號(hào)。2.非緩沖方式非緩沖方式,8259A數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)線直接相連,/SP//EN為輸入端。當(dāng)系統(tǒng)只有一片8259A時(shí),/SP//EN

接+5V,多片級(jí)連時(shí),主8259A/SP//EN

接+5V,從8259A/SP//EN接地。級(jí)聯(lián)(中斷最多擴(kuò)展到64級(jí))一片8259A只能接收8級(jí)中斷,當(dāng)超過8級(jí)時(shí),可用多片8259A級(jí)聯(lián)使用,構(gòu)成主從關(guān)系。n片8259A可支持7n+1個(gè)中斷源;連線要求:.主8259A:級(jí)聯(lián)信號(hào)CAS2~

CAS0是輸出信號(hào);SP端為“1”.從8259A:級(jí)聯(lián)信號(hào)CAS2~

CAS0是輸入信號(hào);SP端為“0”,從8259A的INT接到主的中斷輸入端IR上例子:3片級(jí)聯(lián)七、中斷查詢方式中斷源超過64個(gè)或一個(gè)中斷服務(wù)程序中n個(gè)模塊分別為n個(gè)中斷設(shè)備服務(wù)時(shí),8259A可以工作在中斷查詢方式,CPU用軟件查詢確認(rèn)中斷源,外設(shè)靠中斷方式請(qǐng)求服務(wù)。中斷查詢方式系統(tǒng)先關(guān)中斷,然后用OUT指令將操作命令字OCW3中的P位置1發(fā)送到8259A的偶地址端口,發(fā)出了查詢命令,組成查詢字。如果在這以前,正好有外設(shè)發(fā)出過中斷請(qǐng)求,接著用輸入指令從偶地址端口讀取8259A的查詢字,則ISR寄存器中相應(yīng)的ISRn位置“1”,查詢字指示當(dāng)前中斷服務(wù)寄存器中優(yōu)先級(jí)最高的一級(jí)中斷,CPU轉(zhuǎn)到優(yōu)先級(jí)最高的一級(jí)中斷服務(wù)程序,為指定的外部設(shè)備進(jìn)行服務(wù)。9.2.48259A初始化編程8259內(nèi)部有7個(gè)寄存器:ICW1~I(xiàn)CW4為初始化寄存器組,OCW1~OCW3為工作寄存器組。

一、初始化命令字ICW的格式1.初始化命令字ICW1

(A0=0

I3I4ICW1

芯片控制

ICW2

中斷類型號(hào)

ICW3

主從片關(guān)系

ICW4

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

ISR在服務(wù)寄存器PR優(yōu)先級(jí)判別器IRR中斷請(qǐng)求寄存器00000000

中斷屏蔽寄存器IMROCW2

10010100

00

01

OCW3OCW18259A中斷控制器用于確定級(jí)聯(lián)方式和觸發(fā)方式A0=0

表示ICW1的端口為偶地址,以下各寄存器的本項(xiàng)依次類推。D4=1ICW1的特征;D0(IC4)后邊是否要設(shè)置ICW4。若DO=0,則不要設(shè)置;D0=1,則要設(shè)置。而8088/8086是要設(shè)置ICW4的,所以D0=1;D1(SNGL)系統(tǒng)中使用單片/多片8259A。D1=1為單片;D1=0為多片。PC/XT中設(shè)定為單片,所以D1=1;D2(ADI)地址間距(8085)。8088不用,可為0;也可為1。D3(LTIM)中斷請(qǐng)求信號(hào)類型?!?”為邊沿觸發(fā)方式;“1”為電平觸發(fā)方式。D5∽D7(8085)

8088不用,可為“0”,也可為“1”。

2.ICW2(中斷類型號(hào),A0=1)提供中斷類型號(hào)

ICW2為中斷類型號(hào)初始化命令字,用戶可用該命令字定義中斷矢量的高5位碼D7∽D3(中斷矢量的基值)

。中斷類型號(hào)的后3位D2~D0,由8259A根據(jù)中斷請(qǐng)求的IRi引腳號(hào)自動(dòng)插入(見表9.2.1),則在初始化時(shí),可以寫入任意值。3.ICW3(A0=1)用于確定主片和從片的級(jí)聯(lián)狀態(tài)ICW3是主/從片的初始化命令字,只有在ICW1的D1位(SNGL)=0時(shí),即一個(gè)系統(tǒng)中包含多片8259A時(shí),才設(shè)置ICW3。對(duì)于主片來講,D7~D0與IR7~I(xiàn)R0引腳中是否連有從片相對(duì)應(yīng)。若對(duì)應(yīng)位為1,則引腳上連有從片;反之,沒有連從片。

從片初始化時(shí),ICW3中D7~D3不用,設(shè)為0。D2~D0為從片的識(shí)別碼,即指示該片接于主片IR7~I(xiàn)R0相應(yīng)的輸入端,級(jí)聯(lián)時(shí)從片的編碼如表9.2.2。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7T6 T5 T4 T3

x

x

xA0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7S6 S5 S4 S3

S2

S1

S0A0 D7 D6 D5 D4 D3 D2 D1 D0

1 00 0 0 0

ID2 ID1 ID04.ICW4

(A0=1

)完成中斷管理方式的設(shè)定只有當(dāng)ICW1的D0=1時(shí)才有必要設(shè)置ICW4。D7∽D5=000ICW4的特征。D4(SFNM)

嵌套方式。D4=1表示8259A工作于特殊全嵌套方式,用于多片8259A系統(tǒng)中;D4=0,工作于全嵌套方式或其它。D3(BUF)連接系統(tǒng)總線方式。D3=1,為緩沖方式,8259A的D7∽D0通過總線驅(qū)動(dòng)器與系統(tǒng)的數(shù)據(jù)總線相連;D3=0為直接連接方式,8259A的D7∽D0直接與系統(tǒng)的數(shù)據(jù)總線相連。D2(M/S)選擇主片/從片。因當(dāng)D3=1為緩沖方式時(shí),不能用/來識(shí)別主片/從片,所以用該位進(jìn)行識(shí)別。D2=1,本片為主片;D2=0為從片。當(dāng)D3=0時(shí),則D2不起作用。D1(AEOI)設(shè)置中斷結(jié)束方式。D1=1設(shè)置中斷自動(dòng)結(jié)束方式。D1=0中斷非自動(dòng)結(jié)束方式。D0(μPM)選擇CPU系統(tǒng)。D0=1,表示當(dāng)前處于8086/8088系統(tǒng);D0=0,表示處于8080/8085系統(tǒng)。 D7 D6 D5D4 D3 D2 D1 D0

00 0SFNM BUF M/S AEOI 1二、8259A的初始化編程1.寫入初始化命令字順序向8259A初始化命令字的順序,如圖9.2.8所示。第一個(gè)命令字ICW1寫入8259A的偶地址端口,而ICW2、ICW3、ICW4要按順序?qū)懭?259A的奇地址端口,編程時(shí)順序不能顛倒。2.初始化編程的主要內(nèi)容設(shè)定主要內(nèi)容:中斷請(qǐng)求信號(hào)的類式;單片/多片方式;中斷類型號(hào);優(yōu)先排隊(duì)規(guī)則;中斷結(jié)束方式。寫ICW1寫ICW2級(jí)連?寫ICW3需ICW4?寫ICW4NNYY初始化結(jié)束3.初始化編程舉例例9.2.1PC/XT機(jī)的BIOS對(duì)8259A初始化的條件是:?jiǎn)纹?259A,8088模式,與系統(tǒng)連接采用緩沖方式,優(yōu)先級(jí)設(shè)置為全嵌套中斷方式,中斷請(qǐng)求信號(hào)為邊沿觸發(fā),中斷類型號(hào)的基值=00001B。8259A的端口地址為:20H,21H。初始化程序段如下:MOVAL,13H;單片8259A,邊沿觸發(fā),要ICW4OUT20H,AL;初始化ICW1MOVAL,08H;8259A中斷向量高5位為00001BOUT21H,AL;初始化ICW2MOVAL,09H;8088模式、緩沖方式、全嵌套OUT21H,AL;初始化ICW4例9.2.2PC/AT中,硬件中斷管理采用兩片8259A,各輸入端中斷源如表9.2.3。從片的INT與主片IR2相連,系統(tǒng)中主片8259A的端口地址為20H和21H,從片口地址為OAOH和OA1H,系統(tǒng)對(duì)主片8259A初始化的要求是:主片:邊沿觸發(fā)方式,級(jí)聯(lián)但無緩沖,起始中斷類型號(hào)為08H(IRO),正常的中斷結(jié)束,全嵌套方式。從片:起始中斷類型號(hào)為70H,其它條件與主片相同。主片初始化程序段:

MOVAL,00010101B;ICW1,邊沿觸發(fā),要ICW4,級(jí)連要ICW3OUT20HAL;寫入ICW1MOVAL,00001000H;ICW2,設(shè)置IRO的中斷類型號(hào)為08HOUT21HAL;寫入ICW2MOVAL,00000100B;ICW3,主片8259A的IR2接從片INTOUT21HAL;寫人ICW3MOVAL,00000101B;ICW4,不用緩沖,正常中斷結(jié)束,全嵌套方式

OUT21HAL;寫入ICW4從片初始化程序段:

MOVAL,0001000lB;ICW1,邊沿觸發(fā),要ICW4,級(jí)連要ICW3OUT0A0H,AL;寫入ICW1MOVAL,01110000H;ICW2,設(shè)置IR0的中斷類型號(hào)為70HOUT0A1H,AL;寫入ICW2MOVAL,00000010B;ICW3,從片8259A的INT接主片的IR2OUT0A1HAL;寫入ICW3MOVAL,00000001B;ICW4,不用緩沖,正常中斷結(jié)束,全嵌套方式

OUT0A1HAL;寫入ICW4三、操作命令字OCW8259A操作命令字OCW1~OCW3,在應(yīng)用程序內(nèi)設(shè)置,寫入次序要求不嚴(yán),但OCW1必須寫入奇地址,OCW2,OCW3要寫入偶地址。

1.操作命令字OCW1(A0=1)OCW1是中斷屏蔽命令字。D0~D7對(duì)應(yīng)于IR0~I(xiàn)R7線的屏蔽/開放位。當(dāng)OCW1某位為1,則相對(duì)應(yīng)的中斷源IRi位被屏蔽;若某位為0,則開放。例:

MOVAL,OFCH

OUT21H,ALA0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7M6 M5 M4 M3

M2

M1

M02.操作命令字OCW2(A0=0)

OCW2是用來設(shè)置中斷優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式的操作命令字。OCW2的標(biāo)志為:D3=D4=0R(D7)

決定系統(tǒng)的中斷優(yōu)先級(jí)是否按自動(dòng)循環(huán)方式設(shè)置。R=1,采用優(yōu)先級(jí)自動(dòng)循環(huán)方式;R=0,則為非自動(dòng)循環(huán)方式。SL(D6)

決定OCW2中的L2、L1、L0是否有效。若SL=1則L2、L1、L03位有效,否則為無效。

L2、L1、L0這3位有兩個(gè)功能,一是在設(shè)置為特殊的中斷結(jié)束命令字時(shí),L2、L1、L0指出要清除當(dāng)前ISR中的哪一位;二是在特殊的優(yōu)先級(jí)循環(huán)方式命令字時(shí),L2、L1、L0將指出循環(huán)開始時(shí)哪個(gè)中斷的優(yōu)先級(jí)最低。EOI(D5)中斷結(jié)束命令位。當(dāng)EOI=1時(shí),使當(dāng)前ISR中對(duì)應(yīng)的最高級(jí)別位ISRi復(fù)位。此時(shí),ICW4中的AEOI位為0,則ISRi位就要用EOI命令位來清除。A0 D7 D6 D5 D4 D3 D2 D1 D0

0 RSL EOI 0 0

L2

L1

L0RSLEOI

功能說明001普通中斷結(jié)束命令。使當(dāng)前中斷服務(wù)程序?qū)?yīng)的最高級(jí)別的ISRi位清“0”。011特殊中斷結(jié)束命令。由L2、L1、L0組成一個(gè)特殊的中斷結(jié)束命令。101普通優(yōu)先級(jí)循環(huán)中斷結(jié)束命令。某中斷服務(wù)結(jié)束,8259A一方面將ISR中當(dāng)前中斷處理程序?qū)?yīng)的ISRi位清“0”,另一方面將剛結(jié)束的中斷請(qǐng)求IRi降為最低優(yōu)先級(jí),而將最高優(yōu)先級(jí)賦給中斷請(qǐng)求IRi+1,。111特殊優(yōu)先級(jí)循環(huán)的中斷結(jié)束命令。某中斷服務(wù)結(jié)束,由L2L1L0給定的ISRi清“0”,而最高優(yōu)先級(jí)將賦給ISRi+1。100設(shè)置優(yōu)先級(jí)自動(dòng)循環(huán)命令(置位)。在中斷優(yōu)先級(jí)自動(dòng)循環(huán)方式時(shí),CPU在中斷響應(yīng)總線周期中第2個(gè)中斷響應(yīng)信號(hào)INTA結(jié)束時(shí),將ISR中的相應(yīng)位ISRi清“0”,并將最低優(yōu)先級(jí)賦給這一級(jí),而最高優(yōu)先級(jí)賦給ISRi+1。000結(jié)束優(yōu)先級(jí)自動(dòng)循環(huán)命令(復(fù)位)。110特殊優(yōu)先級(jí)循環(huán)命令。由L2L1L0指定中斷請(qǐng)求IRi最低優(yōu)先級(jí),而最高優(yōu)先級(jí)賦給IRi+1,其它各級(jí)則依次類推。010

OCW2無意義。3.操作命令字OCW3

(A0=0)

該命令字用來設(shè)置中斷查詢方式、設(shè)置和撤消特殊屏蔽方式、設(shè)置對(duì)8259A內(nèi)部寄存器IRR,ISR,IMR的讀出命令:D4=0,D3=1OCW3的特征位。D7=0

固定值;D6(ESMM)特殊屏蔽允許位,ESMM=1允許特殊屏蔽,否則不允許;D5(SMM)特殊屏蔽模式位,SMM=1選擇特殊屏蔽方式,SMM=0選擇非特殊屏蔽方式。當(dāng)D6D5=11時(shí),置位特殊屏蔽方式。即如果系統(tǒng)正在執(zhí)行高級(jí)中斷處理程序,希望能響應(yīng)低級(jí)中斷,可以用該命令字將高級(jí)中斷中止,而響應(yīng)低級(jí)中斷,執(zhí)行完低級(jí)中斷。D6D5=10時(shí),解除對(duì)高級(jí)中斷的特殊屏蔽。A0D7D6D5 D4 D3 D2 D1D0

00ESMMSMM 0 1 P RRRISD2(P)中斷查詢方式位。查詢中斷方式,不使用中斷類型號(hào)和中斷矢量表。當(dāng)P=1,使8259A設(shè)置為中斷查詢方式,CPU不是靠中斷請(qǐng)求信號(hào)而是靠讀取查詢字進(jìn)入中斷處理過程。P=0,為非中斷查詢方式,該方式下可以讀取IRR、ISR的狀態(tài)。若設(shè)置OCW3的D2D1D0=100后,CPU讀取OCW3的同一地址(8259A的A0=0)的內(nèi)容,可得到中斷識(shí)別狀態(tài)字(查詢字):D7~D0=I0000W2W1W0

I

指示是否有中斷設(shè)備。I=1,表示有設(shè)備請(qǐng)求中斷,I=0,表示沒有設(shè)備申請(qǐng)中斷。W2W1W0指示請(qǐng)求中斷的最高優(yōu)先級(jí)。I=1時(shí),CPU查詢中斷方式才有效,CPU讀取查詢字(IN),使ISR的對(duì)應(yīng)位置1,復(fù)位對(duì)應(yīng)最高優(yōu)先級(jí)的IRR位,并送查詢字到數(shù)據(jù)線進(jìn)入AL,CPU根據(jù)W2W1W0的值進(jìn)入最高優(yōu)先級(jí)的IRi的中斷處理過程。例:CPU讀8259A查詢字進(jìn)入中斷的過程如下:...CLIMOVAL,0CHOUT20H,AL;OCW3設(shè)置查詢命令字WWW:INAL,20HTEST80H;讀取查詢字JZWWW;I=0,繼續(xù)查詢或執(zhí)行其它程序MOVBL,AL;I=1轉(zhuǎn)入W2W1W0指出的最高級(jí)編碼中斷處理程序ANDBX,0007HJMP(BX)..;D1(RR)

讀寄存器命令位,RR=1允許讀寄存器IRR和ISR,RR=0禁止讀這兩個(gè)寄存的內(nèi)容。D0(RIS)寄存器選擇位,在RR=1的情況下,該位才有意義。RIS=0讀IRR,RIS=l讀ISR寄存器的內(nèi)容。

讀寄存器IRR和ISR的狀態(tài)端口為偶地址。IMR的狀態(tài),可以通過輸入指令從8259A奇地址讀取,即對(duì)OCW1讀得到IMR的狀態(tài)。例如當(dāng)D2D1D0=010,表示要讀中斷請(qǐng)求寄存器IRR;當(dāng)D2D1D0=011,表示要讀中斷服務(wù)寄存器ISR;當(dāng)A0=1,對(duì)OCW1讀出,即可讀得IMR的狀態(tài)。無需向8259A寫入OCW3字。例:;讀ISRMOVAL,0BH;P=0,RR=1,RIS=1,表示要讀ISROUT20H,ALNOPINAL,20H;(AL)為ISR寄存器里的內(nèi)容;讀IRRMOVAL,0AH;P=0,RR=1,RIS=0表示要讀IRROUT20H,ALNOPINAL,20H;(AL)為IRR寄存器里的內(nèi)容.;讀IMRINAL,21H;讀取IMR(OCW1)狀態(tài)四、命令字特征及寫入順序說明

1.ICW1,OCW2,OCW3都寫入偶地址端口,8259A通過它們的特征加以區(qū)分:ICW1的特征是D4=1;而OCW2的特征是D4D3=00,OCW3的特征是D4D3=01。2.ICW2,ICW3,ICW4,OCW1均寫入奇地址端口,8259A是通過這些命令字的位置和寫入時(shí)間來區(qū)分的。初始化命令字ICW2,ICW3,ICW4在ICW1的后面順序?qū)懭?次序不可顛倒。對(duì)于一片8259A,ICW1,ICW2是必須設(shè)置的;ICW3,ICW4并非每片8259A都要設(shè)置,只有在級(jí)聯(lián)方式下才需設(shè)置ICW3(由ICW1的D1位才設(shè)置ICW3)。在8086/8088系統(tǒng)或需要設(shè)置特殊全嵌套方式、緩沖模式、中斷自動(dòng)結(jié)束方式的情況下(由ICW1的D0位=1)才設(shè)置ICW4。OCW1操作命令字,總是單獨(dú)寫入的,可以由任何程序在任何時(shí)間多次寫入。例1:按以下要求初始化8259A:接口地址為20H和21H;中斷為上升沿觸發(fā);單片8259A;一般EOI;與IR0-IR3對(duì)應(yīng)的中斷向量碼為08H-0BH;IR4-IR7不使用。分析:根據(jù)要求,各初始化參數(shù)及工作參數(shù)如下:ICW1=00010011=13HICW2=08H中斷向量碼ICW4=01HOCW1=11110000=0F0H中斷屏蔽字初始化程序如下:INIT8259A:

MOV AL,13H;A0=0,寫ICW1

OUT 20H,AL;上升沿觸發(fā),單片,寫ICW4

;A0=1,寫ICW2,ICW4,OCW1 MOV AL,08H ;ICW2 OUT 21H,ALMOVAL,01H;ICW4OUT21H,AL MOV AL,0F0H ;OCW1:屏蔽IR4-IR7

OUT21H

,AL例:設(shè)PC/XT機(jī)正在為IRQ3中斷服務(wù),希望響應(yīng)比IRQ3低的中斷。用特殊命令字將IRQ3暫時(shí)屏蔽,響應(yīng)低級(jí)中斷,響應(yīng)結(jié)束,解除對(duì)IRQ3的中斷屏蔽,執(zhí)行IRQ3的服務(wù)程序,IRQ3中斷服務(wù)程序如下:.CLIMOVAL,08H;送屏蔽IRQ3的字給OCW1OUT21H,ALMOVAL,68H;D6D5=11,即特殊屏蔽字送OCW3OUT20H,ALSTI;若有低級(jí)中斷可以響應(yīng),并為其服務(wù).CLIMOVAL,48H;D6D5=10,即解除特殊屏蔽字送OCW3OUT20H,ALMOVAL,00H;解除對(duì)IRQ3的屏蔽字送OCW1OUT21H,ALSTI.IRET例2:若8259A以兩片級(jí)聯(lián)方式管理15級(jí)中斷,從片INT接到主片的IR2上,主、從片的中斷請(qǐng)求采用邊沿觸發(fā)方式,選用非緩沖方式,一般EOI。主片的中斷類型碼為8~0FH,從片的中斷類型碼為70H~77H,設(shè)主片的地址為20H,21H;從片的地址為0A0H,0A1H。請(qǐng)初始化8259A。(1)8259A初始化編程對(duì)主片8259A的初始化:

MOVAL,00010001H;ICW1

OUT20H,ALJMPINTR1INTR1:MOVAL,00001000H;ICW2OUT21H,ALJMPINTR2INTR2:MOVAL,00000100H;ICW3OUT21H,ALJMPINTR3JNTR3:MOVAL,11H;ICW4主片特殊全嵌套

OUT21H,AL

對(duì)從片8259A的初始化:

MOVAL,11H OUT0A0H,AL JMPINTR5INTR5:MOVAL,70HOUT0A1H,AL JMPINTR6INTR6:MOVAL,02HOUT 0A1H,ALJMPINTR7INTR7:MOVAL,01HOUT0A1H,AL

;從片普通全嵌套(2)級(jí)聯(lián)工作編程讀ISR的內(nèi)容(OCW3):

MOVAL,0BHOUT0A0H,ALNOP INAL,0A0H從片發(fā)EOI命令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論