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

下載本文檔

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

文檔簡介

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

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

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

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

5、259A進入中斷管理狀態(tài)。l 中斷請求寄存器(interrupt request register,IRR)IRR是一個8位(D0D7)寄存器,它接受并鎖存來自IR0IR7的中斷請求信號,也就是說它記錄著當前的中斷請求。D0D7與中斷請求信號IR0IR7對應,當IRi(i07)上出現中斷請求信號時,對應的Di置1。因為同一時刻可能有多個中斷請求到達,因此IRR可能有多個位置1。第一個中斷響應信號到達后(CPU在對8259A的中斷請求INT進行響應時,會連續(xù)返回兩個中斷響應信號,產生兩個中斷響應總線周期),如果8259A決定使IRi得到響應,則會將對應的Di清除。第一個中斷響應脈沖到達后,IRR

6、鎖存功能失效,不接受IR0IR7上的中斷請求信號;直到第二個中斷響應脈沖結束后,IRR鎖存功能才得以恢復。l 中斷服務寄存器(interrupt service register,ISR)ISR是一個8位(IS0IS7)寄存器,用于記錄CPU當前正在服務的中斷。IS0IS7與中斷請求信號IR0IR7對應。第一個中斷響應脈沖達到后,如果8259A決定使IRi得到響應,則會將對應的ISi(i07)置1,表示IRi正在被服務。ISi的復位則由8259A中斷結束方式決定。若8259A被設置為自動結束方式,ISi會在第二個中斷響應脈沖的后沿被自動復位為0;若8259A被設置為非自動結束方式,則Di應由其

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

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

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

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

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

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

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

14、CPU發(fā)出INT信號),而不允許“同級”或“低級”的中斷請求進入。l 特殊全嵌套方式特殊全嵌套方式是8259A在多片級聯方式下使用的一種嵌套方式。其特點是:在CPU進行中斷服務時,8259A除了允許更高優(yōu)先級的中斷請求進入外,還允許同級中斷請求進入,從而實現了對同級中斷請求的特殊嵌套。在級聯方式下,主片通常設置為特殊全嵌套方式,從片設置為普通全嵌套方式。這樣設置的好處在于:當從片的某個中斷請求得到響應并進入中斷服務期間后,來自該從片的“更高級”的中斷請求仍能被主片響應。這是因為從片的所有中斷請求都是通過同一個IRi引入主片,對于主片來說,來自從片的所有中斷請求都屬于同級,而特殊全嵌套方式允許同

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

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

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

18、方式,則中斷服務程序在結束之前應向8259A寫入一個包含了普通EOI命令的操作命令字OCW2,該命令不指定需復位的ISR位。收到該命令后,8259A會清除ISR中已置1的優(yōu)先級最高的那一位。在普通全嵌套方式下,因為CPU正在服務的中斷只會被優(yōu)先級更高的中斷請求打斷,因此當前結束的中斷必定是所有正在服務的中斷中優(yōu)先級最高的,它對應著ISR中已置1的優(yōu)先級最高的那一位,因此普通結束方式適用于普通全嵌套方式下的中斷結束。l 特殊結束方式 特殊結束方式要求中斷服務程序在結束之前向8259A寫入一個包含了特殊EOI命令的操作命令字OCW2,該命令要指定需復位的ISR位。由于在特殊EOI命令中明確指出了復

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

37、初始化程序。根據題意,設置ICW1, ICW2, ICW3和ICW4的格式,按上圖的順序寫入。編寫初始化程序如下:主片8259A的初始化程序如下:MOVAL, 00010001B; ICW1:級聯, 邊沿觸發(fā), 需要寫ICW4OUT20H, AL; 寫ICW1MOVAL, 01000000B; ICW2:中斷類型號40HOUT21H, AL; 寫ICW2MOVAL, 00000100B; ICW3:主片的IR2引腳接從片OUT21H, AL; 寫ICW3MOVAL, 00010001B; ICW4:特殊完全嵌套、非緩沖、自動結束OUT21H, AL; 寫ICW4從片8259A初始化程序如下:M

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

溫馨提示

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

評論

0/150

提交評論