第9章 中斷控制接口8259A_第1頁(yè)
第9章 中斷控制接口8259A_第2頁(yè)
第9章 中斷控制接口8259A_第3頁(yè)
第9章 中斷控制接口8259A_第4頁(yè)
第9章 中斷控制接口8259A_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

9.1中斷控制接口8259A教學(xué)重點(diǎn)

8088CPU的中斷系統(tǒng)(復(fù)習(xí)P99)8259A的中斷工作過(guò)程和工作方式8259A的初始化復(fù)習(xí):

中斷操作P99斷點(diǎn)主程序中斷服務(wù)程序中斷請(qǐng)求對(duì)外設(shè)進(jìn)行處理繼續(xù)執(zhí)行返回?cái)帱c(diǎn)CPU在執(zhí)行程序中,被內(nèi)部或外部的事件所打斷,轉(zhuǎn)去執(zhí)行一段預(yù)先安排好的中斷服務(wù)程序;服務(wù)結(jié)束后,又返回原來(lái)的斷點(diǎn),繼續(xù)執(zhí)行原來(lái)的程序流程中斷傳送流程返回8088中斷系統(tǒng)8088的中斷系統(tǒng)采用向量中斷機(jī)制能夠處理256個(gè)中斷用中斷向量號(hào)0~255區(qū)別可屏蔽中斷還需要借助專用中斷控制器Intel8259A實(shí)現(xiàn)優(yōu)先權(quán)管理1、8088的中斷類型(P100)非屏蔽中斷源中斷邏輯INTO指令單步中斷除法錯(cuò)誤INTN指令CPUINTRNMI可屏蔽中斷源8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7外設(shè)中斷源

INTA(1)

內(nèi)部中斷內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷利用內(nèi)部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時(shí)異常情況的有效途徑例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用(INT21)(2)

外部中斷外部中斷是由于8088外部提出中斷請(qǐng)求引起的程序中斷利用外部中斷,微機(jī)系統(tǒng)可以實(shí)時(shí)響應(yīng)外部設(shè)備的數(shù)據(jù)傳送請(qǐng)求,能夠及時(shí)處理外部意外或緊急事件外部中斷的原因是處理器外部隨機(jī)產(chǎn)生的,所以是真正的中斷(Interrupt)內(nèi)部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱為異常(Exception)

非屏蔽中斷通過(guò)非屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷請(qǐng)求,微處理器無(wú)法禁止,將在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),這個(gè)中斷被稱為非屏蔽中斷8088的非屏蔽中斷的向量號(hào)為2,非屏蔽中斷請(qǐng)求信號(hào)為NMI非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如:電源掉電前的數(shù)據(jù)保護(hù)可屏蔽中斷外部通過(guò)可屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),同時(shí)輸出可屏蔽中斷響應(yīng)信號(hào),這個(gè)中斷就是可屏蔽中斷8088的可屏蔽中斷請(qǐng)求和響應(yīng)信號(hào)分別是INTR和INTA*;由IF標(biāo)志控制可屏蔽中斷是否允許響應(yīng);向量號(hào)來(lái)自外部中斷控制器8088通常需要配合中斷控制器8259A共同處理可屏蔽中斷可屏蔽中斷主要用于主機(jī)與外設(shè)交換數(shù)據(jù)中斷標(biāo)志IF的狀態(tài)IF=0:可屏蔽中斷不會(huì)被響應(yīng)關(guān)中斷、禁止中斷、中斷屏蔽系統(tǒng)復(fù)位,使IF=0任何一個(gè)中斷被響應(yīng),使IF=0執(zhí)行指令CLI,使IF=0IF=1:可屏蔽中斷會(huì)被響應(yīng)開(kāi)中斷、允許中斷、中斷開(kāi)放執(zhí)行指令STI,使IF=1執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)明確IF標(biāo)志的狀態(tài)是關(guān)鍵2、中斷向量表中斷向量:中斷服務(wù)程序的入口地址(首地址)邏輯地址含有段地址CS和偏移地址IP(32位)每個(gè)中斷向量的低字是偏移地址、高字是段地址,需占用4個(gè)字節(jié)8088微處理器從物理地址000H開(kāi)始,依次安排各個(gè)中斷向量,向量號(hào)也從0開(kāi)始256個(gè)中斷占用1KB區(qū)域,就形成中斷向量表向量號(hào)為N的中斷向量的物理地址=N×4圖2-16中斷向量表(2)中斷向量和中斷向量表(斷點(diǎn))中斷的響應(yīng)過(guò)程

當(dāng)CPU在INTR引腳上接收到一個(gè)高電平的中斷請(qǐng)求信號(hào),并且當(dāng)前的中斷允許標(biāo)志為1時(shí),CPU就會(huì)在當(dāng)前指令執(zhí)行完以后,開(kāi)始響應(yīng)外部的中斷請(qǐng)求。具體地說(shuō),就是CPU往INTA引腳上發(fā)兩個(gè)負(fù)脈沖,外設(shè)接到第2個(gè)負(fù)脈沖以后,立即往數(shù)據(jù)線上給CPU送來(lái)中斷類型碼。CPU依次作下面幾件事:

(1)從數(shù)據(jù)總線上讀取中斷類型碼,將其存入內(nèi)部暫存器。

(2)將標(biāo)志寄存器的值推入堆棧。

(3)把標(biāo)志寄存器的中斷允許標(biāo)志IF和單步標(biāo)志TF清零。將IF清零是為了能夠在中斷響應(yīng)過(guò)程中暫時(shí)屏蔽外部其他中斷,以免還沒(méi)有完成對(duì)當(dāng)前中斷的響應(yīng)過(guò)程而又被另一個(gè)中斷請(qǐng)求所打斷,清除TF是為了避免CPU以單步方式執(zhí)行中斷處理子程序。

(4)將斷點(diǎn)保護(hù)到堆棧中。斷點(diǎn):是指響應(yīng)中斷時(shí),主程序中當(dāng)前指令下面的一條指令的地址,即代碼段寄存器CS的值和指令指針I(yè)P的值。只有保護(hù)了斷點(diǎn),才能在中斷處理子程序執(zhí)行完以后,正確返回到原程序繼續(xù)執(zhí)行。

(5)根據(jù)中斷類型碼,到中斷向量表中找到中斷向量,再根據(jù)中斷向量轉(zhuǎn)入相應(yīng)的中斷處理子程序。例如:中斷類型碼為0BH,則此中斷對(duì)應(yīng)的中斷向量的首字節(jié)在0BH×4=2CH處,于是CPU在0段的002CH,002DH,002EH,002FH這4個(gè)字節(jié)中取得中斷向量,并將前兩個(gè)字節(jié)中的內(nèi)容裝入IP,將后兩個(gè)字節(jié)中的內(nèi)容裝入CS。這樣,CPU要執(zhí)行的下一條指令就是中斷處理子程序的第一條指令,也就是說(shuō),CPU轉(zhuǎn)入了對(duì)中斷處理子程序的執(zhí)行。4、中斷處理子程序的結(jié)構(gòu)模式(1)中斷處理子程序的開(kāi)始必須通過(guò)一系列推入堆棧指令來(lái)進(jìn)一步保護(hù)中斷時(shí)的現(xiàn)場(chǎng),即保護(hù)CPU各寄存器的值(2)設(shè)置中斷允許標(biāo)志IF來(lái)開(kāi)放中斷,以允許級(jí)別較高的中斷請(qǐng)求進(jìn)入。(STI)(3)中斷處理的具體內(nèi)容(4)中斷處理子程序的尾部則是一系列彈出堆棧指令,使得各寄存器恢復(fù)進(jìn)入中斷處理時(shí)的值。(恢復(fù)現(xiàn)場(chǎng))(5)最后是中斷返回指令I(lǐng)RET,中斷返回指令的執(zhí)行會(huì)使堆棧中保存的斷點(diǎn)值和標(biāo)志值分別裝入IP,CS和標(biāo)志寄存器。中斷處理子程序在位置上也必須是固定裝配的,而不是浮動(dòng)的。裝配的起始地址由中斷向量表給出。9.1中斷控制器8259AIntel8259A是可編程中斷控制器IC可用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中斷8259A的基本功能一片8259A可以管理8級(jí)中斷,可擴(kuò)展至64級(jí)每一級(jí)中斷都可單獨(dú)被屏蔽或允許在中斷響應(yīng)周期,可提供相應(yīng)的中斷向量號(hào)8259A設(shè)計(jì)有多種工作方式,可通過(guò)編程選擇一、

8259A的內(nèi)部結(jié)構(gòu)和引腳D7~D0INTAINT中斷請(qǐng)求寄存器中斷屏蔽寄存器數(shù)據(jù)總線緩沖器IR0IR7讀/寫控制邏輯級(jí)聯(lián)緩沖器比較器RDWRA0CSCAS0CSA1CAS2SP/EN優(yōu)先權(quán)判別電路中斷服務(wù)寄存器控制邏輯1、讀寫控制邏輯

該部件接收來(lái)自CPU的讀寫命令,完成規(guī)定的操作。操作過(guò)程由、A0、、等輸入信號(hào)共同控制。在CPU寫8259A時(shí),把寫入數(shù)據(jù)送至相應(yīng)的寄存器中。在CPU讀8259A時(shí),相應(yīng)寄存器的內(nèi)容輸出到數(shù)據(jù)總線上2.中斷控制寄存器中斷請(qǐng)求寄存器IRR保存8條外界中斷請(qǐng)求信號(hào)IR0~I(xiàn)R7的請(qǐng)求狀態(tài)Di位為1表示IRi引腳有中斷請(qǐng)求;為0表示無(wú)請(qǐng)求中斷服務(wù)寄存器ISR保存正在被8259A服務(wù)著的中斷狀態(tài)Di位為1表示IRi中斷正在服務(wù)中;為0表示沒(méi)有被服務(wù)中斷屏蔽寄存器IMR保存對(duì)中斷請(qǐng)求信號(hào)IR的屏蔽狀態(tài)Di位為1表示IRi中斷被屏蔽(禁止);為0表示允許

3、優(yōu)先權(quán)電路

優(yōu)先權(quán)電路(PriorityPR)負(fù)責(zé)檢查中斷源的中斷請(qǐng)求的優(yōu)先級(jí),并與“正在服務(wù)中的中斷”進(jìn)行比較,確定是否將這個(gè)中斷請(qǐng)求送給處理器。假定中斷源的中斷比正在服務(wù)中的中斷具有更高的優(yōu)先權(quán),則PR就使INT線變?yōu)楦唠娖?,送給CPU,為它提出申請(qǐng),并在中斷響應(yīng)時(shí)將它記入ISR的對(duì)應(yīng)位中。如果中斷源的中斷優(yōu)先級(jí)等于或低于正在服務(wù)中的中斷優(yōu)先級(jí),則PR不為其提出申請(qǐng)。

4、控制邏輯

控制邏輯按初始化設(shè)置的工作方式控制8259A的全部工作。該電路可根據(jù)IRR的內(nèi)容和PR判斷結(jié)果向CPU發(fā)中斷請(qǐng)求信號(hào)INT,并接受CPU發(fā)回的中斷響應(yīng)信號(hào),使8259A進(jìn)入中斷服務(wù)狀態(tài)

8259A引腳信號(hào)一、與CPU的接口信號(hào)主要包括D0~D7,三態(tài),8位雙向數(shù)據(jù)線,CPU與8259A之間利用這個(gè)數(shù)據(jù)總線傳送數(shù)據(jù)及命令,寫信號(hào)

,讀信號(hào)

A0,地址選擇信號(hào),用來(lái)對(duì)8259A內(nèi)部的2個(gè)端口地址進(jìn)行選擇

8259A引腳信號(hào),片選輸入信號(hào),低電平有效

INT,由82C59A向CPU輸出的中斷請(qǐng)求信號(hào)

,輸入信號(hào),接收CPU送來(lái)的中斷響應(yīng)信號(hào)A0RD*WR*CS*功能0100110000101010×110×××1寫入ICW1、OCW2和OCW3寫入ICW2~I(xiàn)CW4和OCW1讀出IRR、ISR和查詢字讀出IMR數(shù)據(jù)總線高阻狀態(tài)數(shù)據(jù)總線高阻狀態(tài)6.中斷級(jí)聯(lián)一個(gè)系統(tǒng)中,8259A可以級(jí)聯(lián),有一個(gè)主8259A,若干個(gè)(最多8個(gè))從8259A級(jí)聯(lián)時(shí),主8259A的三條級(jí)連線CAS0~CAS2作為輸出線,連至每個(gè)從8259A的CAS0~CAS2每個(gè)從8259A的中斷請(qǐng)求信號(hào)INT,連至主8259A的一個(gè)中斷請(qǐng)求輸入端IR主8259A的INT線連至CPU的中斷請(qǐng)求輸入端SP*/EN*在非緩沖方式下,規(guī)定該8259A是主片(SP*=1)還是從片(SP*=0)8259A引腳信號(hào)

/

從片編程緩沖器使能信號(hào)。該信號(hào)有兩種功能:當(dāng)8259A工作在緩沖方式時(shí),該引腳為輸出,作數(shù)據(jù)總線緩沖器的使能信號(hào)(EN*),即用它來(lái)控制數(shù)據(jù)收發(fā)器的工作當(dāng)8259A工作在非緩沖方式時(shí),該引腳為輸入,用來(lái)指明該8259A是主片(/=1時(shí))還是從片(/=0時(shí))

8259中斷工作方式

以8259A單片使用為例,說(shuō)明可屏蔽中斷處理的過(guò)程當(dāng)一條或多條中斷請(qǐng)求線IR0~I(xiàn)R7變高時(shí),設(shè)置相應(yīng)的中斷請(qǐng)求寄存器IRR位PR對(duì)中斷優(yōu)先權(quán)和中斷屏蔽寄存器的狀態(tài)進(jìn)行判斷之后,如果某中斷優(yōu)先權(quán)最高且為允許中斷狀態(tài),就向CPU發(fā)高電平中斷申請(qǐng)信號(hào)INT,請(qǐng)求中斷服務(wù)如果CPU中斷允許標(biāo)志IF=1,則CPU響應(yīng)中斷,給8259A送出中斷響應(yīng)信號(hào)

中斷處理過(guò)程4.8259A接到來(lái)自CPU的第一個(gè)信號(hào)時(shí),當(dāng)前中斷服務(wù)寄存器(ISR)中相應(yīng)位置位,并把IRR中相應(yīng)位復(fù)位。同時(shí),82C59A準(zhǔn)備向數(shù)據(jù)總線發(fā)送中斷類型碼5.在8259A接收到第二個(gè)后,發(fā)送中斷類型碼,如果是在自動(dòng)結(jié)束中斷方式下,在這個(gè)負(fù)脈沖結(jié)束時(shí)復(fù)位ISR的相應(yīng)位。在非自動(dòng)中斷結(jié)束方式下,ISR相應(yīng)位要由中斷服務(wù)程序結(jié)束時(shí)發(fā)出的EOI命令來(lái)復(fù)位

二、8259A的中斷過(guò)程P233CAS0~CAS2D0~D7SP/ENIR0~I(xiàn)R7CPU響應(yīng)周期8259A工作波形INT第一個(gè)周期T1T2T3T4ALECLK

第二個(gè)周期T1T2T3T4第一個(gè)前保持為高電平

INTALOCK動(dòng)畫(huà)三、

8259A的工作方式P228普通全嵌套方式特殊全嵌套方式自動(dòng)循環(huán)方式特殊循環(huán)方式優(yōu)先權(quán)固定方式優(yōu)先權(quán)循環(huán)方式設(shè)置優(yōu)先權(quán)方式普通中斷結(jié)束方式特殊中斷結(jié)束方式自動(dòng)中斷結(jié)束方式非自動(dòng)中斷結(jié)束方式結(jié)束中斷處理方式屏蔽中斷源方式普通屏蔽方式特殊屏蔽方式中斷觸發(fā)方式邊沿觸發(fā)方式電平觸發(fā)方式數(shù)據(jù)線連接方式緩沖方式非緩沖方式完全嵌套方式

特殊全嵌套方式

優(yōu)先級(jí)自動(dòng)循環(huán)方式

優(yōu)先級(jí)特殊循環(huán)方式

1.設(shè)置優(yōu)先權(quán)方式1)完全嵌套方式

全嵌套方式是8259A被初始化后自動(dòng)進(jìn)入的基本工作方式,在這種方式下,由各個(gè)IRi端引入的中斷請(qǐng)求具有固定的中斷級(jí)別。IR0具有最高優(yōu)先級(jí),IR7具有最低優(yōu)先級(jí),其他級(jí)順序類推。采用完全嵌套方式時(shí),ISR寄存器中某位置“1”,表示CPU當(dāng)前正在處理這一級(jí)中斷請(qǐng)求,8259A將允許比它級(jí)別高的中斷請(qǐng)求進(jìn)入,打斷當(dāng)前的中斷服務(wù)程序而被優(yōu)先處理,但禁止與它同級(jí)或比它級(jí)別低的其他中斷請(qǐng)求進(jìn)入。采用這種完全嵌套方式,中斷嵌套的深度取決于整個(gè)中斷系統(tǒng)所具有的中斷級(jí)數(shù),在一個(gè)具有8級(jí)中斷的系統(tǒng)中,最大的中斷嵌套深度為8。1)完全嵌套方式在中斷嵌套過(guò)程中,中斷服務(wù)寄存器ISR的內(nèi)容將不斷變化,最后有可能使(ISR)=FFH,表示當(dāng)前有8級(jí)中斷請(qǐng)求正在被服務(wù),首先結(jié)束的應(yīng)是最高級(jí)的中斷,待CPU由高級(jí)到低級(jí)將全部中斷處理結(jié)束返回到主程序時(shí),ISR寄存器將重新復(fù)位為全“0”。2)特殊全嵌套方式基本與全嵌套方式相同,唯一的區(qū)別是,在處理中斷時(shí),如果有同級(jí)中斷產(chǎn)生,也會(huì)被系統(tǒng)相應(yīng)。特殊全嵌套方式一般用于8259A級(jí)連系統(tǒng)中的主片的中斷優(yōu)先級(jí)。3)優(yōu)先級(jí)自動(dòng)循環(huán)方式該方式一般用于系統(tǒng)中多個(gè)中斷源優(yōu)先級(jí)相等的場(chǎng)合。該方式下,優(yōu)先級(jí)隊(duì)列是變化的,一個(gè)設(shè)備進(jìn)入中斷后,其優(yōu)先級(jí)變成最低。一開(kāi)始時(shí),IR0的優(yōu)先級(jí)最高,IR7優(yōu)先級(jí)最低。如果系統(tǒng)進(jìn)入IRX的中斷服務(wù),則此后IRX+1的優(yōu)先級(jí)為最高,IRX為最低。4)優(yōu)先級(jí)特殊循環(huán)方式基本與優(yōu)先級(jí)自動(dòng)循環(huán)方式相似,唯一的不同是:一開(kāi)始的最低優(yōu)先級(jí)是由編程決定的。具體做法見(jiàn)OCW2的設(shè)置2.結(jié)束中斷處理方式什么是8259A的中斷結(jié)束?8259A利用中斷服務(wù)寄存器ISR判斷:某位為1,表示正在進(jìn)行中斷服務(wù);該位為0,就是該中斷結(jié)束服務(wù)。這里說(shuō)明如何使ISR某位為0,不反映CPU的工作狀態(tài)。1)自動(dòng)中斷結(jié)束方式

在中斷服務(wù)程序中,中斷返回之前,不需要發(fā)出中斷結(jié)束命令就會(huì)自動(dòng)清除該中斷源所對(duì)應(yīng)的ISR位,實(shí)際上,在CPU發(fā)出第2個(gè)信號(hào)時(shí),8259A即自動(dòng)清除ISR中的對(duì)應(yīng)位。該方式主要是怕沒(méi)有經(jīng)驗(yàn)的程序員忘記在中斷服務(wù)程序中給出中斷結(jié)束命令。設(shè)置方法見(jiàn)ICW4的設(shè)置2.結(jié)束中斷的處理方式2)普通的中斷結(jié)束方式

用于全嵌套方式下,當(dāng)CPU向8259發(fā)中斷結(jié)束命令時(shí),8259自動(dòng)把ISR中最高非零位位復(fù)位,即表明結(jié)束了當(dāng)前最高優(yōu)先級(jí)中斷。3)特殊的中斷結(jié)束方式用于非全嵌套方式,如果無(wú)法確定當(dāng)前正在處理的是哪一級(jí)中斷,則使用該方式。使用該中斷結(jié)束方式時(shí),CPU通過(guò)8259的OCW2來(lái)得知當(dāng)前正在處理的是那個(gè)中斷,并使該中斷對(duì)應(yīng)的ISR位復(fù)位。1)普通屏蔽方式

利用操作命令字OCWl,使屏蔽寄存器IMR中的一位或數(shù)位置1來(lái)屏蔽一個(gè)或數(shù)個(gè)中斷源的中斷請(qǐng)求。若要開(kāi)放某一個(gè)中斷源的中斷請(qǐng)求,則將IMR中相應(yīng)的位清0。這種屏蔽方式可在兩種情況下使用。其一是當(dāng)CPU在執(zhí)行主程序時(shí),要求禁止響應(yīng)某級(jí)或某幾級(jí)中斷時(shí),可在主程序中將IMR寄存器的相應(yīng)位置“1”;其二是CPU在處理某級(jí)中斷過(guò)程中,要求禁止級(jí)別比它高的某一級(jí)或某幾級(jí)中斷時(shí),可在中斷服務(wù)程序中將IMR寄存器的相應(yīng)位置“1”。3.屏蔽中斷源方式2)特殊屏蔽方式

在某些場(chǎng)合,執(zhí)行某一個(gè)中斷服務(wù)程序時(shí),要求允許另一個(gè)優(yōu)先級(jí)比它低或高的中斷請(qǐng)求被響應(yīng),此時(shí)可采用特殊屏蔽方式。它可通過(guò)OCW3來(lái)設(shè)定。具體的做法是:在執(zhí)行某級(jí)中斷服務(wù)程序時(shí),將屏蔽寄存器中本級(jí)中斷的對(duì)應(yīng)位置“1”,首先屏蔽掉本級(jí)中斷,同時(shí)將當(dāng)前中斷服務(wù)寄存器的對(duì)應(yīng)位置“0”。(原因:當(dāng)前中斷服務(wù)寄存器的高優(yōu)先級(jí)中斷位會(huì)阻止系統(tǒng)響應(yīng)低級(jí)中斷),則任意中斷都可打斷該中斷程序。

特殊屏蔽方式當(dāng)相應(yīng)一個(gè)高優(yōu)先級(jí)中斷時(shí)就像是沒(méi)有發(fā)生中斷一樣,因?yàn)榈蛢?yōu)先級(jí)中斷也可以打斷該中斷。4.中斷觸發(fā)方式邊沿觸發(fā)方式8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào)電平觸發(fā)方式中斷請(qǐng)求端出現(xiàn)的高電平是有效的中斷請(qǐng)求信號(hào)5.數(shù)據(jù)線連接方式緩沖方式8259A的數(shù)據(jù)線需加緩沖器予以驅(qū)動(dòng)8259A把SP*/EN*引腳作為輸出端,輸出允許信號(hào),用以鎖存或開(kāi)啟緩沖器非緩沖方式SP*/EN*引腳為輸入端若8259A級(jí)連,由其確定是主片或從片CAS0IR0CAS1IR1CAS2IR2

IR3INTAIR4IR5INTIR6IR7SP/EN

CAS0INTA

CAS1

CAS2INT

IR0

IR1SP/ENIR7CAS0IR0CAS1IR1CAS2IR2

IR3INTAIR4IR5INTIR6IR7SP/ENINTAINTR+5V8259級(jí)聯(lián)工作示意圖返回8259A芯片的級(jí)聯(lián)使用8259A級(jí)聯(lián)使用時(shí),主8259A上沒(méi)有連接從8259A的IRi端,可直接與中斷源相連。在8259A級(jí)聯(lián)系統(tǒng)中,某一片從8259A的IRi端接收到一個(gè)或多個(gè)中斷請(qǐng)求信號(hào)時(shí),經(jīng)過(guò)判優(yōu)可確定當(dāng)前的最高級(jí)中斷得到響應(yīng),并通過(guò)INT向主8259A發(fā)出請(qǐng)求;經(jīng)主8259A再次判優(yōu)確認(rèn)是當(dāng)前最高級(jí)中斷時(shí),向CPU發(fā)出中斷請(qǐng)求信號(hào)INT,以后的過(guò)程與單級(jí)使用時(shí)類似。對(duì)CPU來(lái)說(shuō),8259A的單級(jí)使用和級(jí)聯(lián)使用區(qū)別不大。8259A芯片的級(jí)聯(lián)使用第1個(gè)INTA有效時(shí),主8259A將級(jí)聯(lián)地址從CAS2~CAS03端輸出給所有的從8259A芯片,到第2個(gè)INTA有效時(shí),與主8259A發(fā)出的級(jí)聯(lián)地址相符的從8259A將向CPU送出當(dāng)前的中斷類型碼n,以后的操作過(guò)程與單級(jí)使用時(shí)相同。當(dāng)從8259A引入的中斷處理過(guò)程結(jié)束時(shí),CPU應(yīng)能送出兩個(gè)EOI結(jié)束命令,一個(gè)送給主8259A,用來(lái)將主8259A中的ISR寄存器的相應(yīng)位清“0”;另一個(gè)送給從8259A,用來(lái)將從8259A中的ISR寄存器相應(yīng)位清“0”,才標(biāo)志一次中斷處理過(guò)程的結(jié)束。8259級(jí)聯(lián)工作示意圖返回8259工作示意圖返回命令字和初始化編程

8259A是根據(jù)收到CPU的命令字進(jìn)行工作的。CPU的命令字分兩類:一類是初始化命令,稱為初始化命令字(InitializationCommandWord,ICW),初始化命令字往往是在系統(tǒng)啟動(dòng)時(shí),由初始化程序設(shè)置的。初始化命令字一旦設(shè)定,一般在系統(tǒng)工作過(guò)程中就不再改變。另一類是操作命令,稱為操作命令字(OperationCommandWord,OCW)。在初始化后,CPU用這些控制字來(lái)控制8259A執(zhí)行不同的操作,如中斷屏蔽、中斷結(jié)束、優(yōu)先權(quán)循環(huán)和中斷狀態(tài)的讀出和查詢等1.初始化命令字ICW初始化命令字ICW最多有4個(gè)8259A在開(kāi)始工作前必須寫入必須按照ICW1~I(xiàn)CW4順序?qū)懭隝CW1和ICW2是必須送的ICW3和ICW4由工作方式?jīng)Q定流程D7D6D5D4D3D2D1D0

⒈芯片控制初始化命令字(ICW1)

ICW1應(yīng)寫入偶地址端口,即A0=0,

ICW1舉例例某8086微機(jī)系統(tǒng)中,使用單片8259A,中斷請(qǐng)求信號(hào)為上升沿觸發(fā),需要設(shè)置ICW4,端口地址為20H和22H,則其初始化命令字ICW1應(yīng)為:00010011=13H,設(shè)置ICW1的指令為:

MOVAL,13HOUT20H,AL設(shè)置中斷類型碼高5位的初始化命令字(ICW2)

8259A在第2個(gè)中斷響應(yīng)總線周期向CPU提供的8位中斷類型碼,實(shí)際上是由兩部分構(gòu)成,其中,高5位T7~T3是由用戶通過(guò)編程確定的,這就是初始化命令字ICW2,類型碼的低3位,由8259A內(nèi)部電路自動(dòng)產(chǎn)生,分別對(duì)應(yīng)于8個(gè)中斷源的中斷請(qǐng)求信號(hào)IR0~I(xiàn)R7的編號(hào),即IR0為

000,IR1為

001,……,IR7為

111

設(shè)置中斷類型碼高5位的初始化命令字(ICW2)

ICW2應(yīng)寫入奇地址端口,即Al=1,格式如圖所示

標(biāo)識(shí)主片/從片初始化命令字(ICW3)

只有當(dāng)系統(tǒng)中有多片8259A級(jí)聯(lián)時(shí)才需要設(shè)置ICW3,單片8259A時(shí)不用設(shè)置,寫入奇地址單元。當(dāng)多片8259A級(jí)聯(lián)時(shí),ICW3用來(lái)指出主片上連接從片以及從片連接到主片的情況,所以,ICW3有主從兩種格式。

注意:當(dāng)級(jí)連時(shí)主8259的CAS0-2線作輸出,從8259的CAS0-2作輸入線。其內(nèi)部傳送的數(shù)據(jù)即為從片上ICW3的低3位

標(biāo)識(shí)主片/從片初始化命令字(ICW3)初始化命令字(ICW3)方式控制初始化命令字(ICW4)當(dāng)ICW1中的D0=1時(shí),初始化8259A時(shí)需要寫入ICW4。ICW4寫入奇地址端口.16位(8086\8088)系統(tǒng)必須設(shè)置ICW4.其格式如圖所示

方式控制初始化命令字(ICW4)二、82C59A初始化編程邏輯

8259A進(jìn)入正常工作之前,系統(tǒng)必須對(duì)每個(gè)8259A進(jìn)行初始化設(shè)置

初始化是通過(guò)編程將初始化命令字按順序?qū)懭?2C59A的端口實(shí)現(xiàn)的,82C59A的初始化流程如圖所示

8259A芯片的初始化

流程P237寫ICW1A0=0寫ICW2A0=1SNGL=1

IC4=1寫ICW3A0=1寫ICW4A0=1是否是否按順序?qū)0=1端口寫入命令字返回初始化編程

例:某8086微機(jī)系統(tǒng)中有一片8259A,中斷請(qǐng)求信號(hào)為電平觸發(fā),中斷類型碼為40H~47H,中斷優(yōu)先級(jí)管理采用普通全嵌套方式,中斷結(jié)束方式采用自動(dòng)結(jié)束方式,系統(tǒng)中未使用數(shù)據(jù)緩沖器,系統(tǒng)分配給8259A的端口地址為20H和21H,試對(duì)該82C59A進(jìn)行初始化編程

初始化編程

分析:由于系統(tǒng)中使用單片8259A,所以初始化時(shí)不需要ICW3,本例中82C59A要求工作在非緩沖方式,故在硬件上將SP*/EN*接+5V,ICW4中的(M/S*)位無(wú)意義,可設(shè)置為0

對(duì)82C59A的初始化程序如下:

MOVAL,00011011B;設(shè)置ICW1初始化命令字

OUT20H,AL ;將ICW1輸出到偶地址端口

MOVAL,01000000B;ICW2中斷類型號(hào)基值

OUT21H,AL ;將ICW2送入奇地址端口

MOVAL,00001011B;ICW4OUT21H,AL ;將ICW4送入奇地址瑞口

3.8259A的命令字OCW設(shè)置時(shí)沒(méi)有次序要求,但對(duì)地址有要求.

⒈中斷屏蔽操作命令字OCWl

OCWl用來(lái)實(shí)現(xiàn)對(duì)中斷源的屏蔽功能,OCWl的內(nèi)容被直接置入IMR屏蔽寄存器,編程要求寫入奇地址.其格式如圖所示

3.1OCW1格式3.2

優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式操作命令字OCW2

OCW2有兩個(gè)功能:設(shè)置中斷結(jié)束方式和優(yōu)先級(jí)循環(huán)方式,要求寫入偶地址端口,其格式如圖所示。中斷結(jié)束方式:1.自動(dòng)結(jié)束2.一般的結(jié)束方式

3.特殊的中斷結(jié)束方式優(yōu)先級(jí)方式:1.全嵌套2.特殊全嵌套

3.優(yōu)先級(jí)自動(dòng)循環(huán)4.優(yōu)先級(jí)特殊循環(huán)OCW2

操作命令字OCW2D7(R):用于規(guī)定中斷優(yōu)先級(jí)是否設(shè)置為循環(huán)方式

D7=1,為優(yōu)先權(quán)循環(huán)方式;D7=0,為非循環(huán)方式D6(SL):用于規(guī)定OCW2中的L2L1L0是否有效

D6=l,表示D2~D0有效;D6=0,表示無(wú)效D5

(EOI),中斷結(jié)束命令位。如果ICW4中D1(AEOI)位為l,表示中斷采用自動(dòng)結(jié)束方式。在中斷自動(dòng)結(jié)束方式下,當(dāng)CPU第2個(gè)負(fù)脈沖結(jié)束時(shí),中斷服務(wù)寄存器ISR中相應(yīng)位會(huì)自動(dòng)清除,但如果AEOI為0,則ISRi位就要用EOI命令來(lái)消除。EOI命令是通過(guò)OCW2中的D5位設(shè)置的。

EOI=1:用于設(shè)置中斷結(jié)束方式

EOI=0:用于設(shè)置中斷優(yōu)先級(jí)循環(huán)方式

EOI=0R=1,SL=0寫入OCW2則使得8259A工作于優(yōu)先級(jí)自動(dòng)循環(huán)方式

R=0,SL=0寫入OCW2則使得8259A結(jié)束自動(dòng)循環(huán)方式

R=1,SL=1寫入OCW2則使得8259A工作于中斷特殊循環(huán)方式,最低優(yōu)先級(jí)由L2L1L0指定。設(shè)置優(yōu)先級(jí)循環(huán)EOI=1R=0,SL=0寫入OCW2即向8259A發(fā)送了一個(gè)

一般中斷結(jié)束命令(清空ISR中當(dāng)前最高優(yōu)先級(jí)對(duì)應(yīng)的ISi位)

R=0,SL=1寫入OCW2即向8259A發(fā)送了一個(gè)

特殊中斷結(jié)束命令

(清空ISR中L2L1L0指定的ISi位)

R=1,SL=0寫入OCW2使8259A工作于中斷優(yōu)先級(jí)

自動(dòng)循環(huán)方式并且為一般中斷結(jié)束方式

R=1,SL=1寫入OCW2使8259A工作于中斷優(yōu)先級(jí)

特殊循環(huán)方式并且為一般中斷結(jié)束方式設(shè)置結(jié)束方式操作命令字OCW2

D4、D3,D4D3=00,OCW2的標(biāo)志位

D2~D0(L2L1L0),有兩個(gè)用途:當(dāng)OCW2給出特殊的中斷結(jié)束命令時(shí),L2、L1和L0指出具體應(yīng)清除中斷服務(wù)寄存器中的哪一位.當(dāng)OCW2給出特殊的優(yōu)先級(jí)循環(huán)方式命令時(shí),L2、L1和L0指出循環(huán)開(kāi)始時(shí)哪個(gè)中斷的優(yōu)先級(jí)最低

操作命令字OCW2⒊特殊屏蔽方式和中斷查詢方式操作命令OCW3

有3個(gè)功能:設(shè)置和撤消特殊屏蔽方式設(shè)置中斷查詢方式設(shè)置讀出ISR或IRR寄存器的內(nèi)容編程寫入偶地址屏蔽方式:1.普通屏蔽2.特殊屏蔽

操作命令OCW3

操作命令OCW3(1)設(shè)置屏蔽方式

ESMM稱為特殊屏蔽允許位,SMM稱為特殊屏蔽方式位,這兩位的組合決定是設(shè)置特殊屏蔽還是撤銷屏蔽當(dāng)ESMM、SMM=11時(shí),將8259A設(shè)置為特殊屏蔽方式,即只屏蔽本級(jí)中斷請(qǐng)求,允許高級(jí)的或低級(jí)的中斷申請(qǐng)進(jìn)入

當(dāng)ESMM、SMM=10時(shí),撤消特殊屏蔽方式,恢復(fù)原來(lái)的優(yōu)先級(jí)控制當(dāng)ESMM=0時(shí),不能建立特殊屏蔽方式,SMM位也不起作用設(shè)D2、D1、D0這3位均為0,則設(shè)置的特殊屏蔽方式字OCW3=68H,撤消特殊屏蔽方式字OCW3=48H

OCW3的中斷查詢功能

OCW3的D2位即P位為中斷查詢方式位。當(dāng)P=1時(shí),使8259A處于中斷查詢方式,即CPU向8259A偶地址端口寫入一個(gè)查詢命令OCW3=0CH后,再執(zhí)行輸入指令(INAL偶地址),CPU便可讀入8259A提供的查詢字。查詢字反映了當(dāng)前有無(wú)中斷請(qǐng)求,以及中斷請(qǐng)求中優(yōu)先級(jí)最高的是哪一個(gè)。8259A的查詢字格式如圖操作命令OCW3(2)設(shè)置中斷查詢功能操作命令OCW3(2)設(shè)置中斷查詢功能OCW3的讀操作功能

(P=0前提下)

8259A內(nèi)部有3個(gè)寄存器(IRR、IMR、ISR)可供CPU讀出其當(dāng)前的狀態(tài),CPU在發(fā)讀命令之前,須先指定讀取哪個(gè)寄存器,然后再發(fā)IN指令到偶地址,才能讀取IRR和ISR中的內(nèi)容。當(dāng)所讀的寄存器不變,就不必每次都指定所要讀取的寄存器。在8259A初始化后,自動(dòng)指向讀IRR

操作命令OCW3(3)讀出寄存器內(nèi)容

OCW3中的D1,D0兩位用來(lái)指定具體讀ISR和IRR中的哪一個(gè)寄存器

當(dāng)RR、RIS=11時(shí),表示CPU的下一條IN指令要讀取ISR寄存器的內(nèi)容當(dāng)RR、RIS=10時(shí),表示CPU的下一條IN指令要讀IRR寄存器的內(nèi)容

對(duì)IMR寄存器的讀出,不需要事先發(fā)出指定命令,直接通過(guò)讀奇地址端口就可以讀到IMR寄存器的內(nèi)容操作命令OCW3(3)讀出寄存器內(nèi)容初始化及操作命令字小結(jié)8259A內(nèi)部有兩個(gè)地址(奇、偶)寫入奇數(shù)地址的控制字:ICW2、ICW3、ICW4、OCW1寫入偶數(shù)地址的控制字:ICW1、OCW2、OCW3ICW控制字寫入有固定的順序,OCW命令字寫入無(wú)固定順序CPU可以向8259A寫入ICW1-4,OCW1-3

可以從8259A讀出狀態(tài)查詢字、ISR、IRR、IMR4.命令字和狀態(tài)字的區(qū)別方法⑴利用讀寫信號(hào)區(qū)別寫入的控制寄存器和讀出的狀態(tài)寄存器⑵

利用地址信號(hào)區(qū)別不同I/O地址的寄存器⑶

由控制字中的標(biāo)志位說(shuō)明是哪個(gè)寄存器⑷由芯片內(nèi)順序控制邏輯按一定順序識(shí)別不同的寄存器⑸由前面的控制字決定后續(xù)操作的寄存器A0RD*WR*CS*功能0100110000101010×110×××1寫入ICW1、OCW2和OCW3寫入ICW2~I(xiàn)CW4和OCW1讀出IRR、ISR和查詢字讀出IMR數(shù)據(jù)總線高阻狀態(tài)數(shù)據(jù)總線高阻狀態(tài)

應(yīng)用舉例1、8259A在IBMPC機(jī)上的應(yīng)用8259中斷控制器8088CPU日時(shí)鐘0鍵盤1保留2串口23串口14硬盤5軟盤6打印機(jī)7SPINTAD7~D0INTRPC/XT機(jī)中的中斷控制邏輯8259中斷

溫馨提示

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