微型計(jì)算機(jī)原理與接口技術(shù)第7章_第1頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)第7章_第2頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)第7章_第3頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)第7章_第4頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)第7章_第5頁(yè)
已閱讀5頁(yè),還剩112頁(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)介

第7章微型計(jì)算機(jī)中斷系統(tǒng)當(dāng)某件事件發(fā)生時(shí),為了對(duì)該事件進(jìn)行處理,CPU中止現(xiàn)行程序的執(zhí)行,轉(zhuǎn)去執(zhí)行處理該事件的程序(俗稱中斷處理程序或中斷服務(wù)程序),待中斷服務(wù)程序執(zhí)行完畢,再返回?cái)帱c(diǎn)繼續(xù)執(zhí)行原來(lái)的程序,這個(gè)過(guò)程稱為中斷。以外設(shè)提出交換數(shù)據(jù)為例,當(dāng)CPU執(zhí)行主程序到第K條指令時(shí),外設(shè)如果提出交換數(shù)據(jù)的請(qǐng)求,CPU響應(yīng)外設(shè)交換數(shù)據(jù)的請(qǐng)求,轉(zhuǎn)入中斷狀態(tài),執(zhí)行中斷服務(wù)程序。在完成中斷服務(wù)后恢復(fù)原來(lái)程序,即從第K+1條指令(斷點(diǎn)處)繼續(xù)執(zhí)行。這樣,便產(chǎn)生了保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的要求。7.1概述中斷過(guò)程示意圖中斷處理流程所以當(dāng)CPU轉(zhuǎn)入中斷處理程序時(shí),首先應(yīng)保留中斷時(shí)的斷點(diǎn)地址K+1和CPU寄存器狀態(tài)(即保護(hù)現(xiàn)場(chǎng))。一旦數(shù)據(jù)交換完畢,必須恢復(fù)現(xiàn)場(chǎng),再返回到斷點(diǎn)地址K+1,繼續(xù)執(zhí)行原程序。采用中斷技術(shù),能實(shí)現(xiàn)以下功能:①分時(shí)操作。計(jì)算機(jī)配上中斷系統(tǒng)后,CPU就可以分時(shí)執(zhí)行多個(gè)用戶的程序和多道作業(yè),使每個(gè)用戶認(rèn)為它正在獨(dú)占系統(tǒng)。此外,CPU可控制多個(gè)外設(shè)同時(shí)工作,并可及時(shí)得到服務(wù)處理,使各個(gè)外設(shè)一直處于有效工作狀態(tài),從而大大提高主機(jī)的使用效率。②實(shí)時(shí)處理。當(dāng)計(jì)算機(jī)用于實(shí)時(shí)控制時(shí),計(jì)算機(jī)在現(xiàn)場(chǎng)測(cè)試和控制、網(wǎng)絡(luò)通信、人機(jī)對(duì)話時(shí)都會(huì)具有強(qiáng)烈的實(shí)時(shí)性,中斷技術(shù)能確保對(duì)實(shí)時(shí)信號(hào)的處理。實(shí)時(shí)控制系統(tǒng)要求計(jì)算機(jī)為它們的服務(wù)是隨機(jī)發(fā)生的,且時(shí)間性很強(qiáng),要求做到近乎即時(shí)處理,若沒(méi)有中斷系統(tǒng)是很難實(shí)現(xiàn)的。③故障處理。計(jì)算機(jī)運(yùn)行過(guò)程中,往往會(huì)出現(xiàn)一些故障,如電源掉電、存儲(chǔ)器讀出出錯(cuò)、運(yùn)算溢出,還有非法指令、存儲(chǔ)器超量裝載、信息校驗(yàn)出錯(cuò)等等。盡管故障出現(xiàn)的概率較小,但是一旦出現(xiàn)故障將使整個(gè)系統(tǒng)癱瘓。有了中斷系統(tǒng)后,當(dāng)出現(xiàn)上述情況時(shí),CPU就轉(zhuǎn)去執(zhí)行故障處理程序而不必停機(jī)。中斷系統(tǒng)能在故障出現(xiàn)時(shí)發(fā)出中斷信號(hào),調(diào)用相應(yīng)的處理程序,將故障的危害降低到最低程度,并請(qǐng)求系統(tǒng)管理員排除故障。中斷控制的輸入和輸出方式,也稱中斷傳送方式,即當(dāng)外設(shè)的輸入數(shù)據(jù)準(zhǔn)備好或接收數(shù)據(jù)的鎖存器為空時(shí),主動(dòng)向CPU發(fā)出中斷請(qǐng)求,使CPU中斷原來(lái)執(zhí)行的程序(主程序),轉(zhuǎn)去執(zhí)行為外設(shè)服務(wù)的輸入或輸出操作,服務(wù)完畢,CPU再繼續(xù)執(zhí)行原來(lái)的程序。中斷傳送方式中,CPU和外設(shè)(甚至多個(gè)外設(shè))可同時(shí)工作,從而大大提高了CPU的效率和控制程序執(zhí)行的實(shí)時(shí)性。中斷傳送時(shí)的接口電路有兩個(gè)端口,即數(shù)據(jù)口和中斷控制口,它們合用一個(gè)口地址。中斷傳送方式接口電路當(dāng)輸入設(shè)備數(shù)據(jù)準(zhǔn)備好后,發(fā)出選通信號(hào),該信號(hào)把數(shù)據(jù)存入鎖存器,同時(shí)使D觸發(fā)器置1,發(fā)出中斷請(qǐng)求。若中斷是開(kāi)放的,則CPU接收中斷請(qǐng)求信號(hào),在現(xiàn)行指令執(zhí)行完后,暫停正在執(zhí)行的程序,發(fā)出中斷響應(yīng)信號(hào)。由外設(shè)將一個(gè)中斷矢量放到數(shù)據(jù)總線上,CPU就轉(zhuǎn)入中斷服務(wù)程序,完成讀取或輸出數(shù)據(jù),同時(shí)清除中斷請(qǐng)求標(biāo)志。中斷處理完畢后,CPU返回被中斷的程序繼續(xù)執(zhí)行。為了增強(qiáng)中斷的靈活性,在中斷傳送方式的接口電路中,常常設(shè)置中斷允許觸發(fā)器,該觸發(fā)器受CPU控制。當(dāng)中斷允許觸發(fā)器置1,接口就可以發(fā)出中斷請(qǐng)求了。當(dāng)中斷允許觸發(fā)器清0,禁止向CPU提出中斷請(qǐng)求。中斷請(qǐng)求

此過(guò)程由欲提出中斷的外部設(shè)備或內(nèi)部系統(tǒng)提出。當(dāng)外部設(shè)備需要完成某種特定的操作或者處理器系統(tǒng)內(nèi)部出錯(cuò)時(shí),需要CPU進(jìn)行處理,外部設(shè)備可以向CPU提出中斷申請(qǐng),請(qǐng)求CPU進(jìn)行處理。中斷響應(yīng)

CPU給設(shè)備發(fā)出一個(gè)中斷應(yīng)答信號(hào);當(dāng)外設(shè)提出的中斷申請(qǐng)被CPU接收并認(rèn)可后,首先解決的是必須關(guān)中斷,其次是微處理器在處理中斷、實(shí)現(xiàn)控制權(quán)的轉(zhuǎn)移前必須把當(dāng)前程序狀態(tài)保存起來(lái),最后是查找中斷源,即查找提出中斷請(qǐng)求的是外圍設(shè)備還是內(nèi)部系統(tǒng)。中斷響應(yīng)的條件:有中斷請(qǐng)求信號(hào)中斷請(qǐng)求沒(méi)有被屏蔽中斷是開(kāi)放的CPU在現(xiàn)行指令執(zhí)行結(jié)束時(shí)響應(yīng)中斷

現(xiàn)場(chǎng)保護(hù)為了確保在中斷完成之后,程序能正確地返回到原來(lái)的斷點(diǎn)處,繼續(xù)執(zhí)行原程序的下一條指令,必須對(duì)斷點(diǎn)處的各種數(shù)據(jù)進(jìn)行現(xiàn)場(chǎng)保護(hù),主要是標(biāo)志寄存器和CS、IP的值,我們可以將其壓入堆棧中,利用堆棧來(lái)進(jìn)行保護(hù)。同時(shí)還要清除中斷標(biāo)志IF和TF,關(guān)閉中斷。執(zhí)行中斷服務(wù)程序

根據(jù)中斷類型號(hào)N,可以在中斷向量表中查出要執(zhí)行中斷服務(wù)程序的入口地址,從而執(zhí)行相應(yīng)的中斷處理程序,該程序可以是用戶自己編寫的程序,也可以是系統(tǒng)提供的程序。

恢復(fù)現(xiàn)場(chǎng)在中斷處理程序完成后,應(yīng)當(dāng)對(duì)現(xiàn)場(chǎng)進(jìn)行恢復(fù)。此時(shí)可以將保存在堆棧中的內(nèi)容彈出,即按照“后進(jìn)先出”的原則將相應(yīng)的值彈出到原來(lái)的寄存器中,從而恢復(fù)中斷前的狀態(tài)。中斷返回任何一個(gè)中斷都必須在中斷服務(wù)程序的末尾并在中斷服務(wù)程序指令返回之前重新開(kāi)中斷。微處理器的3種中斷技術(shù)示意圖一個(gè)完整的向量中斷過(guò)程

Intel80X86系列微機(jī)有一個(gè)靈活的中斷系統(tǒng),可以處理256個(gè)不同的中斷源,每個(gè)中斷源都有相應(yīng)的中斷類型碼(0~255)供CPU識(shí)別。中斷源可以來(lái)自CPU外部,也可以來(lái)自CPU內(nèi)部,可分成兩大類:外部中斷和軟件中斷。

1.外部中斷硬件中斷是由外部硬件產(chǎn)生的,又稱為外部中斷。8086/8088為外部設(shè)備提供了兩條硬件中斷信號(hào)線,即NMI和INTR,分別接收非屏蔽中斷和可屏蔽中斷請(qǐng)求信號(hào)。中斷分類8086/8088中斷源

(1)非屏蔽中斷。由NMI引腳出現(xiàn)中斷請(qǐng)求信號(hào)CPU產(chǎn)生的中斷稱為非屏蔽中斷請(qǐng)求,它不受中斷允許標(biāo)志IF的限制,其中斷類型碼為2。當(dāng)NMI引腳上出現(xiàn)上升沿觸發(fā)時(shí),表示非屏蔽中斷請(qǐng)求信號(hào)有效,CPU內(nèi)部會(huì)把該信號(hào)鎖存起來(lái),但要求該信號(hào)的有效電平持續(xù)2個(gè)時(shí)鐘周期以上。CPU接收到非屏蔽中斷請(qǐng)求信號(hào)后,不管當(dāng)前正在做什么事,都會(huì)在執(zhí)行完當(dāng)前指令后立即響應(yīng)中斷請(qǐng)求而進(jìn)入相應(yīng)的中斷處理。在實(shí)際系統(tǒng)中,非屏蔽中斷通常用來(lái)處理系統(tǒng)中出現(xiàn)的重大事故和緊急情況,如系統(tǒng)掉電處理、緊急停機(jī)處理等。在IBMPC系列微機(jī)中,若系統(tǒng)板上存儲(chǔ)器產(chǎn)生奇偶校驗(yàn)錯(cuò)或I/O通道上產(chǎn)生奇偶校驗(yàn)錯(cuò)或Intel8087/80287產(chǎn)生異常都會(huì)引起一個(gè)NMI中斷。

(2)可屏蔽中斷。一般外部設(shè)備提出的中斷請(qǐng)求是從CPU的INTR引腳上引入的,所產(chǎn)生的中斷為可屏蔽中斷。INTR信號(hào)是高電平觸發(fā)的,與內(nèi)部中斷和非屏蔽中斷相比,可屏蔽中斷受中斷標(biāo)志IF的影響。只有在IF=1的情況下,CPU才會(huì)在執(zhí)行當(dāng)前指令后響應(yīng)可屏蔽中斷請(qǐng)求信號(hào),所以,即使INTR信號(hào)有效,也必須保持到當(dāng)前指令執(zhí)行結(jié)束。如果IF=0,即使中斷源有中斷請(qǐng)求,CPU也不會(huì)響應(yīng),也稱為中斷被屏蔽。IBMPC系列微機(jī)中,通常外部設(shè)備提出的中斷請(qǐng)求信號(hào)首先通過(guò)中斷控制器8259A預(yù)處理后,再?zèng)Q定是否向CPU的INTR引腳提出中斷請(qǐng)求。系統(tǒng)中可屏蔽中斷可以有一個(gè)或多個(gè),CPU響應(yīng)可屏蔽中斷請(qǐng)求后,通過(guò)引腳送出兩個(gè)負(fù)脈沖,并配合有關(guān)電路獲得與中斷源對(duì)應(yīng)的中斷類型碼。

2.軟件中斷軟件中斷是CPU根據(jù)軟件的某條指令或者軟件對(duì)標(biāo)志寄存器的某個(gè)標(biāo)志位的設(shè)置而產(chǎn)生的,由于它與外部硬件電路完全無(wú)關(guān),故也稱為內(nèi)部中斷。在80X86系統(tǒng)中,內(nèi)部中斷主要有以下幾種:

(1)除法出錯(cuò)中斷——0型中斷。當(dāng)執(zhí)行除法指令時(shí),若發(fā)現(xiàn)除數(shù)為0或商超過(guò)了機(jī)器所能表達(dá)數(shù)的范圍,則立即產(chǎn)生一個(gè)中斷類型碼為0的內(nèi)部中斷,該中斷稱為除法出錯(cuò)中斷。一般該中斷的服務(wù)處理都由操作系統(tǒng)安排。

(2)單步中斷——1型中斷。若TF=1,則CPU處于單步工作方式,即每執(zhí)行完一條指令之后就自動(dòng)產(chǎn)生一個(gè)中斷類型碼為1的內(nèi)部中斷,使得指令的執(zhí)行成為單步執(zhí)行方式。單步執(zhí)行方式為系統(tǒng)提供了一種方便的調(diào)試手段,成為能夠逐條指令地觀察系統(tǒng)操作的一個(gè)窗口。如DEBUG中的跟蹤命令,就是將標(biāo)志TF置1,進(jìn)而去執(zhí)行一個(gè)單步中斷服務(wù)程序,以跟蹤程序的具體執(zhí)行過(guò)程,找出程序中的問(wèn)題或錯(cuò)誤所在。需要說(shuō)明的是,在所有類型的中斷處理過(guò)程中,CPU會(huì)自動(dòng)地把狀態(tài)標(biāo)志壓入堆棧,然后清除TF和IF。因此當(dāng)CPU進(jìn)入單步處理程序時(shí),就不再處于單步工作方式,而以正常方式工作。只有在單步處理結(jié)束后,從堆棧中彈出原來(lái)的標(biāo)志,才使CPU返回到單步工作方式。(3)溢出中斷——4型中斷。若算法操作結(jié)果產(chǎn)生溢出(OF=1),則執(zhí)行INTO指令后立即產(chǎn)生一個(gè)中斷類型碼為4的中斷。4型中斷為程序員提供了一種處理算術(shù)運(yùn)算出現(xiàn)溢出的手段,它通常和算術(shù)指令功能配合使用。(4)指令中斷——n型中斷。在指令系統(tǒng)中,介紹了中斷指令I(lǐng)NTn,這種指令的執(zhí)行也會(huì)引起內(nèi)部中斷,其中斷類型碼由指令中的n指定。該指令就稱為軟中斷指令,通常指令的代碼為兩個(gè)字節(jié)代碼,第一字節(jié)為操作碼,第二字節(jié)為中斷類型碼。但是中斷類型碼為3的軟中斷指令卻是單字節(jié)指令,因而它能很方便地插入到程序的任何地方,專供在程序中設(shè)置斷點(diǎn)調(diào)試程序時(shí)使用,也稱為斷點(diǎn)中斷。插入INT3指令之處便是斷點(diǎn),在斷點(diǎn)中斷服務(wù)程序中,可顯示有關(guān)的寄存器、存儲(chǔ)單元的內(nèi)容,以便程序員分析到斷點(diǎn)為止程序運(yùn)行是否正確。

7.2中斷處理過(guò)程中斷處理過(guò)程包括以下幾個(gè)步驟:

(1)識(shí)別中斷源。當(dāng)CPU響應(yīng)外部設(shè)備的中斷請(qǐng)求后,必須識(shí)別出是哪一臺(tái)外設(shè)請(qǐng)求中斷,然后再轉(zhuǎn)入對(duì)應(yīng)于該設(shè)備的中斷服務(wù)程序。CPU識(shí)別請(qǐng)求中斷設(shè)備的過(guò)程稱為中斷源的識(shí)別。利用程序來(lái)查詢?cè)O(shè)備的請(qǐng)求中斷狀態(tài),從而確認(rèn)出應(yīng)該服務(wù)的設(shè)備號(hào),并轉(zhuǎn)入相應(yīng)設(shè)備號(hào)的中斷服務(wù)程序,這種方法稱為軟件查詢技術(shù)識(shí)別中斷源。CPU利用識(shí)別中斷指令,可識(shí)別出硬件設(shè)備中排隊(duì)優(yōu)先的設(shè)備,并取回占有優(yōu)先權(quán)的設(shè)備的編碼(或稱設(shè)備地址),CPU根據(jù)設(shè)備地址轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。

(2)中斷優(yōu)先權(quán)。一般而言,一個(gè)系統(tǒng)中有多個(gè)中斷源。當(dāng)某一時(shí)刻出現(xiàn)兩個(gè)或多個(gè)中斷源提出中斷請(qǐng)求時(shí),中斷系統(tǒng)應(yīng)能判別優(yōu)先權(quán)最高的中斷請(qǐng)求。在處理完優(yōu)先權(quán)最高的中斷請(qǐng)求后,再去響應(yīng)其它較低優(yōu)先級(jí)的中斷請(qǐng)求。中斷源的優(yōu)先權(quán)是根據(jù)它們的重要性事先規(guī)定好的。

(3)中斷嵌套。當(dāng)CPU響應(yīng)某一中斷源的請(qǐng)求,正在執(zhí)行中斷處理時(shí),若有優(yōu)先權(quán)級(jí)別更高的中斷源發(fā)出中斷申請(qǐng),則CPU要能中斷正在執(zhí)行的中斷服務(wù)程序,響應(yīng)高優(yōu)先級(jí)中斷。在高優(yōu)先級(jí)中斷處理完后再返回繼續(xù)執(zhí)行被中斷的中斷服務(wù)程序,即能實(shí)現(xiàn)中斷處理程序的嵌套。

(4)中斷與返回。當(dāng)某一中斷源發(fā)出中斷請(qǐng)求時(shí),CPU能決定是否響應(yīng)該中斷請(qǐng)求。若允許響應(yīng)該中斷請(qǐng)求,CPU必須在現(xiàn)行的指令執(zhí)行完后,把斷點(diǎn)處的PC(即下一條應(yīng)執(zhí)行的指令地址)、各個(gè)寄存器的內(nèi)容和標(biāo)志位的狀態(tài),壓入堆棧保留下來(lái)(稱為保護(hù)斷點(diǎn)和現(xiàn)場(chǎng))。然后轉(zhuǎn)到需要處理的中斷源的服務(wù)程序入口,同時(shí)清除中斷請(qǐng)求觸發(fā)器。中斷處理完畢,再恢復(fù)被保留下來(lái)的各個(gè)寄存器和標(biāo)志位的狀態(tài)(稱為恢復(fù)現(xiàn)場(chǎng)),最后恢復(fù)PC值(稱為恢復(fù)斷點(diǎn)),使CPU返回?cái)帱c(diǎn),繼續(xù)執(zhí)行主程序。

中斷向量表在80X86中斷系統(tǒng)中,無(wú)論是外部中斷還是內(nèi)部中斷,系統(tǒng)都分配給每一個(gè)中斷源一個(gè)確定的中斷類型碼,其長(zhǎng)度為一個(gè)字節(jié),故系統(tǒng)中最多允許有256個(gè)中斷源(其對(duì)應(yīng)類型碼為0~255)。那么,80X86CPU在響應(yīng)中斷后,是如何轉(zhuǎn)入各個(gè)中斷服務(wù)程序的呢?

所謂中斷向量,實(shí)際上就是中斷處理子程序的入口地址。通常在內(nèi)存的最低1KB(00000H~003FFH)建立一個(gè)中斷向量表,分成256個(gè)組,每組占4個(gè)字節(jié),用以存放256個(gè)中斷向量。每個(gè)中斷向量占4個(gè)字節(jié),其中前2個(gè)字節(jié)存放中斷處理子程序的入口地址的偏移量(IP,16位),后2個(gè)字節(jié)存放中斷處理子程序入口地址的段地址(CS,16位)。按照中斷類型碼的序號(hào),對(duì)應(yīng)的中斷向量在中斷向量表中按規(guī)則順序排列,如圖所示。中斷向量表圖中前5個(gè)中斷類型是80X86規(guī)定的專用中斷,有著固定的意義和處理功能;類型碼5~31為系統(tǒng)使用或保留;類型碼32~255可以由用戶自行使用。但是,在一種具體的微機(jī)系統(tǒng)中,可能對(duì)用戶可使用的中斷類型碼另有規(guī)定,如PC/AT中斷類型碼70H~77H就已有安排,所以用戶在進(jìn)行系統(tǒng)開(kāi)發(fā)和應(yīng)用時(shí)應(yīng)注意。中斷類型碼與中斷向量在向量表中的位置之間的對(duì)應(yīng)關(guān)系為:中斷向量地址指針=4×中斷類型碼例如,中斷類型碼為20H的中斷源對(duì)應(yīng)的中斷向量存放在0000:0080H(4×20H=80H)開(kāi)始的4個(gè)單元中。中斷類型號(hào)和中斷服務(wù)子程序的入口地址之間的關(guān)系:如果在00080H~00083H這4個(gè)單元中存放的值分別為10H、20H、30H、40H,那么,在該系統(tǒng)中,20H號(hào)中斷所對(duì)應(yīng)的中斷向量即中斷處理程序的入口地址為4030H:2010H。又如,一個(gè)系統(tǒng)中對(duì)應(yīng)于中斷類型碼為17H的中斷處理子程序存放在1234:5670H開(kāi)始的內(nèi)存區(qū)域中,則對(duì)應(yīng)于17H類型碼的中斷向量存放在0000:005CH(4×17H=5C)開(kāi)始的4個(gè)字節(jié)中。所以0段的005CH~005FH這4個(gè)單元中的值分別為70H、56H、34H、12H。中斷響應(yīng)過(guò)程

80X86中的各種中斷響應(yīng)和處理過(guò)程是不相同的,其主要區(qū)別在于如何獲取相應(yīng)的中斷類型碼。

1.內(nèi)部中斷響應(yīng)過(guò)程對(duì)于專用中斷,中斷類型碼是自動(dòng)形成的,而對(duì)于INTn指令,其類型碼即為指令中給定的n。在取得了類型碼后的處理過(guò)程如下:①把類型碼乘4,作為中斷向量表的指針。②把CPU的標(biāo)志寄存器入棧,保護(hù)各個(gè)標(biāo)志位。③清除IF和TF標(biāo)志,屏蔽新的INTR中斷和單步中斷。④保存斷點(diǎn),即把斷點(diǎn)處的IP和CS值壓入堆棧,先壓入CS值,再壓入IP值。⑤從中斷向量表中取中斷服務(wù)程序的入口地址,分別送至CS和IP中。⑥按新的地址指針執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序中,通常要保護(hù)現(xiàn)場(chǎng)、進(jìn)行相應(yīng)的中斷處理、恢復(fù)現(xiàn)場(chǎng),最后執(zhí)行中斷返回指令I(lǐng)RET。IRET的執(zhí)行將使CPU按次序恢復(fù)斷點(diǎn)處的IP和CS值以及標(biāo)志寄存器,于是程序就恢復(fù)到斷點(diǎn)處繼續(xù)執(zhí)行。內(nèi)部中斷有以下特點(diǎn):①中斷由CPU內(nèi)部引起,中斷類型碼的獲得與外部無(wú)關(guān),CPU不需要執(zhí)行中斷響應(yīng)周期去獲得中斷類型碼。②除單步中斷外,內(nèi)部中斷無(wú)法用軟件禁止,不受中斷允許標(biāo)志位的影響。③內(nèi)部中斷沒(méi)有隨機(jī)性,這一點(diǎn)與調(diào)用子程序非常相似。

2.外部中斷響應(yīng)過(guò)程

(1)不可屏蔽中斷響應(yīng)。當(dāng)CPU采樣到非屏蔽中斷請(qǐng)求時(shí),自動(dòng)提供中斷類型碼2,然后根據(jù)中斷類型碼查到中斷向量表指針,其后的中斷處理過(guò)程與內(nèi)部中斷一樣。

(2)可屏蔽中斷響應(yīng)。當(dāng)INTR信號(hào)有效時(shí),如果中斷允許標(biāo)志IF=1,則CPU就會(huì)在當(dāng)前指令執(zhí)行完畢,響應(yīng)外部的中斷請(qǐng)求,轉(zhuǎn)入中斷響應(yīng)周期。中斷響應(yīng)周期有2個(gè),每個(gè)響應(yīng)周期都由4個(gè)T狀態(tài)組成。CPU在每個(gè)響應(yīng)周期都從引腳上發(fā)一個(gè)負(fù)脈沖的中斷響應(yīng)信號(hào)。中斷響應(yīng)的第一個(gè)總線周期用來(lái)通知請(qǐng)求中斷的外設(shè),CPU準(zhǔn)備響應(yīng)中斷,現(xiàn)在應(yīng)該準(zhǔn)備好中斷類型碼;在第二個(gè)總線響應(yīng)周期中,要求請(qǐng)求中斷的外設(shè)在接到第二個(gè)負(fù)脈沖以后(第二個(gè)中斷響應(yīng)周期的T3狀態(tài)前),立即把中斷類型碼通過(guò)數(shù)據(jù)總線傳送給CPU。CPU在T4狀態(tài)的前沿采樣數(shù)據(jù)總線,獲取中斷類型碼。如圖所示。其后的中斷響應(yīng)過(guò)程和內(nèi)部中斷一樣。中斷響應(yīng)總線周期當(dāng)一個(gè)可屏蔽中斷被響應(yīng)時(shí)CPU實(shí)際執(zhí)行的總線周期有7個(gè):①執(zhí)行2個(gè)中斷響應(yīng)總線周期,CPU獲得相應(yīng)的中斷類型碼,將它左移2位形成中斷向量表指針,存入暫存器。②執(zhí)行1個(gè)寫總線周期,把標(biāo)志寄存器FR的內(nèi)容壓入堆棧。同時(shí),置中斷允許標(biāo)志IF和單步標(biāo)志TF為0,以禁止中斷響應(yīng)過(guò)程中其他可屏蔽中斷的進(jìn)入,同時(shí)也禁止了中斷處理過(guò)程中出現(xiàn)單步中斷。③執(zhí)行2個(gè)寫總線周期,把斷點(diǎn)地址的內(nèi)容壓入堆棧。④執(zhí)行1個(gè)讀總線周期,從中斷向量表中取出中斷處理子程序入口地址的偏移量送到IP寄存器中。⑤執(zhí)行1個(gè)讀總線周期,從中斷向量表中取出中斷處理子程序入口地址的段基地址送到CS寄存器中。所有中斷都是在當(dāng)前指令結(jié)束后處理的,在80X86系統(tǒng)中各種中斷源的優(yōu)先權(quán)實(shí)際上是指被識(shí)別出來(lái)的先后。在當(dāng)前指令執(zhí)行完后CPU首先自動(dòng)查詢?cè)谥噶顖?zhí)行過(guò)程中是否有除法出錯(cuò)中斷、溢出中斷和INTn中斷發(fā)生,然后查詢NMI和INTR,最后查詢單步中斷,先查詢到的先被響應(yīng)。8086/8088的中斷響應(yīng)過(guò)程中斷服務(wù)子程序特點(diǎn)為”遠(yuǎn)”過(guò)程(類型為FAR)要用IRET指令返回中斷服務(wù)子程序要做的工作保護(hù)現(xiàn)場(chǎng)(PUSH

reg’s)

開(kāi)中斷(STI)

進(jìn)行中斷處理

恢復(fù)現(xiàn)場(chǎng)(POP

reg’s)

中斷返回(IRET)

執(zhí)行中斷返回指令I(lǐng)RETIRET指令將使CPU把堆棧內(nèi)保存的斷點(diǎn)信息彈出到IP、CS和FLAG中,保證被中斷的程序從斷點(diǎn)處能夠繼續(xù)往下執(zhí)行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG進(jìn)入中斷服務(wù)程序時(shí)中斷返回后

7.3中斷優(yōu)先級(jí)和中斷嵌套

如果系統(tǒng)中有多個(gè)中斷源,就要考慮其優(yōu)先權(quán)問(wèn)題。通常,多個(gè)中斷源的中斷請(qǐng)求信號(hào)都是送到CPU同一引腳上申請(qǐng)中斷服務(wù)的,這就要求CPU能識(shí)別出是哪些中斷源在申請(qǐng)中斷,同時(shí)比較它們的優(yōu)先權(quán),從而決定先響應(yīng)哪一個(gè)中斷源的中斷請(qǐng)求。另外,當(dāng)CPU正在處理中斷時(shí),也可能要響應(yīng)更高級(jí)的中斷請(qǐng)求,并屏蔽同級(jí)或較低級(jí)的中斷請(qǐng)求,這些都需要分清各中斷源的優(yōu)先權(quán)。有些微機(jī)系統(tǒng)中,中斷源的優(yōu)先級(jí)可以由用戶根據(jù)輕重緩急安排,一般可采用軟件優(yōu)先級(jí)排隊(duì)和硬件優(yōu)先級(jí)排隊(duì)兩種方法。

1.軟件優(yōu)先級(jí)排隊(duì)軟件優(yōu)先級(jí)排隊(duì)是指各個(gè)中斷源的優(yōu)先權(quán)由軟件安排,與硬件電路關(guān)系不大。圖所示電路是一種配合軟件優(yōu)先級(jí)排隊(duì)使用的電路,圖中各中斷源的優(yōu)先權(quán)不是由硬件電路安排,而是由軟件安排的。圖中若干個(gè)外設(shè)的中斷請(qǐng)求信號(hào)相“或”后,送至CPU的中斷接收引腳(如INTR)。這樣,只要任一外設(shè)有中斷請(qǐng)求,CPU便可響應(yīng)中斷。在中斷服務(wù)子程序前可安排一段優(yōu)先級(jí)的查詢程序,即CPU讀取外設(shè)中斷請(qǐng)求狀態(tài)端口,然后根據(jù)預(yù)先確定的優(yōu)先級(jí)級(jí)別逐位檢測(cè)各外設(shè)的狀態(tài),若有中斷請(qǐng)求就轉(zhuǎn)到相應(yīng)的處理程序入口。軟件優(yōu)先級(jí)排隊(duì)電路軟件優(yōu)先權(quán)查詢流程圖查詢的順序反映了各個(gè)中斷源的優(yōu)先權(quán)的高低。顯然,最先查詢的外設(shè),其優(yōu)先權(quán)級(jí)別最高。這種方法的優(yōu)點(diǎn)是節(jié)省硬件,優(yōu)先權(quán)安排靈活;缺點(diǎn)是查詢需要耗費(fèi)時(shí)間,在中斷源較多的情況下,查詢程序較長(zhǎng),可能影響中斷響應(yīng)的實(shí)時(shí)性。

2.硬件優(yōu)先級(jí)排隊(duì)硬件優(yōu)先級(jí)排隊(duì)是指利用專門的硬件電路或中斷控制器對(duì)系統(tǒng)中各中斷源的優(yōu)先權(quán)進(jìn)行安排。

(1)硬件優(yōu)先級(jí)排隊(duì)電路。鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路是一種簡(jiǎn)單的中斷優(yōu)先權(quán)硬件排隊(duì)電路,如下圖所示。采用該方法時(shí),每個(gè)外設(shè)對(duì)應(yīng)的接口上連接一個(gè)邏輯電路,這些邏輯電路構(gòu)成一個(gè)鏈,稱為菊花鏈,由該菊花鏈來(lái)控制中斷響應(yīng)信號(hào)的通路。鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路

(a)菊花鏈;(b)菊花鏈邏輯電路從圖中可以看到,當(dāng)一個(gè)外設(shè)有中斷請(qǐng)求時(shí),CPU如果允許中斷,則會(huì)發(fā)出信號(hào)。如果鏈條前端的外設(shè)沒(méi)有發(fā)出中斷請(qǐng)求信號(hào),那么這級(jí)中斷邏輯電路就會(huì)允許中斷響應(yīng)信號(hào)原封不動(dòng)地往后傳遞,一直傳到發(fā)出中斷請(qǐng)求的外設(shè);如果某一外設(shè)發(fā)出了中斷請(qǐng)求,那么本級(jí)的中斷邏輯電路就對(duì)后面的中斷邏輯電路實(shí)現(xiàn)阻塞,使信號(hào)不再傳到后面的外設(shè)。因而菊花鏈電路各個(gè)外設(shè)的中斷優(yōu)先權(quán)就由其在鏈中的位置決定,處于菊花鏈前端的比處于后端的優(yōu)先級(jí)高。當(dāng)某一外設(shè)收到中斷響應(yīng)信號(hào)后,就控制有關(guān)電路送出中斷類型碼,從而執(zhí)行相應(yīng)的中斷服務(wù)程序。當(dāng)多個(gè)外設(shè)同時(shí)發(fā)出中斷請(qǐng)求信號(hào)時(shí),根據(jù)電路分析可知,處于鏈頭的外設(shè)先得到中斷響應(yīng),而排在菊花鏈中較后位置的外設(shè)就收不到中斷響應(yīng)信號(hào),因而暫時(shí)不會(huì)被處理。若CPU正執(zhí)行某個(gè)中斷處理子程序,又有級(jí)別較高的外設(shè)提出中斷請(qǐng)求,由于菊花鏈電路中級(jí)別低的外設(shè)不能封鎖級(jí)別高的外設(shè)得到中斷響應(yīng)信號(hào),故可響應(yīng)該中斷請(qǐng)求,從而發(fā)生中斷嵌套現(xiàn)象。用硬件編碼器和比較器組成的優(yōu)先權(quán)排隊(duì)電路

3位二進(jìn)制優(yōu)先編碼器在優(yōu)先編碼器中優(yōu)先級(jí)別高的信號(hào)排斥級(jí)別低的,即具有單方面排斥的特性。設(shè)I7的優(yōu)先級(jí)別最高,I6次之,依此類推,I0最低。真值表4位數(shù)值比較器

(2)矢量中斷優(yōu)先級(jí)

采用可編程的矢量中斷控制器是當(dāng)前微型計(jì)算機(jī)系統(tǒng)中解決中斷優(yōu)先權(quán)管理的常用方法。通常,中斷控制器包括下列部件:中斷優(yōu)先權(quán)管理電路、中斷請(qǐng)求鎖存器、中斷類型寄存器、當(dāng)前中斷服務(wù)寄存器以及中斷屏蔽寄存器等。其中,中斷優(yōu)先權(quán)管理電路用來(lái)對(duì)所處理的各個(gè)中斷源進(jìn)行優(yōu)先權(quán)判斷,并根據(jù)具體情況預(yù)先設(shè)置優(yōu)先權(quán)。實(shí)際上,中斷控制器也可以認(rèn)為是一種接口,外設(shè)提出的中斷請(qǐng)求經(jīng)該環(huán)節(jié)處理后,再?zèng)Q定是否向CPU傳送,CPU接受中斷請(qǐng)求后的中斷響應(yīng)信號(hào)也送給該環(huán)節(jié)處理,以便得到相應(yīng)的中斷類型碼。

3中斷嵌套

當(dāng)CPU響應(yīng)某一中斷源的請(qǐng)求,正在執(zhí)行中斷處理時(shí),若有優(yōu)先權(quán)級(jí)別更高的中斷源發(fā)出中斷申請(qǐng),則CPU要能中斷正在執(zhí)行的中斷服務(wù)程序,響應(yīng)高優(yōu)先級(jí)中斷。在高優(yōu)先級(jí)中斷處理完后再返回繼續(xù)執(zhí)行被中斷的中斷服務(wù)程序,即能實(shí)現(xiàn)中斷處理程序的嵌套。如果一個(gè)系統(tǒng)中有三個(gè)中斷源,優(yōu)先權(quán)的安排為:中斷1為最高,中斷3為最低,則中斷處理如圖所示。中斷嵌套示意圖7.4可編程中斷控制器8259A7.4.1功能和引腳

若微處理器只有一根中斷請(qǐng)求輸入線,為了使多個(gè)外部中斷源共享中斷資源,需要有一個(gè)專門的控制電路在微處理器的控制下去管理那些中斷源并處理它們發(fā)出的中斷請(qǐng)求信號(hào)。這種專門管理中斷源的控制電路就是中斷控制器??删幊讨袛嗫刂破?259A具有如下功能:①它可以接收多個(gè)外部中斷源的中斷請(qǐng)求,并進(jìn)行優(yōu)先級(jí)別判斷,選中當(dāng)前優(yōu)先級(jí)別最高的中斷請(qǐng)求,再將此請(qǐng)求送到微處理器的中斷輸入端。②具有提供中斷向量、屏蔽中斷輸入等功能。③可用于管理8級(jí)優(yōu)先權(quán)中斷,也可將多片8259A通過(guò)級(jí)連方式構(gòu)成最多可達(dá)64級(jí)優(yōu)先權(quán)中斷管理系統(tǒng)。8259A管理的8級(jí)中斷對(duì)應(yīng)的服務(wù)程序入口地址構(gòu)成的中斷向量表存放在內(nèi)存固定區(qū)域。④具有多種工作方式,自動(dòng)提供中斷服務(wù)程序入口地址,使用靈活方便。

8259A的外部引腳8259A的引腳說(shuō)明

8259A為28腳雙列直插式封裝器件,管腳分配如圖所示。

D0~D7:雙向數(shù)據(jù)線,用來(lái)與CPU交換數(shù)據(jù)。INT:中斷請(qǐng)求,輸出信號(hào),由8259A傳給CPU,或由從8259A傳給主8259A。

:中斷響應(yīng),輸入信號(hào),來(lái)自CPU。

IR0~I(xiàn)R7:中斷請(qǐng)求輸入,由外設(shè)傳給8259A。8259A規(guī)定的中斷優(yōu)先級(jí)順序?yàn)镮R0>IR1>…>IR7。

IR0~I(xiàn)R7:中斷請(qǐng)求輸入,由外設(shè)傳給8259A。8259A規(guī)定的中斷優(yōu)先級(jí)順序?yàn)镮R0>IR1>…>IR7。

CAS0~CAS2:級(jí)連信號(hào)。對(duì)于主片,這三個(gè)信號(hào)是輸出信號(hào),根據(jù)它們的不同組合000~111,分別確定連在哪個(gè)IRi上的從片工作。對(duì)于從片,這三個(gè)信號(hào)是輸入信號(hào),以此判別本從片是否被選中。/:主從設(shè)備編程/允許緩沖器,雙向。作輸入信號(hào)使用時(shí),即為,作為主設(shè)備與從設(shè)備的選擇控制信號(hào),當(dāng)=1時(shí),該8259A作為主片;當(dāng)=0時(shí),該8259A作為從片。作輸出信號(hào)使用時(shí),即為,作為允許緩沖器接收發(fā)送的控制信號(hào)。

A0:內(nèi)部寄存器選擇控制信號(hào),輸入信號(hào)。8259A規(guī)定,當(dāng)A0=0時(shí),對(duì)應(yīng)的寄存器為ICW1、OCW2和OCW3;當(dāng)A0=1時(shí),對(duì)應(yīng)的寄存器為ICW2~I(xiàn)CW4和OCW1。:片選信號(hào),輸入信號(hào)。一般來(lái)自地址譯碼器的輸出。:讀允許信號(hào),輸入。來(lái)自CPU的。:寫允許信號(hào),輸入。來(lái)自CPU的。

7.4.2

內(nèi)部結(jié)構(gòu)

8259A由八個(gè)部分構(gòu)成,它們是中斷服務(wù)寄存器、中斷優(yōu)先權(quán)判斷器、中斷屏蔽寄存器、中斷請(qǐng)求寄存器、中斷控制邏輯、數(shù)據(jù)總線緩沖器、級(jí)連緩沖器/比較器和讀/寫控制邏輯。8259A的內(nèi)部結(jié)構(gòu)

(1)中斷請(qǐng)求寄存器IRR(InterruptRequestRegister)。IRR是一個(gè)8位寄存器,用來(lái)接收來(lái)自IR0~I(xiàn)R7上的中斷請(qǐng)求信號(hào),并將IRR相應(yīng)位置位。外設(shè)產(chǎn)生中斷請(qǐng)求信號(hào)的方式有邊沿觸發(fā)方式和電平觸發(fā)方式,用戶可根據(jù)需要通過(guò)編程進(jìn)行設(shè)置。

(2)中斷服務(wù)寄存器ISR(InterruptServiceRegister)。ISR是一個(gè)8位寄存器,用來(lái)存放當(dāng)前正在處理的中斷請(qǐng)求。在中斷嵌套方式下,可以將其內(nèi)容與新進(jìn)入的中斷請(qǐng)求進(jìn)行優(yōu)先級(jí)比較,從而決定是否進(jìn)行嵌套。

(3)中斷屏蔽寄存器IMR(InterruptMaskRegister)。

IMR是8位寄存器,用來(lái)存放中斷屏蔽字,可由用戶通過(guò)編程進(jìn)行設(shè)置。當(dāng)IMR的第i位置位時(shí),來(lái)自IRi的中斷請(qǐng)求被屏蔽了,從而禁止來(lái)自IRi的中斷。因此用戶設(shè)置IMR的各位后,可以改變系統(tǒng)原來(lái)的中斷優(yōu)先級(jí)。

(4)中斷優(yōu)先權(quán)判斷器。在中斷響應(yīng)期間,可以根據(jù)控制邏輯規(guī)定的優(yōu)先權(quán)級(jí)別和IMR的內(nèi)容,把IRR中提出中斷的優(yōu)先權(quán)最高的中斷請(qǐng)求位送ISR。

(5)數(shù)據(jù)總線緩沖器。數(shù)據(jù)總線緩沖器是一個(gè)8位三態(tài)雙向緩沖器,是8259A與局部總線的接口。微處理器通過(guò)它向8259A傳送命令字,控制8259A的工作模式,同時(shí)也接收8259A傳送的工作信息及中斷向量。

(6)控制邏輯。在8259A的控制邏輯電路中,有一組初始化命令寄存器(ICW1~I(xiàn)CW4)和一組操作命令字寄存器(OCW1~OCW3),這7個(gè)寄存器可由用戶根據(jù)需要通過(guò)編程進(jìn)行設(shè)置,控制邏輯電路可以根據(jù)程序來(lái)管理8259A的全部工作。

(7)讀/寫控制邏輯。讀/寫控制邏輯電路在四個(gè)輸入信號(hào)、

、

A0的控制下,控制著8259A的數(shù)據(jù)總線緩沖器之間的信息傳送,控制邏輯如表所示。它把微處理器送來(lái)的命令字傳送到8259A中相應(yīng)的命令寄存器中(包括初始化命令字ICW1、ICW2、ICW3、ICW4和操作控制字OCW1、OCW2、OCW3、OCW4),再把8259A中相應(yīng)的控制器/寄存器中的內(nèi)容(IRR、ISR、IMR)輸出到數(shù)據(jù)總線上。

(8)級(jí)連緩沖器/比較器。級(jí)連緩沖器/比較器用來(lái)存放和比較系統(tǒng)中全部8259A的標(biāo)記IDS。這個(gè)標(biāo)記是微處理器通過(guò)數(shù)據(jù)總線送入8259A的。所有的8259A通過(guò)級(jí)連線CAS0

~CAS2

三條I/O外線實(shí)現(xiàn)互連。其中必須有一個(gè)8259A為主片,其余的8259A為從片。主片通過(guò)CAS0~CAS2輸出標(biāo)記信息,而從片通過(guò)這三條線輸入標(biāo)記信息,并與自己原有的標(biāo)記進(jìn)行比較,如果相同則該從片被主片選中,它就在中斷響應(yīng)周期把自己的中斷向量送到數(shù)據(jù)總線上。8259A中斷響應(yīng)過(guò)程

(1)外部設(shè)備在中斷請(qǐng)求輸入線(IR7~

IR0)上發(fā)了中斷請(qǐng)求,使中斷請(qǐng)求寄存器IRR的相應(yīng)位置位。(2)IRR的內(nèi)容與IMR的內(nèi)容相“與”,結(jié)果送給優(yōu)先級(jí)分析器。中斷優(yōu)先級(jí)分析器把優(yōu)先級(jí)最高的中斷請(qǐng)求送到控制電路。(3)控制電路將接收到的中斷請(qǐng)求向CPU輸出INT信號(hào)。(4)若CPU是處在開(kāi)中斷狀態(tài),則在當(dāng)前指令執(zhí)行完以后,接收到INT信號(hào),輸出一個(gè)中斷響應(yīng)脈沖,進(jìn)入第一個(gè)中斷響應(yīng)周期。(5)8259A的腳上收到脈沖信號(hào),就將最高優(yōu)先級(jí)所對(duì)應(yīng)的IRR位清除,并將對(duì)應(yīng)的ISR位置位。(6)CPU啟動(dòng)第二個(gè)中斷響應(yīng)周期,輸出另一個(gè)脈沖,在這個(gè)周期8259A向數(shù)據(jù)總線輸出一個(gè)中斷向量碼。(7)CPU讀取該中斷向量碼,把它乘以4,得到中斷服務(wù)程序入口地址,轉(zhuǎn)入該中斷服務(wù)程序。這樣一個(gè)中斷響應(yīng)周期就完成了。

7.4.38259A的中斷管理方式

8259A具有非常靈活的中斷管理方式,可滿足用戶各種不同要求,并且這些工作方式都可以通過(guò)編程來(lái)設(shè)置。

1.8259A的編程結(jié)構(gòu)

2.優(yōu)先級(jí)設(shè)置方式按照優(yōu)先權(quán)設(shè)置方法來(lái)分,8259A有以下兩種工作方式:(1)全嵌套方式。普通全嵌套方式是8259A最常用的工作方式,簡(jiǎn)稱為全嵌套方式。該方式下中斷優(yōu)先權(quán)是固定的,即IR0優(yōu)先權(quán)最高,IR7優(yōu)先權(quán)最低。當(dāng)CPU響應(yīng)中斷時(shí),8259A就把申請(qǐng)中斷的優(yōu)先權(quán)最高的中斷源在ISR中的相應(yīng)位置“1”,而且把它的中斷類型碼送到數(shù)據(jù)總線上。在此中斷源的中斷服務(wù)程序完成之前,與它同級(jí)或優(yōu)先權(quán)更低的中斷源的申請(qǐng)就被屏蔽,只有優(yōu)先權(quán)比它高的中斷源的申請(qǐng)才是允許的(當(dāng)然,CPU是否響應(yīng)取決于CPU是否處在開(kāi)中斷狀態(tài))。

(2)特殊全嵌套方式。特殊全嵌套方式和普通全嵌套方式只有一點(diǎn)不同:在特殊全嵌套方式下,當(dāng)處理某一級(jí)中斷時(shí),如果有同級(jí)的中斷請(qǐng)求,那么也會(huì)給予響應(yīng),從而實(shí)現(xiàn)一種對(duì)同級(jí)中斷請(qǐng)求的特殊嵌套。特殊全嵌套方式一般用在8259A級(jí)連系統(tǒng)中。在這種情況下,主片8259A編程為特殊全嵌套方式。這樣,當(dāng)來(lái)自某一從片的中斷請(qǐng)求正在處理時(shí),一方面,和普通全嵌套方式一樣,對(duì)來(lái)自優(yōu)先級(jí)較高的主片其他引腳上的中斷請(qǐng)求進(jìn)行開(kāi)放;另一方面,對(duì)來(lái)自同一從片的較高優(yōu)先級(jí)請(qǐng)求也會(huì)開(kāi)放。在中斷處理過(guò)程中允許被更高優(yōu)先級(jí)的事件所中斷稱為中斷嵌套。8259A有兩種中斷嵌套方式:普通全嵌套方式(默認(rèn)方式)

一中斷正被處理時(shí),只有更高優(yōu)先級(jí)的事件可以打斷當(dāng)前的中斷處理過(guò)程而被服務(wù)。特殊全嵌套方式

一中斷正被處理時(shí),允許同級(jí)或更高優(yōu)先級(jí)的事件可以打斷當(dāng)前的中斷處理過(guò)程而被服務(wù)。注:特殊全嵌套僅用于多個(gè)8259A級(jí)連時(shí)的主8259A,而不能用于從屬8259A或單8259A系統(tǒng)。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7普通全嵌套方式:從片的INT被主片封鎖,故更高級(jí)別的IR0-IR2中斷也無(wú)法得到響應(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

(3)優(yōu)先權(quán)自動(dòng)循環(huán)方式。在優(yōu)先權(quán)自動(dòng)循環(huán)方式中,優(yōu)先級(jí)隊(duì)列是在變化的。一個(gè)設(shè)備受到中斷服務(wù)以后,它的優(yōu)先級(jí)自動(dòng)降為最低,原來(lái)比它低一級(jí)的中斷則為最高級(jí),依次排列。如初始優(yōu)先級(jí)隊(duì)列規(guī)定為IR0、IR1、IR2、…、IR7。此時(shí),若IR4請(qǐng)求中斷,則處理IR4,在IR4被服務(wù)以后,IR4自動(dòng)左循環(huán)到最低優(yōu)先級(jí),IR5成為最高優(yōu)先級(jí),這時(shí)中斷源的優(yōu)先級(jí)依次為IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。這種方式一般用在系統(tǒng)中多個(gè)中斷源優(yōu)先級(jí)相同的場(chǎng)合。

(4)優(yōu)先權(quán)特殊循環(huán)方式。優(yōu)先權(quán)特殊循環(huán)方式與優(yōu)先權(quán)自動(dòng)循環(huán)方式只有一點(diǎn)不同:在優(yōu)先權(quán)特殊循環(huán)方式中,可以編程寫OCW2來(lái)設(shè)置當(dāng)前的中斷優(yōu)先級(jí)順序。例如,確定IR5為最低優(yōu)先級(jí),那么當(dāng)前的優(yōu)先級(jí)順序?yàn)镮R6、IR7、IR0、…、IR5。兩類優(yōu)先級(jí)控制方式:固定優(yōu)先級(jí)和循環(huán)優(yōu)先級(jí)固定優(yōu)先級(jí)方式所有中斷請(qǐng)求IRi的中斷優(yōu)先級(jí)固定不變優(yōu)先級(jí)排列順序可編程改變加電后8259A的默認(rèn)方式,默認(rèn)優(yōu)先級(jí)順序從高到低為IR0~I(xiàn)R7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低級(jí)最高級(jí)最高級(jí)最低級(jí)優(yōu)先級(jí)IR7IR6IR5IR4IR3IR2IR1IR0默認(rèn)優(yōu)先級(jí)優(yōu)先級(jí)可編程改變優(yōu)先級(jí)循環(huán)方式

中斷源輪流處于最高優(yōu)先級(jí),即自動(dòng)中斷優(yōu)先級(jí)循環(huán)初始優(yōu)先級(jí)順序可用編程改變某中斷請(qǐng)求IRi被處理后,其優(yōu)先級(jí)別自動(dòng)降為最低,原來(lái)比它低一級(jí)的中斷上升為最高級(jí)

IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低級(jí)最高級(jí)最高級(jí)最低級(jí)ISR內(nèi)容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服務(wù)結(jié)束以前0101000001000000IR4的服務(wù)結(jié)束以后ISRi

3.中斷結(jié)束方式當(dāng)一個(gè)中斷請(qǐng)求得到響應(yīng)時(shí),8259A都會(huì)將中斷服務(wù)寄存器ISR中相應(yīng)位置“1”,為以后中斷優(yōu)先權(quán)電路的工作提供依據(jù)。當(dāng)中斷服務(wù)程序結(jié)束時(shí),必須使該ISR位清零;否則,8259A的中斷控制功能就會(huì)不正常。這個(gè)使ISR位復(fù)位的動(dòng)作就是中斷結(jié)束處理。注意,這里的中斷結(jié)束是指8259A結(jié)束中斷的處理,而不是CPU結(jié)束執(zhí)行中斷服務(wù)程序。

8259A分自動(dòng)中斷結(jié)束方式和非自動(dòng)中斷結(jié)束方式,而非自動(dòng)中斷結(jié)束方式又分為普通(或稱一般、正常)中斷結(jié)束方式和特殊中斷結(jié)束方式。

(1)普通EOI結(jié)束方式。這種方式配合全嵌套優(yōu)先權(quán)工作方式使用。當(dāng)CPU用輸出指令向8259A發(fā)出普通中斷結(jié)束EOI時(shí),8259A就會(huì)把ISR中已置位的最高位復(fù)位,因?yàn)樵谌短追绞街校?的最高ISR位對(duì)應(yīng)了最后一次被響應(yīng)和被處理的中斷,也就是當(dāng)前正在處理的中斷,所以,最高ISR位復(fù)位相當(dāng)于結(jié)束了當(dāng)前正在處理的中斷。

(2)特殊中斷結(jié)束方式(SEOI)。

在非全嵌套方式下,由于中斷優(yōu)先級(jí)不斷改變,無(wú)法確知當(dāng)前正在處理的是哪級(jí)中斷,這時(shí)就要采用特殊中斷結(jié)束方式。采用這種方式反映在程序中就是要發(fā)一條特殊中斷結(jié)束命令,在這個(gè)命令中指出了要清除哪個(gè)ISR位。不管是普通中斷結(jié)束方式,還是特殊中斷結(jié)束方式,對(duì)于級(jí)連系統(tǒng)的從片在一個(gè)中斷服務(wù)程序結(jié)束時(shí),都必須發(fā)兩次中斷結(jié)束命令,一次是對(duì)主片發(fā)送的,一次則是對(duì)從片發(fā)送的。

(3)自動(dòng)中斷結(jié)束方式(AEOI)。

若采用該方式,則在第二個(gè)中斷響應(yīng)周期信號(hào)的后沿,8259A將自動(dòng)把中斷服務(wù)寄存器ISR中的對(duì)應(yīng)位清除。這樣,盡管系統(tǒng)正在為某個(gè)設(shè)備進(jìn)行中斷服務(wù),但對(duì)8259A來(lái)說(shuō),中斷服務(wù)寄存器中卻沒(méi)有對(duì)應(yīng)位作指示,所以,就好像已經(jīng)結(jié)束了中斷服務(wù)一樣。這種最簡(jiǎn)單的中斷結(jié)束方式,只能用于不要求中斷嵌套的情況。

用于全嵌套方式普通EOI:由CPU發(fā)出正常EOI命令,該EOI命令使ISRi=1的位中優(yōu)先級(jí)最高的那一位復(fù)位。

用于特殊屏蔽方式特殊EOI:由CPU發(fā)出一條SEOI命令,該EOI命令中指出了所要復(fù)位的ISR的位號(hào)。

自動(dòng)EOI自動(dòng)EOI:在第2個(gè)INTA結(jié)束時(shí),由8259A使ISRi自動(dòng)復(fù)位;因不保留當(dāng)前正在服務(wù)的中斷的狀態(tài),故AEOI不能用于中斷嵌套方式4.循環(huán)優(yōu)先級(jí)的循環(huán)方法(已講)

5.中斷源屏蔽方式

8259A的8個(gè)中斷請(qǐng)求都可根據(jù)需要單獨(dú)屏蔽,屏蔽是通過(guò)編程使得屏蔽寄存器IMR相應(yīng)位清“0”或置“1”,從而允許或禁止相應(yīng)中斷。8259A有兩種屏蔽方式。

(1)普通屏蔽方式。普通屏蔽方式中,將IMR某位置“1”,則它對(duì)應(yīng)的中斷就被屏蔽,從而使這個(gè)中斷請(qǐng)求不能從8259A送到CPU。如果該位清“0”,則允許該級(jí)中斷。

(2)特殊屏蔽方式。有些情況下,希望一個(gè)中斷服務(wù)程序能動(dòng)態(tài)地改變系統(tǒng)的優(yōu)先權(quán)結(jié)構(gòu)。例如,在執(zhí)行中斷服務(wù)程序某一部分時(shí),希望禁止較低級(jí)的中斷請(qǐng)求;但在執(zhí)行中斷服務(wù)程序的另一部分時(shí),又希望能夠開(kāi)放比本身的優(yōu)先級(jí)低的中斷。為此,在設(shè)置了特殊屏蔽方式后,再編程使IMR某位置位,就會(huì)同時(shí)使ISR的對(duì)應(yīng)位復(fù)位。這樣,就不只是屏蔽當(dāng)前正在處理的這級(jí)中斷,而且還真正開(kāi)放了其他級(jí)別較低的中斷。當(dāng)然未被屏蔽的更高級(jí)中斷也可以得到響應(yīng)。

6.中斷請(qǐng)求引入方式外設(shè)的中斷請(qǐng)求信號(hào)從8259A的引腳IRn引入,但根據(jù)實(shí)際工作需要,8259A的中斷觸發(fā)方式可分成如下3種:

(1)邊沿觸發(fā)方式。在邊沿觸發(fā)方式下,8259A的引腳IRn上出現(xiàn)上升沿,表示有中斷請(qǐng)求,高電平不表示有中斷請(qǐng)求。

(2)電平觸發(fā)方式。在電平觸發(fā)方式下,8259A的引腳IRn上出現(xiàn)高電平,表示有中斷請(qǐng)求。這種方式下,應(yīng)注意及時(shí)撤除高電平,否則可能引起不應(yīng)該有的第二次中斷。無(wú)論是邊沿觸發(fā)還是電平觸發(fā),中斷請(qǐng)求信號(hào)IR都應(yīng)維持足夠的寬度。即在第一個(gè)中斷響應(yīng)信號(hào)結(jié)束之前,IR都必須保持高電平。

(3)中斷查詢方式(見(jiàn)書)優(yōu)先級(jí)方式選擇普通全嵌套方式:固定優(yōu)先級(jí),IR0最高,IR7最低。特殊全嵌套:與a)基本相同,響應(yīng)同級(jí)中斷請(qǐng)求優(yōu)先級(jí)自動(dòng)循環(huán):某級(jí)被響應(yīng)后,降為最低。如IR4被響應(yīng)后,優(yōu)先級(jí)順序變?yōu)椋篒R5,IR6,IR7,IR0,IR1,IR2,IR3,IR4。優(yōu)先級(jí)特殊循環(huán)方式:編程指定最低優(yōu)先級(jí),其它同C)。屏蔽中斷方式選擇普通屏蔽方式:對(duì)應(yīng)IMR為1位的中斷請(qǐng)求將被屏蔽。特殊屏蔽方式:執(zhí)行中斷程序時(shí),動(dòng)態(tài)改變優(yōu)先級(jí)結(jié)構(gòu),屏蔽本級(jí),允許較低級(jí)請(qǐng)求被服務(wù)。中斷結(jié)束方式:ISRn被清0,中斷結(jié)束。自動(dòng)結(jié)束方式:8259A收到INTA后自動(dòng)把ISRn位清0。普通結(jié)束方式:8086發(fā)命令清除ISR中級(jí)最高的位,結(jié)束中斷。特殊結(jié)束方式:將ISR中指定位清0。中斷請(qǐng)求引入方式邊沿觸發(fā)方式。電平觸發(fā)方式。中斷查詢方式

7.4.48259A的編程方法

8259A根據(jù)接收到的微處理器的命令進(jìn)行工作。微處理器的命令分為兩類:一類是初始化命令,稱為初始化命令字(ICW)。8259A在進(jìn)入操作之前,必須由初始化命令字來(lái)使它處于初始狀態(tài)。另一類是操作命令,稱為操作控制字(OCW)。在對(duì)8259A進(jìn)行初始化之后,用這些控制字來(lái)控制8259A執(zhí)行不同的操作方式。操作控制字可在初始化后的任何時(shí)刻寫入8259A。

1.初始化命令字

8259A有4個(gè)初始化命令字ICW1~I(xiàn)CW4,它們按照一定的順序送入,設(shè)置8259A的初始狀態(tài)。無(wú)論何時(shí),當(dāng)微處理器向8259A發(fā)送一條A0=0和D4=1的命令時(shí),這條命令就譯碼為ICW1。它啟動(dòng)8259A的初始化過(guò)程產(chǎn)生下列動(dòng)作:清除IMR,把最低優(yōu)先級(jí)分配給IR7,把最高優(yōu)先級(jí)分配給IR0,將從設(shè)備標(biāo)志ID置成7,清除特殊屏蔽方式,設(shè)置讀IRR方式。各初始化命令字的功能如下:

(1)ICW1(初始化字)。ICW1稱為芯片控制初始化命令字。ICW1的各位定義如下:

ICW1——初始化字LTIM:觸發(fā)方式=1高電平觸發(fā)=0上升沿觸發(fā)SNGL:級(jí)連控制=1單片=0級(jí)連IC4:ICW4控制=1要寫ICW4=0不寫ICW4(默認(rèn)ICW4為全0)A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x

x

x 1 LTIM xSNGL IC4

D7、D6、D5、D2在8086/8088系統(tǒng)中不用,可為1,也可為0。它們?cè)?080/8085系統(tǒng)中使用。

D4=1和A0=0是ICW1的標(biāo)志。在初始化命令字設(shè)置過(guò)程結(jié)束后,當(dāng)A0=0時(shí),D4=0表示操作控制字OCW2或OCW3。

LTIM用來(lái)設(shè)定中斷請(qǐng)求信號(hào)的形式。如果LTIM=0,則表示中斷請(qǐng)求為邊沿觸發(fā)方式;如果LTIM=1,則表示中斷請(qǐng)求為電平觸發(fā)方式。

SNGL用來(lái)指出本片8259A是否與其他8259A處于級(jí)連狀態(tài)。當(dāng)系統(tǒng)中只有一片8259A時(shí),SNGL為1;當(dāng)系統(tǒng)中有多個(gè)8259A時(shí),SNGL為0。

IC4用來(lái)指出初始化過(guò)程中是否設(shè)置ICW4。若IC4為0,表示不用ICW4;若IC4為1,表示用ICW4。在8086/8088系統(tǒng)中,ICW4是必須使用的,此時(shí)IC4必定為1。

(2)ICW2(中斷類型碼字)。

ICW2是設(shè)置中斷類型碼的初始化命令字。ICW2的各位定義如下:

A0D7D6D5D4D3D2D1D01T7

T6

T5T4

T3

0

00編程時(shí)用ICW2設(shè)置中斷類型碼高5位T7~T3,低3位插入IR的編碼。例如:若ICW2命令字為48H,則IR0的中斷向量碼為48H,IR7的中斷向量碼為4FH,等等。

(3)ICW3(級(jí)連控制字)。

ICW3是標(biāo)志主片/從片的初始化命令字。只有在一個(gè)系統(tǒng)中包含多片8259A時(shí),ICW3才有意義。ICW3——級(jí)連控制字

主片的級(jí)聯(lián)控制字

Si=1對(duì)應(yīng)IRi線上連接了從片

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7S6 S5 S4 S3

S2

S1

S0從片的級(jí)聯(lián)控制字

ID2~I(xiàn)D0

標(biāo)識(shí)碼,說(shuō)明本從片連接到主片的哪個(gè)IR引腳上。000~111分別對(duì)應(yīng)IR0~I(xiàn)R7。表列出了從設(shè)備標(biāo)志的編碼。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 00 0 0 0

ID2 ID1 ID0表6-3從設(shè)備標(biāo)志編碼

ICW3必須與主從片的連接關(guān)系一致:

例如,主片的IR4與從片的INT線連接,則主片的ICW3=10H,從片的ICW3=04H。中斷響應(yīng)時(shí),主片通過(guò)級(jí)連線CAS2-CAS0送出被允許中斷的從片標(biāo)識(shí)碼,各從片用自己的ICW3與CAS2-CAS0比較,二者一致的從片才可發(fā)送中斷向量碼。(4)ICW4(方式控制初始化命令字)

SFNM:特殊全嵌套1特殊全嵌套方式0普通全嵌套方式AEOI:自動(dòng)EOI1自動(dòng)EOI方式0非自動(dòng)EOI方式A0 D7 D6 D5D4 D3 D2 D1 D0

1 00 0SFNM BUF M/S AEOI 1BUF:緩沖方式

M/S:主/從緩沖選擇BUFM/S11緩沖方式/主8259A10緩沖方式/從8259A0x非緩沖方式/正常

ICW4為方式控制初始化命令字。只有在ICW1的D0位為1時(shí),才有必要設(shè)置ICW4,否則不必設(shè)置。

D7~D5位總是為0,用來(lái)作為ICW4的標(biāo)識(shí)碼。若D4(SFNM)為1,則為特殊的全嵌套方式。在采用特殊全嵌套方式的系統(tǒng)中,一般都使用了多片8259A。

若D3(BUF)為1,則為緩沖方式。在緩沖方式下,8259A通過(guò)總線驅(qū)動(dòng)器和數(shù)據(jù)總線相連。此時(shí),引腳作為輸出端來(lái)使用。在8259A和CPU之間傳輸數(shù)據(jù)時(shí),啟動(dòng)數(shù)據(jù)總線驅(qū)動(dòng)器。如果8259A不通過(guò)總線驅(qū)動(dòng)器和數(shù)據(jù)總線相連,則BUF應(yīng)該設(shè)置為0。在單片的8259A系統(tǒng)中,接高電平。D2(M/S)在緩沖方式下用來(lái)表示本片為從片還是主片。即BUF=1時(shí),如果M/S=1,則表示本片為主片;如果M/S=0,則表示本片為從片。當(dāng)BUF=0時(shí),則M/S不起作用,可為0可為1。

D1(AEOI)指定是否為中斷自動(dòng)結(jié)束方式。AEOI=1,則設(shè)置中斷自動(dòng)結(jié)束方式;AEOI=0時(shí),不用中斷自動(dòng)結(jié)束方式,這時(shí)必須在中斷服務(wù)程序中使用EOI,使ISR中最高的優(yōu)先權(quán)的位復(fù)位。

D0(μPM)指定微處理器的類型。μPM=0時(shí),表示8259A工作于8080/8085系統(tǒng)中;μPM=1時(shí),表示8259A工作于8086/8088系統(tǒng)中。

初始化命令字(InitializationCommandWord,ICW)ICW1:硬件設(shè)置

LTIM=1中斷請(qǐng)求電平觸發(fā),LTIM=0中斷請(qǐng)求邊沿觸發(fā)。

SNGL=1單片8259A系統(tǒng),SNGL=0多片8259A系統(tǒng)。ICW2:中斷類型碼設(shè)定,最低3位由IRn的n值定。ICW3:在多片8259A系統(tǒng)中依主片、從片而定。主片:有1位其IR連有從片用8位。從片:INT連到主片IR哪端,用最后3位。ICW4:工作方式設(shè)定

SFNM=1特殊全嵌套、SFNM=0普通全嵌套。

AEOI=1中斷自動(dòng)結(jié)束、AEOI=0普通中斷結(jié)束。

BUF=0,DB無(wú)緩沖,SP/EN。

BUF=1,DB有緩沖,主從片軟件定。

M/S=1為主片、M/B=0為從片。初始化命令字的編程順序在8259A進(jìn)入正常工作之前,必須將系統(tǒng)中的每片8259A進(jìn)行初始化。初始化命令字用來(lái)設(shè)定8259A的初始狀態(tài)。在初始化的過(guò)程中,ICW1和ICW2總是要出現(xiàn)的。ICW3和ICW4是否使用,由ICW1的相應(yīng)位決定。當(dāng)SNGL=0時(shí),需要ICW3分別用作主片或從片的8259A,它們的格式是不同的。ICW1的IC4=1時(shí),需要ICW4,對(duì)于8086/8088系統(tǒng),ICW4總是需要的。CPU向8259A寫入命令時(shí),A0=0和D4=1標(biāo)志著寫入ICW1,初始化過(guò)程開(kāi)始。隨后寫入的初始化命令字由A0=1作為標(biāo)志。初始化過(guò)程結(jié)束后,才能寫入操作控制字。初始化流程圖A000LTIMSNGLA7A6A5IC41D7D6D5D2D1D0D4D3ICW1(chipcontrol)用于80851T7/T6/T5T4T3000ICW2(type)SNGL=1?1S5S4S6S7S3S2/ID2S1/ID1S0/ID0ICW3(slavecontrol)YNIC4=1?N1SFNM00BUFM/SAEOIuPM0ICW4(modecontrol)可中斷8259A初始化流程

2.8259A的操作命令字在對(duì)8259A用初始化命令字進(jìn)行初始化后,就進(jìn)入工作狀態(tài),準(zhǔn)備好接收IR輸入的中斷請(qǐng)求信號(hào)。在8259A工作期間,可通過(guò)操作命令字來(lái)使它按不同的方式進(jìn)行操作。

操作命令字是在應(yīng)用程序內(nèi)部設(shè)置的。操作命令字共有三個(gè),可以獨(dú)立使用。

(1)OCW1(屏蔽控制字)。OCW1稱為中斷屏蔽操作命令字。其格式如下:A0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0

Mi=1中斷請(qǐng)求線IRi被屏蔽(不允許中斷)=0允許該IRi中斷OCW1將寫入IMR寄存器。A0=1時(shí)讀OCW1可讀出設(shè)置的IMR內(nèi)容。(2)OCW2(中斷結(jié)束和優(yōu)先權(quán)循環(huán)控制字)。L2~L0:優(yōu)先級(jí)編碼R:優(yōu)先級(jí)自動(dòng)循環(huán)SL:指定優(yōu)先級(jí)EOI:結(jié)束中斷命令

RSLEOI001普通EOI命令(NSEOI),全嵌套(包括特殊全嵌套)方式011特殊EOI命令(SEOI),按L2-L0編碼復(fù)位ISR101普通EOI命令,優(yōu)先級(jí)自動(dòng)循環(huán)100自動(dòng)EOI,設(shè)置優(yōu)先級(jí)自動(dòng)循環(huán)000自動(dòng)EOI,取消優(yōu)先級(jí)自動(dòng)循環(huán)(固定優(yōu)先級(jí))111特殊EOI命令,按L2-L0編碼循環(huán)優(yōu)先級(jí)(L2-L0設(shè)為最低優(yōu)先級(jí))110按L2-L0編碼循環(huán)優(yōu)先級(jí)(L2-L0設(shè)為最低優(yōu)先級(jí))

A0 D7 D6 D5 D4 D3 D2 D1 D0

0 RSL EOI 0 0

L2

L1

L0與這些操作有關(guān)的命令和方式控制大多以組合格式使用OCW2。命令或方式的選擇應(yīng)當(dāng)以組合格式來(lái)設(shè)置,而不是按位設(shè)置。

R是優(yōu)先級(jí)循環(huán)控制位。R=1為循環(huán)優(yōu)先權(quán),R=0為固定優(yōu)先權(quán)。

SL用來(lái)選擇指定的IR級(jí)別位。決定OCW2中的L2、L1

、L0是否有效。若SL=1,則L2、L1、L0有效;若SL=0,則L2、L1

、L0無(wú)效。

EOI是中斷結(jié)束命令位。在非自動(dòng)中斷結(jié)束命令的情況下,EOI=1表示中斷結(jié)束命令,它使ISR中最高優(yōu)先權(quán)的位復(fù)位;EOI=0則不起作用。

中斷結(jié)束-清除循環(huán)AEOL方式-特殊循環(huán)L2、L1

、L0用來(lái)指定操作起作用的IR級(jí)別碼。凡SL=1的指令,在L2、L1

、L0所指定的IR級(jí)別編碼上都起作用。SL=0時(shí),不使用L2、L1

、L0位。L2、L1

、L0的編碼與作用的IR級(jí)別如上表所示。

(3)OCW3(屏蔽和讀狀態(tài)控制字)。ESMM:

允許使能特殊屏蔽方式SMM:

特殊屏蔽方式ESMMSMM1特殊屏蔽方式設(shè)定10特殊屏蔽方式清除(普通屏蔽方式)0x無(wú)效P(Polling):=1查詢方式

=0非查詢方式A0 D7 D6 D5 D4 D3 D2 D1 D0

0 0ESMM SMM 0 1 PRRRISRR:讀寄存器RIS:ISR/IRR選擇RRRIS11讀ISR10讀IRR0x無(wú)效

OCW3的功能有三個(gè)方面:一是設(shè)置和撤消特殊屏蔽方式;二是設(shè)置中斷查詢方式;三是用來(lái)設(shè)置對(duì)8259A內(nèi)部寄存器的讀出命令。

ESMM是特殊屏蔽模式允許位,是允許或禁止SMM位起作用的控制位。當(dāng)ESMM=1時(shí),允許SMM位起作用;當(dāng)ESMM=0時(shí),禁止SMM位起作用。

SMM是設(shè)置特殊屏蔽方式控制位。當(dāng)ESMM=1和SMM=0時(shí),選擇特殊屏蔽方式;當(dāng)ESMM=1和SMM=1時(shí),清除特殊屏蔽方式,恢復(fù)普通屏蔽方式;當(dāng)ESMM=0時(shí),SMM位不起作用。

P是查詢命令位。當(dāng)P=1時(shí),8259A發(fā)送查詢命令;當(dāng)P=0時(shí),不處于查詢方式。當(dāng)ESMM=0時(shí),這一位不起作用。RR是讀寄存器命令位。當(dāng)RR=1時(shí),允許讀IRR或ISR;當(dāng)RR=0時(shí),禁止讀這兩個(gè)寄存器。

RIS:讀IRR或ISR選擇位。如果RR=1和RIS=1,則允許讀中斷服務(wù)寄存器;如果RR=1和RIS=0,則允許讀中斷請(qǐng)求寄存器IRR;當(dāng)RR=0,則RIS位無(wú)效。查詢方式允許8259A不工作于中斷方式,而是以查詢方式工作。CPU先寫一個(gè)D2=1的OCW3,再對(duì)同一地址讀入,即可得到如下?tīng)顟B(tài)字節(jié):

IxxxxR2R1R0

I=1表示有中斷請(qǐng)求,中斷請(qǐng)求號(hào)為R2-R0

此查詢步驟可反復(fù)執(zhí)行,以響應(yīng)多個(gè)同時(shí)發(fā)生的中斷。

讀IRR/ISR:寫入

溫馨提示

  • 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)論