A芯片使用方法_第1頁
A芯片使用方法_第2頁
A芯片使用方法_第3頁
A芯片使用方法_第4頁
A芯片使用方法_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、 8259A的引線及內(nèi)部結(jié)構(gòu)1、 引腳信號(hào) 8259A引腳信號(hào)如下圖所示:8259A引腳圖l D7D0:雙向、三態(tài)數(shù)據(jù)線,與系統(tǒng)數(shù)據(jù)總線相連。對(duì)8259A編程時(shí),命令字由此寫入;在第二個(gè)中斷響應(yīng)總線周期中,中斷類型碼由此傳給CPU。l :讀信號(hào),輸入,與系統(tǒng)控制總線相連。=0時(shí),CPU對(duì)8259A進(jìn)行讀操作。l :寫信號(hào),輸入,與系統(tǒng)控制總線相連。當(dāng)=0時(shí),CPU對(duì)8259A進(jìn)行寫操作。l A0:片內(nèi)寄存器尋址信號(hào),輸入,用于對(duì)片內(nèi)寄存器端口尋址。每片8259A有兩個(gè)寄存器端口,A0=0時(shí),選中偶地址端口,A0=1時(shí),選中奇地址端口。在與8088系統(tǒng)相連時(shí),可將該引腳與地址總線的A0連接;

2、與8086系統(tǒng)連接時(shí),可將該引腳與地址總線的A1連接。l :片選信號(hào),輸入。=0時(shí),8259A被選中。在與8088系統(tǒng)相連時(shí),系統(tǒng)地址信號(hào)A15A1經(jīng)譯碼器譯碼后為8259A產(chǎn)生片選信號(hào)。l /:雙功能雙向信號(hào)。當(dāng)8259A工作在緩沖模式時(shí),它作為輸出,用于控制緩沖器的傳送方向。當(dāng)數(shù)據(jù)從CPU送往8259A時(shí),/輸出為高電平;當(dāng)數(shù)據(jù)從8259A送往CPU時(shí),/輸出為低電平。當(dāng)8259A工作在非緩沖模式時(shí),它作為輸入,用于指定8259A是主片還是從片(級(jí)聯(lián)方式)。/=1的8259A為主片,/=0的8259A為從片。l INT:中斷請(qǐng)求信號(hào),輸出,與CPU的中斷請(qǐng)求信號(hào)線INT相連。在級(jí)聯(lián)方式下,

3、從片的INT與主片的IR7IR0中的某一根連接在一起。l :中斷響應(yīng)信號(hào),輸入,與CPU的中斷響應(yīng)信號(hào)線相連。l CAS2CAS0:級(jí)聯(lián)控制線,主片的CAS2CAS0與從片的CAS2CAS0對(duì)應(yīng)相連。對(duì)于主片,CAS2CAS0為輸出信號(hào);對(duì)于從片,CAS2CAS0為輸入信號(hào)。當(dāng)從片發(fā)起的中斷請(qǐng)求被響應(yīng)時(shí),主片通過CAS2CAS0送出相應(yīng)的編碼給從片,告訴從片該中斷請(qǐng)求被允許。l IR7IR0:中斷請(qǐng)求輸入信號(hào),由外設(shè)輸入。上升沿(邊沿觸發(fā)方式)或高電平(電平觸發(fā)方式)表示有中斷請(qǐng)求到達(dá)。l VCC:5V電源輸入信號(hào)。 l GND:電源地2、 內(nèi)部結(jié)構(gòu)8259A的內(nèi)部結(jié)構(gòu)如下圖所示:8259A的

4、內(nèi)部結(jié)構(gòu)圖l 數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器為三態(tài)、雙向、8位寄存器。數(shù)據(jù)線D7D0與CPU系統(tǒng)數(shù)據(jù)總線連接,構(gòu)成CPU與8259A之間信息傳送的通道。l 讀/寫控制邏輯讀/寫控制邏輯用來接收來自系統(tǒng)總線的讀/寫控制信號(hào)和端口地址尋址信號(hào),用于控制8259A內(nèi)部寄存器的讀/寫操作。 l 級(jí)聯(lián)緩沖/比較器 8259A既可以工作于單片方式,也可以工作于多片級(jí)聯(lián)方式。級(jí)聯(lián)緩沖/比較器提供多片8259A的管理和選擇功能,其中一片為主片,其余為從片。l 中斷控制邏輯中斷控制邏輯按照編程設(shè)定的工作方式管理中斷,負(fù)責(zé)向片內(nèi)各部件發(fā)送控制信號(hào),向CPU發(fā)送中斷請(qǐng)求信號(hào)INT和接收CPU回送的中斷響應(yīng)信號(hào),控制8

5、259A進(jìn)入中斷管理狀態(tài)。l 中斷請(qǐng)求寄存器(interrupt request register,IRR)IRR是一個(gè)8位(D0D7)寄存器,它接受并鎖存來自IR0IR7的中斷請(qǐng)求信號(hào),也就是說它記錄著當(dāng)前的中斷請(qǐng)求。D0D7與中斷請(qǐng)求信號(hào)IR0IR7對(duì)應(yīng),當(dāng)IRi(i07)上出現(xiàn)中斷請(qǐng)求信號(hào)時(shí),對(duì)應(yīng)的Di置1。因?yàn)橥粫r(shí)刻可能有多個(gè)中斷請(qǐng)求到達(dá),因此IRR可能有多個(gè)位置1。第一個(gè)中斷響應(yīng)信號(hào)到達(dá)后(CPU在對(duì)8259A的中斷請(qǐng)求INT進(jìn)行響應(yīng)時(shí),會(huì)連續(xù)返回兩個(gè)中斷響應(yīng)信號(hào),產(chǎn)生兩個(gè)中斷響應(yīng)總線周期),如果8259A決定使IRi得到響應(yīng),則會(huì)將對(duì)應(yīng)的Di清除。第一個(gè)中斷響應(yīng)脈沖到達(dá)后,IRR

6、鎖存功能失效,不接受IR0IR7上的中斷請(qǐng)求信號(hào);直到第二個(gè)中斷響應(yīng)脈沖結(jié)束后,IRR鎖存功能才得以恢復(fù)。l 中斷服務(wù)寄存器(interrupt service register,ISR)ISR是一個(gè)8位(IS0IS7)寄存器,用于記錄CPU當(dāng)前正在服務(wù)的中斷。IS0IS7與中斷請(qǐng)求信號(hào)IR0IR7對(duì)應(yīng)。第一個(gè)中斷響應(yīng)脈沖達(dá)到后,如果8259A決定使IRi得到響應(yīng),則會(huì)將對(duì)應(yīng)的ISi(i07)置1,表示IRi正在被服務(wù)。ISi的復(fù)位則由8259A中斷結(jié)束方式?jīng)Q定。若8259A被設(shè)置為自動(dòng)結(jié)束方式,ISi會(huì)在第二個(gè)中斷響應(yīng)脈沖的后沿被自動(dòng)復(fù)位為0;若8259A被設(shè)置為非自動(dòng)結(jié)束方式,則Di應(yīng)由其

7、對(duì)應(yīng)的中斷服務(wù)程序發(fā)送來的中斷結(jié)束命令(EOI)復(fù)位。ISi置1可阻止與其同級(jí)或更低優(yōu)先級(jí)的中斷請(qǐng)求被響應(yīng),但不能阻止比其優(yōu)先級(jí)高的中斷請(qǐng)求被響應(yīng),即允許中斷嵌套。因此,ISR中可能不止一位被置1。l 中斷屏蔽寄存器(interrupt mask register,IMR)IMR是一個(gè)8位(IM0IM7)寄存器,用來存放IR0IR7的中斷屏蔽標(biāo)志。IM0IM7與中斷請(qǐng)求信號(hào)IR0IR7對(duì)應(yīng),用于屏蔽IRi。當(dāng)IMi=1時(shí),對(duì)應(yīng)的IRi中斷請(qǐng)求被禁止;IMi=0時(shí),對(duì)應(yīng)IRi中斷被開放。l 優(yōu)先權(quán)判決器(priority register,PR)優(yōu)先權(quán)判決器將IRR中記錄的當(dāng)前中斷請(qǐng)求與ISR中

8、記錄的CPU正在服務(wù)的中斷按中斷優(yōu)先級(jí)排隊(duì)并進(jìn)行比較,如果IRR中優(yōu)先級(jí)最高者的優(yōu)先級(jí)高于ISR中優(yōu)先級(jí)最高者,則由中斷控制邏輯向CPU發(fā)出中斷請(qǐng)求信號(hào)INT,使CPU暫停當(dāng)前的中斷服務(wù),轉(zhuǎn)而響應(yīng)IRR中優(yōu)先級(jí)最高者,即進(jìn)行中斷嵌套;否則8259A不向CPU發(fā)起中斷請(qǐng)求INT,CPU繼續(xù)當(dāng)前的工作。二、 8259A的工作過程1、 接受來自IR0IR7的中斷請(qǐng)求,使IRR的對(duì)應(yīng)位置1。2、 PR對(duì)IRR中記錄的且未被屏蔽的中斷和IRS中記錄的中斷進(jìn)行優(yōu)先權(quán)判決,并決定是否向CPU發(fā)起中斷請(qǐng)求INT。如果IRR中優(yōu)先級(jí)最高者的優(yōu)先級(jí)高于ISR中優(yōu)先級(jí)最高者,則向CPU發(fā)出中斷請(qǐng)求信號(hào)INT,否則不

9、發(fā)出。3、 CPU收到INT,如果IF=1,則待當(dāng)前執(zhí)行的指令結(jié)束后連續(xù)返回給8295A兩個(gè)中斷響應(yīng)信號(hào)。4、 8295A收到第一個(gè)中斷響應(yīng)信號(hào)后(1) 使IRR的鎖存功能失效,不再接受中斷請(qǐng)求,直到第二個(gè)中斷響應(yīng)信號(hào)結(jié)束后恢復(fù)。(2) 對(duì)IRR中記錄的優(yōu)先級(jí)最高的中斷請(qǐng)求進(jìn)行響應(yīng):使其對(duì)應(yīng)的ISR位置1,并使其對(duì)應(yīng)的IRR位復(fù)位。5、 8295A收到第二個(gè)中斷響應(yīng)信號(hào)后(1) 將被響應(yīng)中斷的中斷類型碼送CPU。CPU用中斷類型碼乘以4就得到了該中斷的中斷向量的地址,然后從該地址中取出中斷向量,轉(zhuǎn)而執(zhí)行該中斷的中斷服務(wù)程序,即對(duì)該中斷進(jìn)行服務(wù)。(2) 如果8295A工作在自動(dòng)結(jié)束方式,在第二個(gè)

10、中斷響應(yīng)脈沖的后沿,會(huì)使被響應(yīng)中斷對(duì)應(yīng)的ISR位復(fù)位。如果8295A工作在非自動(dòng)結(jié)束方式,則中斷服務(wù)程序在結(jié)束之前,應(yīng)通過中斷結(jié)束命令(EOI)使中斷對(duì)應(yīng)的ISR位復(fù)位。三、 8259A的工作方式8259A的中斷管理功能很強(qiáng),單片可以管理8級(jí)外部中斷,在多片級(jí)聯(lián)方式下最多可以管理64級(jí)外部中斷,并且具有中斷優(yōu)先權(quán)判優(yōu)、中斷嵌套、中斷屏蔽和中斷結(jié)束等多種中斷管理方式。1、 中斷優(yōu)先方式 一般情況下,8259A總是響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求,而且使CPU暫停對(duì)低優(yōu)先級(jí)中斷的服務(wù),轉(zhuǎn)而服務(wù)高優(yōu)先級(jí)的中斷,即中斷嵌套。8259A的中斷優(yōu)先方式分為兩種:l 固定優(yōu)先級(jí)方式在固定優(yōu)先級(jí)方式中,IR0IR7的

11、中斷優(yōu)先級(jí)是固定不變的,除非通過編程重新設(shè)置優(yōu)先級(jí)別。8259A在加電后就工作在固定優(yōu)先級(jí)方式,剛加電時(shí),IR0IR7默認(rèn)的優(yōu)先級(jí)順序是:IR0,IR1,IR2,IR7,其中,IR0的優(yōu)先級(jí)最高,IR7的優(yōu)先級(jí)最低。l 自動(dòng)循環(huán)優(yōu)先級(jí)方式 在自動(dòng)循環(huán)優(yōu)先級(jí)方式中,IR0IR0優(yōu)先級(jí)是可以改變的。其變化規(guī)律是:當(dāng)某個(gè)中斷請(qǐng)求的服務(wù)結(jié)束后,它的優(yōu)先級(jí)自動(dòng)降為最低,原來比它低一級(jí)的中斷則變?yōu)樽罡呒?jí),IR0IR7的優(yōu)先級(jí)按右循環(huán)方式改變。例如,若初始優(yōu)先級(jí)從高到底依次為IR0,IR1,IR2,IR7,此時(shí)如果IR4和IR6有中斷請(qǐng)求,則先服務(wù)IR4。在IR4被服務(wù)之后,它自動(dòng)降為最低級(jí),IR5變?yōu)樽罡?/p>

12、級(jí),這時(shí)中斷優(yōu)先級(jí)順序變?yōu)椋篒R5,IR6,IR7,IR0,IR1,IR2,IR3,IR4。這種優(yōu)先級(jí)管理方式,可以使8個(gè)中斷請(qǐng)求都可享受同等優(yōu)先服務(wù)的權(quán)利。自動(dòng)循環(huán)優(yōu)先級(jí)方式分為普通自動(dòng)循環(huán)方式和特殊自動(dòng)循環(huán)方式兩種:普通自動(dòng)循環(huán)方式的特點(diǎn)是:IR7IR0的初始優(yōu)先級(jí)順序由系統(tǒng)指定,即優(yōu)先級(jí)從IR0到IR7依次降低。以后隨著中斷的產(chǎn)生,它們的優(yōu)先級(jí)順序?qū)从已h(huán)方式自動(dòng)改變。而特殊自動(dòng)循環(huán)方式的特點(diǎn)是:通過編程人為地將某個(gè)中斷請(qǐng)求降為最低級(jí),而其它中斷請(qǐng)求的優(yōu)先級(jí)也隨之改變,以后隨著中斷的產(chǎn)生,它們的優(yōu)先級(jí)順序?qū)从已h(huán)方式自動(dòng)改變。例如,通過編程將IR4降為最低級(jí)后,IR7IR0的優(yōu)先級(jí)順

13、序則變?yōu)椋篒R5,IR6,IR7,IR0,IR1,IR2,IR3,IR4。2、 中斷嵌套方式 無論是固定優(yōu)先級(jí)方式而是自動(dòng)循環(huán)優(yōu)先級(jí)方式,它們都允許中斷嵌套,即允許更高優(yōu)先級(jí)的中斷打斷CPU當(dāng)前的中斷服務(wù)過程,使CPU轉(zhuǎn)而為更高優(yōu)先級(jí)的中斷進(jìn)行服務(wù)。8259A允許兩種嵌套方式:l 普通全嵌套方式普通全嵌套方式是8259A最常用的工作方式,簡稱為全嵌套方式,它是8259A初始化后默認(rèn)的工作方式。其特點(diǎn)是:在CPU進(jìn)行中斷服務(wù)時(shí)(即執(zhí)行中斷服務(wù)程序過程中),若有新的中斷請(qǐng)求到來,8259A只允許比當(dāng)前服務(wù)的中斷請(qǐng)求的優(yōu)先級(jí)“高”的中斷請(qǐng)求進(jìn)入(也就是為比當(dāng)前服務(wù)的中斷請(qǐng)求的優(yōu)先級(jí)“高”的中斷請(qǐng)求向

14、CPU發(fā)出INT信號(hào)),而不允許“同級(jí)”或“低級(jí)”的中斷請(qǐng)求進(jìn)入。l 特殊全嵌套方式特殊全嵌套方式是8259A在多片級(jí)聯(lián)方式下使用的一種嵌套方式。其特點(diǎn)是:在CPU進(jìn)行中斷服務(wù)時(shí),8259A除了允許更高優(yōu)先級(jí)的中斷請(qǐng)求進(jìn)入外,還允許同級(jí)中斷請(qǐng)求進(jìn)入,從而實(shí)現(xiàn)了對(duì)同級(jí)中斷請(qǐng)求的特殊嵌套。在級(jí)聯(lián)方式下,主片通常設(shè)置為特殊全嵌套方式,從片設(shè)置為普通全嵌套方式。這樣設(shè)置的好處在于:當(dāng)從片的某個(gè)中斷請(qǐng)求得到響應(yīng)并進(jìn)入中斷服務(wù)期間后,來自該從片的“更高級(jí)”的中斷請(qǐng)求仍能被主片響應(yīng)。這是因?yàn)閺钠乃兄袛嗾?qǐng)求都是通過同一個(gè)IRi引入主片,對(duì)于主片來說,來自從片的所有中斷請(qǐng)求都屬于同級(jí),而特殊全嵌套方式允許同

15、級(jí)的中斷請(qǐng)求進(jìn)入,因此主片能響應(yīng)來自從片的“更高級(jí)”的中斷請(qǐng)求。3、 中斷屏蔽方式 中斷屏蔽方式是對(duì)8259A的中斷請(qǐng)求IR0IR7進(jìn)行屏蔽的一種中斷管理方式,有普通屏蔽方式和特殊屏蔽方式兩種。l 普通屏蔽方式普通屏蔽方式是通過8259A的中斷屏蔽寄存器(IMR)來實(shí)現(xiàn)對(duì)中斷請(qǐng)求IRi的屏蔽。通過編程寫入操作命令字OCW1,將IMR中的IMi位置1,以達(dá)到對(duì)相應(yīng)的IRi(i07)中斷請(qǐng)求的屏蔽。一旦IRi被屏蔽,它就不可能被8259A響應(yīng)。l 特殊屏蔽方式 在某些應(yīng)用場合,我們希望正在被CPU服務(wù)的中斷能夠被更低優(yōu)先級(jí)的中斷請(qǐng)求打斷。為達(dá)到這個(gè)目的,自然會(huì)想到使IMR中的相應(yīng)位置1,使本級(jí)中斷

16、受到屏蔽,從而為更低優(yōu)先級(jí)的中斷請(qǐng)求進(jìn)入提供可能,但是這樣做有一個(gè)問題:每當(dāng)一個(gè)中斷請(qǐng)求被響應(yīng)時(shí),8259A會(huì)使該中斷對(duì)應(yīng)的ISR位置1,只要CPU沒有對(duì)該中斷發(fā)出中斷結(jié)束命令(EOI),8259A就會(huì)禁止所有比它優(yōu)先級(jí)低的中斷請(qǐng)求進(jìn)入。如果8259A工作在特殊屏蔽方式,使IMR的某位置1,就會(huì)同時(shí)使ISR的對(duì)應(yīng)位自動(dòng)復(fù)位。這樣就可以使更低優(yōu)先級(jí)的中斷請(qǐng)求進(jìn)入,當(dāng)然未被屏蔽的更高優(yōu)先級(jí)的中斷請(qǐng)求也可以進(jìn)入。可以通過編程寫入操作命令字OCW3來設(shè)置或取消特殊屏蔽方式。 4、 中斷結(jié)束方式 當(dāng)一個(gè)中斷請(qǐng)求IRi得到響應(yīng)時(shí),8259A會(huì)將其對(duì)應(yīng)的ISR位置1,CPU服務(wù)完該中斷后,應(yīng)及時(shí)清除其對(duì)應(yīng)I

17、SR位,否則就意味著CPU仍在為該中斷服務(wù),致使比它優(yōu)先級(jí)低的中斷請(qǐng)求無法進(jìn)入。8259A提供了以下三種中斷結(jié)束方式:l 自動(dòng)結(jié)束方式 如采用自動(dòng)結(jié)束方式,則剛被響應(yīng)的中斷請(qǐng)求對(duì)應(yīng)的ISR位會(huì)在第二個(gè)中斷響應(yīng)脈沖的后沿被復(fù)位。這種中斷服務(wù)結(jié)束方式是由硬件自動(dòng)完成的。需要注意的是:盡管中斷請(qǐng)求對(duì)應(yīng)的ISR位被清除,但其中斷服務(wù)程序并不一定真正結(jié)束,若在中斷服務(wù)程序的執(zhí)行過程中有另外一個(gè)比其優(yōu)先級(jí)低的請(qǐng)求信號(hào)到來,因8259A并沒有保存任何標(biāo)志來表示當(dāng)前中斷服務(wù)尚未結(jié)束,致使低優(yōu)先級(jí)中斷請(qǐng)求進(jìn)入,打斷當(dāng)前中斷服務(wù)程序的執(zhí)行。因此這種方式只適合用在沒有中斷嵌套的場合。l 普通結(jié)束方式 如采用普通結(jié)束

18、方式,則中斷服務(wù)程序在結(jié)束之前應(yīng)向8259A寫入一個(gè)包含了普通EOI命令的操作命令字OCW2,該命令不指定需復(fù)位的ISR位。收到該命令后,8259A會(huì)清除ISR中已置1的優(yōu)先級(jí)最高的那一位。在普通全嵌套方式下,因?yàn)镃PU正在服務(wù)的中斷只會(huì)被優(yōu)先級(jí)更高的中斷請(qǐng)求打斷,因此當(dāng)前結(jié)束的中斷必定是所有正在服務(wù)的中斷中優(yōu)先級(jí)最高的,它對(duì)應(yīng)著ISR中已置1的優(yōu)先級(jí)最高的那一位,因此普通結(jié)束方式適用于普通全嵌套方式下的中斷結(jié)束。l 特殊結(jié)束方式 特殊結(jié)束方式要求中斷服務(wù)程序在結(jié)束之前向8259A寫入一個(gè)包含了特殊EOI命令的操作命令字OCW2,該命令要指定需復(fù)位的ISR位。由于在特殊EOI命令中明確指出了復(fù)

19、位ISR中的哪一位,因此,它可以用于普通全嵌套方式下的中斷結(jié)束,更適用于優(yōu)先級(jí)嵌套結(jié)構(gòu)有可能遭到破壞時(shí)(CPU正在服務(wù)的高優(yōu)先級(jí)中斷被低優(yōu)先級(jí)/同級(jí)的中斷請(qǐng)求打斷)的中斷結(jié)束。 在此,對(duì)級(jí)聯(lián)系統(tǒng)中的從片的中斷結(jié)束處理做一些說明。在主片設(shè)置為特殊全嵌套方式,從片設(shè)置為全嵌套方式的情況下,從片可能出現(xiàn)中斷嵌套。來自從片的任意中斷的中斷服務(wù)程序在結(jié)束之前,都應(yīng)先向從片發(fā)出一個(gè)普通EOI命令,使其本身對(duì)應(yīng)的ISR位復(fù)位,然后讀出ISR的內(nèi)容,如果為0,則向主片發(fā)出一個(gè)特殊EOI命令,清除主片中與引入從片的IRi對(duì)應(yīng)的ISR位;如果從片ISR的內(nèi)容不為0,則說明從片中仍有中斷服務(wù)尚未完成,此時(shí),則不需要

20、向主片發(fā)出特殊EOI命令。5、 中斷觸發(fā)方式 中斷請(qǐng)求輸入端IR0IR7可采用的中斷觸發(fā)方式有電平觸發(fā)和邊沿觸發(fā)兩種,由初始化命令字ICW1中的LTIM位來設(shè)定。當(dāng)LTIM設(shè)置為1時(shí),為電平觸發(fā)方式。8259A檢測到IRi(i07)端有高電平時(shí)產(chǎn)生中斷。如采用這種觸發(fā)方式,中斷請(qǐng)求信號(hào)在被響應(yīng)后應(yīng)及時(shí)撤除,否則可能引起不該有的第二次中斷。當(dāng)LTIM設(shè)置為0時(shí),為邊沿觸發(fā)方式。8259A檢測到IRi端有由低到高的跳變信號(hào)時(shí)產(chǎn)生中斷。無論采用哪種中斷觸發(fā)方式,中斷請(qǐng)求信號(hào)都應(yīng)維持足夠的寬度,即在第一個(gè)中斷響應(yīng)信號(hào)到達(dá)之前,都必須保持高電平。6、 級(jí)聯(lián)工作方式當(dāng)中斷源超過8個(gè)時(shí),就無法用一片8259

21、A來管理,這時(shí)可采用8259A的級(jí)聯(lián)工作方式。指定一片8259A為主控芯片(主片),它的INT輸出端接到CPU的INT輸入端,而其余的8259A芯片均作為從屬芯片(從片),其INT輸出端分別接到主片的不同IR輸入端。由于8259A有8個(gè)IR輸入端,故一個(gè)主片可連接8個(gè)從片,最多允許有64個(gè)IR中斷請(qǐng)求輸入。由一片主片和兩片從片構(gòu)成的級(jí)聯(lián)中斷系統(tǒng)如下圖所示,其中省略了用于產(chǎn)生片選信號(hào)的譯碼器。8259A多片級(jí)聯(lián)方式的硬件連接圖在級(jí)聯(lián)系統(tǒng)中,主片和從片都有獨(dú)立的地址,而且需分別進(jìn)行初始化編程來設(shè)置各自的初始工作方式。若中斷請(qǐng)求來自于從片,該請(qǐng)求將通過從片的INT輸出端傳給主片,一旦該請(qǐng)求被主片響應(yīng)

22、,主片會(huì)通過CAS0 CAS02來通知相應(yīng)的從片,而從片即可把該中斷請(qǐng)求對(duì)應(yīng)的中斷類型碼放到數(shù)據(jù)總線上,使該中斷請(qǐng)求得到CPU的服務(wù)。7、 總線連接方式 8259A數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)總線的連接有緩沖和非緩沖兩種方式。 l 緩沖方式如果8259A通過總線驅(qū)動(dòng)器和系統(tǒng)數(shù)據(jù)總線連接,8259A應(yīng)選擇緩沖方式。當(dāng)設(shè)置為緩沖方式后,/即為輸出引腳。在8259A向CPU傳送中斷類型碼的時(shí)候,/輸出一個(gè)低電平,用此信號(hào)作為總線驅(qū)動(dòng)器的啟動(dòng)信號(hào)。l 非緩沖方式 如果8259A的數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)總線直接相連,那么8259A工作在非緩沖方式。四、 8259A的編程8259A是可編程中斷控制器,在其工作之前,必須采用

23、寫入控制命令的方法來對(duì)其進(jìn)行初始化;在其工作時(shí),還可以采用相同的方式來改變其工作狀態(tài),這就是8259A的編程??刂泼罘譃槌跏蓟钭諭CW和操作命令字OCW。ICW有4個(gè),分別是ICW1ICW4;OCW有3個(gè),分別是OCW1OCW3,它們被寫入8259A后,分別保存在相應(yīng)的寄存器中,例如,ICW1保存在ICW1寄存器中,OCW1保存在OCW1寄存器中。8259A的編程分為初始化編程和操作方式編程。l 初始化編程在8259A工作之前,通過軟件向其寫入初始化命令字ICW1ICW4,設(shè)置其初始工作方式。l 操作方式編程在8259A工作的過程中,通過軟件向其寫入操作命令字OCW1OCW3,改變其工作

24、方式。OCW可在8259A初始化后的任何時(shí)刻寫入。1、 8259A內(nèi)部寄存器的尋址方法8259A有多個(gè)內(nèi)部寄存器,單靠和A0無法滿足寄存器尋址的需要,因此還要在、和數(shù)據(jù)線D3、D4的配合下,才能完成對(duì)多個(gè)內(nèi)部寄存器的訪問。內(nèi)部寄存器的訪問方法如下圖所示:8259A的端口分配及讀/寫操作功能表2、 8259A的初始化順序8259A中的寄存器端口地址有兩個(gè),一個(gè)是奇地址(A0=1),一個(gè)是偶地址(A0=0)。通過上表可以看出,在往8259A寫入控制命令時(shí),若A0=1,則寫入的對(duì)象包括4個(gè)寄存器ICW2、ICW3、ICW4和OCW1,這說明四個(gè)寄存器端口共用同一個(gè)I/O地址,為了區(qū)分寫入的到底是哪個(gè)

25、寄存器,8259A規(guī)定了嚴(yán)格的寫入順序,即按照ICW2ICW3ICW4OCW1的順序?qū)懭?。同樣在初始化時(shí),ICW1ICW4的寫入也必須遵循ICW1ICW2ICW3ICW4這樣的順序。3、 8259A的初始化命令字ICW 通過初始化編程,可將ICW寫入8259A,設(shè)置其初始工作方式。(1) ICW1寫ICW1的條件為:A0=0,D4=1,這時(shí),寫入的數(shù)據(jù)被當(dāng)成是ICW1。寫ICW1意味著對(duì)8259A進(jìn)行初始化,同時(shí)8259A還會(huì)完成以下工作:l 清除ISR和IMR。l 將中斷優(yōu)先級(jí)順序設(shè)為初始狀態(tài):IR0(最高)IR(最低)。l 采用普通屏蔽方式。l 采用非自動(dòng)中斷結(jié)束方式。ICW1的格式如下圖

26、所示:圖 ICW的格式l IC4:指示在初始化時(shí)是否需要寫入命令字ICW4。在80x86 CPU系統(tǒng)中需要定義ICW4,即設(shè)IC41。l SNGL:指示8259A在系統(tǒng)中使用單片還是多片級(jí)聯(lián)。SNGL1為單片,SNGL0為多片級(jí)聯(lián)。l ADI:設(shè)置調(diào)用時(shí)間間隔,在80486 CPU中無效。l LTIM:定義IRi的中斷請(qǐng)求觸發(fā)方式。LTIM1為電平觸發(fā),LTIM0為邊沿觸發(fā)。l D4:ICW1的標(biāo)志位,恒為1。l D5D7:未用,通常設(shè)置為0。(2) ICW2ICW2的寫入條件為:A0=1,它只能在ICW1寫入之后寫入。ICW2用于設(shè)置中斷類型碼,其格式如下圖所示:圖 ICW2的格式IR0IR

27、7各有一個(gè)中斷類型碼,它們是連續(xù)的,例如IR0的中斷類型碼為08H,IR7的中斷類型碼為0FH。中斷類型碼可用8位二進(jìn)制數(shù)來表示,對(duì)于8259A的8個(gè)中斷類型碼而言,它們的高5位都是相同的,不同的是低3位。因此在初始化時(shí)只需設(shè)置ICW2的高5位,低3位可任意。8259A決定響應(yīng)某個(gè)中斷時(shí),它會(huì)將該中斷請(qǐng)求的序號(hào)放入ICW2的低3位,并將該寄存器的內(nèi)容放到數(shù)據(jù)總線供CPU讀取。例如:向ICW2寫入40H時(shí),則IR0IR7對(duì)應(yīng)的中斷類型號(hào)為40H47H。(3) ICW3ICW3的寫入條件為:A0=1,它只能在ICW2寫入之后寫入。ICW3僅在級(jí)聯(lián)方式下才需要寫入,也就是當(dāng)ICW1的SNGl位設(shè)為0

28、時(shí)才需要寫入。主片和從片的ICW3的格式不同,如下圖所示:圖 主片的ICW3格式圖 從片的ICW3格式l S0S7與IR0IR7相對(duì)應(yīng),若主片IRi(i07)引腳上連接從片,則Si1,否則Si0。l ID2ID0是從片標(biāo)識(shí)碼,它必須與本從片所連接之主片IR線的序號(hào)一致。例如,當(dāng)從片的中斷請(qǐng)求信號(hào)線INT與主片的IR2連接時(shí),ID2ID0應(yīng)設(shè)置為010。l D7D3未用,通常設(shè)置為0。在主片響應(yīng)來自從片的中斷請(qǐng)求時(shí),它通過級(jí)聯(lián)信號(hào)線CAS2CAS0送出被響應(yīng)中斷的從片標(biāo)識(shí)碼,各從片用自己的ICW3和CAS2CAS0進(jìn)行比較,二者一致的從片被確定為當(dāng)前中斷源,該從片可以將中斷的中斷類型碼送到數(shù)據(jù)總

29、線供CPU讀取。(4) ICW4ICW4的寫入條件為A0=1,它只能在ICW3寫入之后才能寫入。ICW4用于設(shè)定8259A的工作方式,其格式下圖所示:圖 ICW4的格式l mP:設(shè)置CPU模式。mP1為80x86模式,mP0為8080/8085模式。l AEOI:設(shè)置8259A的中斷結(jié)束方式。AEOI1為自動(dòng)結(jié)束方式,AEOI0為非自動(dòng)結(jié)束方式。l M/:選擇緩沖級(jí)聯(lián)方式下的主片與從片。M/1為主片,M/0為從片。l BUF:設(shè)置緩沖方式。BUF1為緩沖方式,BUF0為非緩沖方式。l SFNM:設(shè)置特殊全嵌套方式。SFNM1為特殊全嵌套方式,SFNM0為普通全嵌套方式l D7D5:未定義,通常

30、設(shè)置為0。需要注意:當(dāng)多片8259A級(jí)聯(lián)時(shí),若在8259A的數(shù)據(jù)線與系統(tǒng)總線之間加入總線驅(qū)動(dòng)器,/則作為總線驅(qū)動(dòng)器的控制信號(hào)使用,此時(shí)D3位BUF應(yīng)設(shè)置為1。主片和從片的區(qū)分不能再依靠/引腳,而是由M/來選擇,當(dāng)M/0時(shí)為從片;當(dāng)M/1時(shí)為主片。如果BUF0,則M/定義無意義。 4、 8259A的操作命令字OCW在8259A工作時(shí),可通過寫入OCW,改變其工作方式。OCW1OCW3的寫入沒有固定順序。(1) OCW1OWC1的寫入條件為:A0=1。通過它可控制哪些中斷請(qǐng)求被屏蔽。其格式下圖所示:圖 OCW1的格式當(dāng)Mi=1時(shí),對(duì)應(yīng)的IRi請(qǐng)求被禁止;當(dāng)Mi=0時(shí),對(duì)應(yīng)的IRi請(qǐng)求被允許。(2)

31、 OCW2OW2的寫入條件為:A0=0。OWC2用于設(shè)置中斷優(yōu)先方式和中斷結(jié)束方式。其格式如下圖所示:圖 OCW2的格式l R:設(shè)置中斷優(yōu)先方式。R1為自動(dòng)循環(huán)優(yōu)先級(jí)方式;R0為固定優(yōu)先級(jí)方式。l D4、D3為OCW2標(biāo)志位,必須都設(shè)為0。l SL:設(shè)置特殊自動(dòng)循環(huán)方式。當(dāng)SL=1時(shí),若EOI=0且R=1,L2L0對(duì)應(yīng)的IRi的優(yōu)先級(jí)被設(shè)為最低;若EOI=1,L2L0對(duì)應(yīng)的ISR位被復(fù)位。SL=0時(shí),L2L0的編碼無效。l L2L0:對(duì)應(yīng)著IR7IR0和IS7 IS0。當(dāng)SL=1時(shí),它有兩個(gè)作用:若EOI=0且R=1,L2L0對(duì)應(yīng)的IRi的優(yōu)先級(jí)被設(shè)為最低;若EOI=1,L2L0對(duì)應(yīng)的ISR位

32、被復(fù)位。l EOI:中斷結(jié)束命令。當(dāng)EOI1時(shí),若SL=1,則使L2L0對(duì)應(yīng)的ISR位復(fù)位,這種結(jié)束中斷的方式稱為特殊中斷結(jié)束方式;若SL=0,則使ISR中置1的優(yōu)先權(quán)最高位復(fù)位,這種結(jié)束中斷的方式稱為普通中斷結(jié)束方式。(3) OCW3OCW3的寫入條件為:A0=0,D4=0,D3=0。其格式如下圖所示:圖 OCW3的格式OCW3有三個(gè)功能:l 設(shè)置中斷屏蔽方式ESMM與SMM組合可用來設(shè)置或取消特殊屏蔽方式。當(dāng)ESMM1,SMM1時(shí),設(shè)置特殊屏蔽;當(dāng)ESMM1,SMM0時(shí),取消特殊屏蔽。l 查詢中斷請(qǐng)求當(dāng)CPU禁止中斷(IF=0)或不希望8259A發(fā)起中斷請(qǐng)求INT時(shí),就可以采用8259A的

33、查詢工作方式來查詢8259A的中斷狀態(tài)。為此,可先寫一個(gè)P=1的OCW3到8259A,然后再從同一I/O地址讀入數(shù)據(jù),就可得到下圖所示的中斷狀態(tài)寄存器的內(nèi)容。I=1表示8259A的IR7IR0有中斷請(qǐng)求產(chǎn)生,其中優(yōu)先級(jí)最高的IRi的序號(hào)由R2R0給出;否則表示無中斷產(chǎn)生。圖 中斷狀態(tài)寄存器l 讀8259A內(nèi)部寄存器先寫一個(gè)RR=1、RIS=0的OCW3到8259A,再從同一個(gè)端口地址讀入數(shù)據(jù),就可讀入IRR的內(nèi)容。先寫一個(gè)RR=1、RIS=1的OCW3到8259A,再從同一個(gè)端口地址讀入數(shù)據(jù),就可讀入ISR的內(nèi)容。例如,設(shè)8259A的兩個(gè)端口地址為20H和21H,OCW3、ISR和IRR共用一

34、個(gè)地址20H。 讀取ISR內(nèi)容的程序段為:MOVAL, 00001011B; 設(shè)置好命令字OCW3,使RR=1、RIS=1OUT20H, AL; 將OCW3寫入8259A的20H端口INAL, 20H; 從同一個(gè)端口讀出ISR內(nèi)容至AL中讀取IRR內(nèi)容的程序段為:MOVAL, 00001010B; 設(shè)置好命令字OCW3,使RR=1、RIS=0OUT20H, AL       ; 將OCW3寫入8259A的20H端口INAL, 20H       ; 從同一個(gè)端口讀出IRR內(nèi)容

35、至AL中讀取中斷狀態(tài)寄存器的程序段為:MOVAL, 00001111B; 設(shè)置好命令字OCW3,使P=1OUT20H, AL; 將OCW3寫入8259A的20H端口INAL, 20H ; 從同一個(gè)端口讀出中斷狀態(tài)寄存器的內(nèi)容至AL中5、 8259A的初始化編程 8259A的初始化編程需要寫入初始化命令字ICW1ICW4,對(duì)它的各種工作方式進(jìn)行設(shè)置。但由于ICW1ICW4使用兩個(gè)端口地址,即ICW1用A00的端口,ICW2ICW4使用A01的端口,因此初始化程序應(yīng)嚴(yán)格按照系統(tǒng)規(guī)定的順序?qū)懭耄聪葘懭隝CW1,接著寫ICW2, ICW3, ICW4。8259A的初始化流程如下圖所示。需注意的是,如

36、果多個(gè)8259A級(jí)聯(lián)在一起工作,主片和從片應(yīng)分別進(jìn)行初始化。操作命令字OCW1OCW3的寫入比較靈活,沒有固定的順序,可以在主程序中寫入,也可以在中斷服務(wù)子程序中寫入;可以在初始化時(shí)寫入,也可以在工作以后寫入,視需要而定。下面通過例子來說明如何編寫8259A的初始化程序。 圖 ICW的寫入順順序【例】某微機(jī)系統(tǒng)使用主、從兩片8259A管理中斷,從片中斷請(qǐng)求INT與主片的IR2連接。設(shè)主片工作于特殊完全嵌套、非緩沖和非自動(dòng)結(jié)束方式,中斷類型號(hào)為40H47H,端口地址為20H和21H。從片工作于完全嵌套、非緩沖和非自動(dòng)結(jié)束方式,中斷類型號(hào)為70H77H,端口地址為80H和81H。試編寫主片和從片的

37、初始化程序。根據(jù)題意,設(shè)置ICW1, ICW2, ICW3和ICW4的格式,按上圖的順序?qū)懭?。編寫初始化程序如下:主?259A的初始化程序如下:MOVAL, 00010001B; ICW1:級(jí)聯(lián), 邊沿觸發(fā), 需要寫ICW4OUT20H, AL; 寫ICW1MOVAL, 01000000B; ICW2:中斷類型號(hào)40HOUT21H, AL; 寫ICW2MOVAL, 00000100B; ICW3:主片的IR2引腳接從片OUT21H, AL; 寫ICW3MOVAL, 00010001B; ICW4:特殊完全嵌套、非緩沖、自動(dòng)結(jié)束OUT21H, AL; 寫ICW4從片8259A初始化程序如下:M

38、OVAL, 00010001B; ICW1:級(jí)聯(lián), 邊沿觸發(fā), 需要寫ICW4OUT80H, AL ; 寫ICW1MOVAL, 01110000B; ICW2:中斷類型號(hào)70HOUT81H, AL ; 寫ICW2MOVAL, 00000010B ; ICW3:接主片的IR2引腳OUT81H, AL ; 寫ICW3MOVAL, 00000001B ; ICW4:完全嵌套、非緩沖、非自動(dòng)結(jié)束OUT81H, AL ; 寫ICW46、 中斷程序的設(shè)計(jì)中斷程序的設(shè)計(jì)包括主程序和中斷服務(wù)程序兩部分。l 主程序的設(shè)計(jì)主要包含以下步驟:(1) 關(guān)中斷在主程序?qū)χ袛噙M(jìn)行相關(guān)設(shè)置之前,應(yīng)關(guān)閉CPU的中斷標(biāo)志位,防止CPU在該過程中響應(yīng)中斷。(2) 保存原中斷向量在把自己的中斷服務(wù)程序入口地址(中斷向量)設(shè)置到中斷向量表之前,應(yīng)先保存該地址中原來的內(nèi)容(原中斷向量)。通過INT 21H的35H號(hào)功能調(diào)用可取出原中斷向量,取出的中斷向量放在ES:BX中,其中ES包含的是入口地址中的段地址,BX包含的是入口地址中的偏移地址。取出的中斷向量可保存在用戶程序的數(shù)據(jù)段或附加段中,以便主程序退出前能恢復(fù)原中斷向量。(3) 設(shè)置自己的中斷向量將自己編寫的中斷服務(wù)程序的入口地址存入中斷向量表的相應(yīng)表項(xiàng)中。這可以通過INT 21H的25H號(hào)功能調(diào)用完成。在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論