微機(jī)原理-中斷技術(shù)-課件_第1頁
微機(jī)原理-中斷技術(shù)-課件_第2頁
微機(jī)原理-中斷技術(shù)-課件_第3頁
微機(jī)原理-中斷技術(shù)-課件_第4頁
微機(jī)原理-中斷技術(shù)-課件_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理--中斷技術(shù)1微機(jī)原理--中斷技術(shù)1第十章中斷技術(shù)第十章中斷技術(shù)精品資料精品資料你怎么稱呼老師?如果老師最后沒有總結(jié)一節(jié)課的重點(diǎn)的難點(diǎn),你是否會(huì)認(rèn)為老師的教學(xué)方法需要改進(jìn)?你所經(jīng)歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風(fēng)雨狂,只怕先生罵我笨,沒有學(xué)問無顏見爹娘……”“太陽當(dāng)空照,花兒對我笑,小鳥說早早早……”微機(jī)原理--中斷技術(shù)-ppt課件10.1中斷和中斷系統(tǒng)早期的計(jì)算機(jī)沒有中斷功能,CPU和外設(shè)之間的信息交換采用的是查詢方式,CPU的大部分時(shí)間都浪費(fèi)在反復(fù)查詢上。這就妨礙了計(jì)算機(jī)高速性能的充分發(fā)揮,產(chǎn)生了快速的CPU與慢速的外設(shè)之間的矛盾,這也是計(jì)算機(jī)在發(fā)展過程中遇到的嚴(yán)重問題之一。為解決這個(gè)問題,一方面要提高外設(shè)的工作速度;另一方面引入了中斷。510.1中斷和中斷系統(tǒng)早期的計(jì)算機(jī)沒有中斷功能,所謂中斷,是指計(jì)算機(jī)在正常運(yùn)執(zhí)行的過程中,由于種種原因,使CPU暫時(shí)停止當(dāng)前程序的執(zhí)行,而轉(zhuǎn)去處理臨時(shí)發(fā)生的事件,處理完畢后,再返回去繼續(xù)執(zhí)行暫停的程序。

使用中斷技術(shù),使得外部設(shè)備與CPU不再是串行工作,而是分時(shí)操作,從而大大提高了計(jì)算機(jī)的效率。

為了實(shí)現(xiàn)中斷功能而設(shè)置的各種硬件和軟件,統(tǒng)稱為中斷系統(tǒng)。1.1中斷的概念6所謂中斷,是指計(jì)算機(jī)在正常運(yùn)執(zhí)行的過程中,由于種種(1)一般的輸入、輸出設(shè)備。如鍵盤、打印機(jī)等。(2)數(shù)據(jù)通道中斷源。如磁帶等。(3)定時(shí)時(shí)鐘。(4)故障源。(5)為調(diào)試程序而設(shè)置的中斷源。1.2中斷源7(1)一般的輸入、輸出設(shè)備。如鍵盤、打印機(jī)等。(2)數(shù)據(jù)

1.實(shí)現(xiàn)中斷及返回。當(dāng)某一中斷源發(fā)出中斷申請時(shí),CPU能決定是否響應(yīng)這個(gè)中斷請求。當(dāng)CPU在執(zhí)行更緊急、更重要的工作時(shí),可以暫不響應(yīng)中斷;若允許響應(yīng)這個(gè)中斷請求,CPU必須在現(xiàn)行的指令執(zhí)行完后,把斷點(diǎn)處的IP和CS值(即下一條應(yīng)執(zhí)行的指令的地址),各個(gè)寄存器的內(nèi)容和標(biāo)志位的狀態(tài),推入堆棧保留下來,稱保護(hù)斷點(diǎn)和現(xiàn)場。當(dāng)中斷處理完后,再恢復(fù)被保留下來的各個(gè)寄存器和標(biāo)志位的狀態(tài)(稱為恢復(fù)現(xiàn)場)。1.3中斷系統(tǒng)的功能81.實(shí)現(xiàn)中斷及返回。當(dāng)某一中斷源發(fā)出中斷申請時(shí),

2.實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì)。

通常,在系統(tǒng)中有多個(gè)中斷源,會(huì)出現(xiàn)兩個(gè)或多個(gè)中斷源同時(shí)提出中斷請求的情況,這樣就必須要設(shè)計(jì)者事先根據(jù)輕重緩急給每個(gè)中斷源確定一個(gè)中斷級別,即優(yōu)先權(quán)。當(dāng)多個(gè)中斷源同時(shí)發(fā)出中斷申請時(shí),CPU能找到優(yōu)先權(quán)級別最高的中斷源,響應(yīng)它的中斷請求;在優(yōu)先權(quán)級別高的中斷源處理完了以后,再響應(yīng)級別較低的中斷源。92.實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì)。通常,在系統(tǒng)中有多個(gè)中斷源,

3.高級中斷源能中斷低級的中斷處理。

當(dāng)CPU響應(yīng)某一中斷請求,在進(jìn)行中斷處理時(shí)若有優(yōu)先權(quán)級別更高的中斷源發(fā)出中斷申請,則CPU要能中斷正在進(jìn)行的中斷服務(wù)程序,保留這個(gè)程序的斷點(diǎn)和現(xiàn)場(類似于子程序嵌套),響應(yīng)高級中斷,在高級中斷處理完以后,再繼續(xù)執(zhí)行被中斷的中斷服務(wù)程序。而當(dāng)發(fā)出新的中斷申請的中斷源的優(yōu)先級別與正在處理的中斷源同級或更低時(shí),CPU就先不響應(yīng)這個(gè)中斷申請,直至正在處理的中斷服務(wù)程序執(zhí)行完以后才去響應(yīng)這個(gè)新的中斷申請。103.高級中斷源能中斷低級的中斷處理。當(dāng)CPU響應(yīng)某CPU在現(xiàn)行指令結(jié)束后響應(yīng)中斷,即運(yùn)行到最后一個(gè)機(jī)器周期的最后一個(gè)T狀態(tài)時(shí),CPU才檢測INTR線。若發(fā)現(xiàn)有中斷請求,CPU就響應(yīng)中斷,轉(zhuǎn)入中斷響應(yīng)周期。在中斷響應(yīng)周期,CPU做以下幾件事:(1)關(guān)中斷。(2)保留斷點(diǎn)。(3)保護(hù)現(xiàn)場。(4)給出中斷入口地址,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。(5)恢復(fù)現(xiàn)場。(6)中斷返回。1.4CPU對外部可屏蔽中斷的響應(yīng)及中斷過程11CPU在現(xiàn)行指令結(jié)束后響應(yīng)中斷,即運(yùn)行到最后一個(gè)(1關(guān)中斷:在CPU響應(yīng)中斷后,發(fā)出中斷響應(yīng)信號的同時(shí),內(nèi)部自動(dòng)地關(guān)中斷。保留斷點(diǎn):CPU響應(yīng)中斷后把IP和CS推入堆棧保存,以備中斷處理完畢后,能返回被中斷程序。1.4CPU對中斷的響應(yīng)及中斷過程12關(guān)中斷:保留斷點(diǎn):1.4CPU對中斷的響應(yīng)及中斷過程12保護(hù)現(xiàn)場:為了使中斷處理程序不影響被中斷程序的運(yùn)行,故要把斷點(diǎn)處的有關(guān)的各個(gè)寄存器的內(nèi)容和標(biāo)志位的狀態(tài),推入堆棧保護(hù)起來。80x86是由軟件(即在中斷服務(wù)程序中)把要用到的寄存器的內(nèi)容用PUSH指令推入堆棧,而標(biāo)志位的狀態(tài)是在保留斷點(diǎn)的同時(shí)由硬件推入堆棧的。13保護(hù)現(xiàn)場:13給出中斷入口地址,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序:80x86是根據(jù)中斷源提供的中斷向量類型碼讀取中斷向量表得到中斷服務(wù)程序入口地址的。恢復(fù)現(xiàn)場:把所保存的各個(gè)內(nèi)部寄存器的內(nèi)容和標(biāo)志位的狀態(tài),從堆棧彈出,送回CPU中的原來位置。這個(gè)操作是用POP指令來完成的。

80x86的標(biāo)志位的狀態(tài)由硬件恢復(fù)。

14給出中斷入口地址,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序:恢復(fù)現(xiàn)場:14中斷返回:

在中斷服務(wù)程序的最后要安排一條中斷返回指令,將堆棧內(nèi)保存的(E)IP和CS值彈出,運(yùn)行就恢復(fù)到被中斷程序。80x86的中斷返回指令還將堆棧內(nèi)保存的標(biāo)志狀態(tài)彈出給標(biāo)志寄存器,使系統(tǒng)恢復(fù)中斷前的開中斷狀態(tài)。15中斷返回:1510.2可編程中斷控制器8259A10.2.18259A主要功能與結(jié)構(gòu)特點(diǎn)

1.主要功能:

①具有8級中斷優(yōu)先級控制,通過級連可擴(kuò)展至64級中斷優(yōu)先級控制;

②每一級中斷都可以屏蔽或允許;

③在中斷響應(yīng)總線周期,8259A可提供相應(yīng)的中斷類型碼;

④有多種中斷管理方式,可通過編程選擇。1610.2可編程中斷控制器8259A10.2.182592.內(nèi)部結(jié)構(gòu)

PR中斷服引腳信號172.內(nèi)部結(jié)構(gòu)PR中斷服引腳信號178位雙向三態(tài)緩沖器,是8259A與CPU之間數(shù)據(jù)接口。當(dāng)CPU對8259A進(jìn)行讀操作時(shí),數(shù)據(jù)總線緩沖器用來傳輸從8259A內(nèi)部讀至CPU的數(shù)據(jù)/狀態(tài)信息和中斷類型碼,寫操作時(shí)由CPU向8259A內(nèi)部寫入控制命令字。返回內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器188位雙向三態(tài)緩沖器,是8259A與CPU之間數(shù)據(jù)接口用于控制對8259A的讀、寫操作的控制信號有:RD、WR、CS、A0它們共同控制完成規(guī)定的操作。8259A芯片內(nèi)讀寫寄存器可寫的寄存器有:各種命令寄存器可讀的寄存器有:中斷請求寄存器IRR、 中斷服務(wù)寄存器ISR、 中斷屏蔽寄存器IMR、 狀態(tài)寄存器。返回內(nèi)部結(jié)構(gòu)讀/寫控制邏輯

19用于控制對8259A的讀、寫操作的控制信號有:返回內(nèi)部結(jié)構(gòu)讀多片8259A可級連使用,最多可以組成64級中斷優(yōu)先級控制,此時(shí)一片8259A作主片,另外1~8片作從片,主從片的CAS0~CAS2并接在一起,作為級連總線。在中斷響應(yīng)過程中,主片的CAS0~CAS2為輸出線,從片的CAS0~CAS2為輸入線。在第一個(gè)負(fù)脈沖結(jié)束時(shí),主片把被響應(yīng)的中斷請求的從片編碼送入CAS0~CAS2級連總線。從片接收后,將主片送來的編碼與自己的編碼相比較,若相同,表明從片被選中,則在第二個(gè)中斷響應(yīng)總線周期把中斷類型碼送至D7~D0,供CPU讀取。返回內(nèi)部結(jié)構(gòu)級連緩沖比較器

20多片8259A可級連使用,最多可以組成64級中斷優(yōu)先級控制,用于向8259A內(nèi)部其它部件發(fā)控制信號,外部向CPU發(fā)INT信號,接收CPU發(fā)來的信號,控制8259A進(jìn)入中斷服務(wù)狀態(tài)。控制邏輯是8259A全部功能的核心,包括一組方式控制字寄存器和一組操作命令字寄存器,以及相關(guān)的控制電路。返回內(nèi)部結(jié)構(gòu)控制電路

21用于向8259A內(nèi)部其它部件發(fā)控制信號,外部向CPU發(fā)INT中斷服務(wù)寄存器ISR

返回內(nèi)部結(jié)構(gòu)一個(gè)8位寄存器,用來記錄正在處理中的中斷請求。當(dāng)任何一級中斷被響應(yīng),CPU正在執(zhí)行它的中斷服務(wù)程序時(shí),ISR寄存器中相應(yīng)位置“1”,一直保持到該級中斷處理過程結(jié)束為止。包括尚未服務(wù)完畢而中途被別的中斷打斷了的所有中斷請求。多重中斷情況下,ISR寄存器中可有多位被同時(shí)置“1”。22中斷服務(wù)寄存器ISR返回內(nèi)部結(jié)構(gòu)一個(gè)8位寄存器,用來記錄正在用來識別各中斷請求信號的優(yōu)先級別。當(dāng)多個(gè)中斷請求信號同時(shí)產(chǎn)生時(shí),由判優(yōu)電路判定哪一個(gè)中斷請求具有最高優(yōu)先權(quán),若有中斷正在被服務(wù),則還需與ISR的當(dāng)前中斷服務(wù)優(yōu)先級相比較,以決定是否將8259A的中斷申請線INT上升為高電平。

返回內(nèi)部結(jié)構(gòu)優(yōu)先權(quán)判決電路PR23用來識別各中斷請求信號的優(yōu)先級別。當(dāng)多個(gè)中斷請求信號同時(shí)產(chǎn)生8位,每一位對應(yīng)一個(gè)I/O設(shè)備,用來記錄發(fā)生中斷請求的外設(shè)。當(dāng)某一外設(shè)(I/O設(shè)備)發(fā)出中斷請求信號IRQ時(shí),對應(yīng)位被置“1”。簡言之:用來存放要請求服務(wù)的所有中斷請求信號。返回內(nèi)部結(jié)構(gòu)中斷請求寄存器IRR248位,每一位對應(yīng)一個(gè)I/O設(shè)備,用來記錄發(fā)生中斷請求的外設(shè)。8位,對IRR起屏蔽作用,屏蔽位僅對對應(yīng)的中斷請求起作用。

返回內(nèi)部結(jié)構(gòu)中斷屏蔽寄存器IMR

258位,對IRR起屏蔽作用,屏蔽位僅對返回內(nèi)部3.8259A的芯片引腳CS*片選信號,輸入,低電平有效,當(dāng)CS*=0時(shí),8259A被選中。A0:片內(nèi)地址選擇輸入線,8259A有兩個(gè)I/O端口地址。RD*、WR*:讀、寫命令信號,輸入。

CPU從8259A讀狀態(tài)字/數(shù)據(jù)/中斷類型碼

CPU寫命令控制字到8259AD7~D0:8位雙向三態(tài)數(shù)據(jù)總線,傳送命令控制字、狀態(tài)字和中斷類型碼和數(shù)據(jù)。IR0~I(xiàn)R7:中斷請求輸入線,高電平有效。從IR0~I(xiàn)R7上輸入的中斷請求信號被命名為IRQ0~I(xiàn)RQ7。INT:中斷請求信號,輸出,高電平有效。INTA*:CPU發(fā)給8259A的中斷響應(yīng)信號,輸入,低電平有效。CAS0~CAS2:級連線,8259A單片使用時(shí)無效。采用級連方式時(shí),作為主片的8259A,它們是輸出線;作為從片的8259A,它們是輸入線。SP*/EN*:級連/允許緩沖信號,雙向,低電平有效。在緩沖方式中,EN*該引腳為輸出線,EN*有效控制數(shù)據(jù)總線緩沖器的發(fā)送,EN*無效控制數(shù)據(jù)總線緩沖器的接收;當(dāng)8259A工作于非緩沖方式時(shí),該引腳SP*為輸入線,當(dāng)SP*=1的是主片,SP*=0的是從片。Vcc、GND:+5V電源和地線。263.8259A的芯片引腳CS*片選信號,輸入,低電平有效272710.2.28259A芯片的工作方式一、8259A有2種中斷觸發(fā)方式可由軟件來定義。電平觸發(fā)方式:從IR7~I(xiàn)R0輸入的有效信號應(yīng)為高電平,而且必須保持有效到響應(yīng)它的第一個(gè)INTA信號的前沿,否則這個(gè)IRi信號有可能被丟失;但是也不允許IRi信號太長,如果在中斷服務(wù)寄存器ISR相應(yīng)位復(fù)位后該IRi信號還繼續(xù)有效,則8259A就可能重新響應(yīng)這一中斷請求而出現(xiàn)重復(fù)中斷現(xiàn)象。為避免這種情況產(chǎn)生,在ISR某一位被復(fù)位時(shí)應(yīng)將相應(yīng)的IRi信號置成無效。

2810.2.28259A芯片的工作方式一、8259A有邊沿觸發(fā)方式:當(dāng)8259A被定義為邊沿觸發(fā)方式時(shí),不會(huì)產(chǎn)生上述的丟失中斷請求的現(xiàn)象,這時(shí)當(dāng)IRi端上出現(xiàn)由低電平到高電平的正跳變時(shí),表示中斷請求信號有效,最好用負(fù)脈沖的后沿來實(shí)現(xiàn)。采用這種邊沿觸發(fā)方式不會(huì)出現(xiàn)重復(fù)中斷現(xiàn)象,但是也要求在響應(yīng)某中斷請求的第1個(gè)INTA信號有效前不要出現(xiàn)下一個(gè)中斷請求,否則有可能丟失前面一個(gè)中斷請求。29邊沿觸發(fā)方式:29不管是采用什么方式引入的中斷,在中斷響應(yīng)周期內(nèi)第2個(gè)INTA信號有效期間8259A應(yīng)將當(dāng)前被響應(yīng)的中斷類型碼n通過數(shù)據(jù)總線D7~D0傳送給CPU。如圖所示。由一片8259A引入的8級中斷請求的類型碼是連續(xù)的。它們在中斷入口地址表中的位置取決于由軟件定義的D7~D3位的狀態(tài),并由對8259A進(jìn)行初始化時(shí)寫入的相應(yīng)控制字來確定。例如,定義D7~D3=10001時(shí),則該8級中斷的類型碼將順序?yàn)?8H~8FH。8259A中斷類型碼的形成30不管是采用什么方式引入的中斷,在中斷響應(yīng)周期內(nèi)第2個(gè)INTA二、中斷管理方式完全嵌套方式自動(dòng)循環(huán)方式中斷屏蔽方式一般原則:只允許高級中斷打斷低級中斷而被優(yōu)先處理,不允許低級打斷高級或者同級中斷互相打斷。31二、中斷管理方式完全嵌套方式一般原則:31具有8級中斷的系統(tǒng)中,最大的中斷嵌套深度為832具有8級中斷的系統(tǒng)中,321.完全嵌套方式由IRi引入的中斷請求有固定的級別

IR0的級別最高,IR7的級別最低要求堆棧的容量要大6字節(jié)*8(2個(gè)字節(jié)的標(biāo)志寄存器和4個(gè)字節(jié)斷點(diǎn)地址*中斷嵌套深度為8)中斷結(jié)束方式 (1)普通EOI循環(huán)方式(單片) (2)特殊EOI循環(huán)方式(多片) (3)自動(dòng)EOI循環(huán)方式(有可能發(fā)生重復(fù)嵌套)331.完全嵌套方式由IRi引入的中斷請求有固定的級別33(1)普通EOI方式:當(dāng)任何一級中斷服務(wù)程序結(jié)束時(shí),只給8259A傳送一個(gè)EOI結(jié)束命令,8259A收到這個(gè)EOI命令后,自動(dòng)將ISR寄存器中級別最高的置“1”位清“0”。這種結(jié)束方式最簡單,但是只有當(dāng)前結(jié)束的中斷總是尚未處理完的級別最高的中斷時(shí),才能使用這種結(jié)束方式。這就是說,如果在中斷服務(wù)程序中曾經(jīng)修改過中斷級別,則決不能采用這種方式,否則會(huì)造成嚴(yán)重后果。34(1)普通EOI方式:34(2)特殊EOI方式:當(dāng)中斷服務(wù)程序結(jié)束給8259A發(fā)出EOI命令的同時(shí),將當(dāng)前結(jié)束的中斷級別也傳送給8259A,就被稱作特殊EOI方式。這種情況下,8259A將ISR寄存器中指定級別的相應(yīng)位清“0”,顯然這種結(jié)束方式可在任何情況下使用。35(2)特殊EOI方式:35(3)自動(dòng)EOI方式:任何一級中斷被響應(yīng)后,ISR寄存器中相應(yīng)位置“1”,CPU將進(jìn)入中斷響應(yīng)總線周期,在第2個(gè)中斷響應(yīng)信號(INTA)結(jié)束時(shí),自動(dòng)將ISR寄存器中相應(yīng)位清“0”,被稱作自動(dòng)EOI方式。采用這種結(jié)束方式,當(dāng)中斷服務(wù)程序結(jié)束時(shí),CPU不用向8259A回送任何信息,這顯然是一種最簡單的結(jié)束方式。但是存在一個(gè)明顯的缺點(diǎn),任何一級中斷在執(zhí)行中斷服務(wù)程序期間,在8259A中沒有留下任何標(biāo)志,如果在此過程中出現(xiàn)了新的中斷請求,則只要當(dāng)前IF=1,不管新出現(xiàn)的中斷級別如何,都將打斷正在執(zhí)行的中斷服務(wù)程序而被優(yōu)先執(zhí)行,這就有可能出現(xiàn)低級中斷打斷高級中斷或同級中斷相互打斷的不合理現(xiàn)象,通常將這種情況稱作“重復(fù)嵌套”,重復(fù)嵌套的深度無法控制,很可能造成某些高級中斷得不到及時(shí)處理的情況,這顯然是不允許的,因此使用自動(dòng)EOI方式一定要特別小心。對于一些以預(yù)定的速率發(fā)生的中斷,在肯定不會(huì)產(chǎn)生重復(fù)嵌套的情況下,采用自動(dòng)EOI方式是最理想的。36(3)自動(dòng)EOI方式:任何一級中斷被響應(yīng)后,ISR寄存器(1)普通EOI方式:每當(dāng)任何一級中斷被處理完,它的優(yōu)先級別就被改變成為最低級別,而將最高的優(yōu)先級別賦給原來比它低一級的中斷請求。(見表9-1)(2)自動(dòng)EOI循環(huán)方式:任何一級中斷響應(yīng)后,在中斷響應(yīng)周期中,由第二個(gè)中斷響應(yīng)信號INTA的后沿自動(dòng)將ISR寄存器中相應(yīng)的位清零。并立刻改變各級中斷的優(yōu)先級別。(3)特殊EOI循環(huán)方式:利用置位優(yōu)先權(quán)命令由用戶來指定最低優(yōu)先級別。令把最低優(yōu)先級賦給某一中斷源IRi,于是最高優(yōu)先級便賦給IRi+1,其他各級按循環(huán)方式類推。2.自動(dòng)循環(huán)方式37(1)普通EOI方式:每當(dāng)任何一級中斷被處理完,它的優(yōu)先級普通屏蔽方式:將中斷屏蔽寄存器IMR中的某位或幾位置1,即將相應(yīng)級的中斷請求給屏蔽掉了。特殊屏蔽方式:要求僅對本級中斷進(jìn)行屏蔽,而允許其他級別的中斷進(jìn)入系統(tǒng)(包括比它高的或者低的)3.中斷屏蔽方式383.中斷屏蔽方式3810.2.38259A芯片的級聯(lián)使用在級聯(lián)使用方式下,第1個(gè)INTA有效時(shí),主8259A將級聯(lián)地址從CAS2~CAS03個(gè)端輸出給所有的從8259A芯片,到第2個(gè)INTA有效時(shí),與主8259A發(fā)出的級聯(lián)地址相符的從8259A將向CPU送出當(dāng)前的中斷類型碼n,以后的操作過程與單級使用時(shí)相同。當(dāng)從8259A引入的中斷處理過程結(jié)束時(shí),CPU應(yīng)能送出兩個(gè)EOI結(jié)束命令,一個(gè)送給主8259A,用來將主8259A中的ISR寄存器的相應(yīng)位清“0”;另一個(gè)送給從8259A,用來將從8259A中的ISR寄存器相應(yīng)位清“0”,才標(biāo)志一次中斷處理過程的結(jié)束。3910.2.38259A芯片的級聯(lián)使用在級聯(lián)使用方式下可引入22級中斷請求信號,#1從8259A引入的8級中斷通過主8259A的IR6端引入,#2從8259A通過主8259A的IR3端引入,主8259A上其他的6個(gè)IRi端可直接引入其他中斷請求。如果初始化時(shí)將它們定義為完全嵌套方式,#2的中斷請求優(yōu)先級別高于#1,它們由主8259A完成判優(yōu)功能后才能引入系統(tǒng)。假定#1從片的IR7端接收到一個(gè)中斷請求,經(jīng)#1從片判優(yōu)后決定響應(yīng)這一中斷請求,將ISR寄存器中第7位置“1”,于是通過INT向主片的IR6端發(fā)出請求,經(jīng)主片再次判優(yōu),決定響應(yīng)這一請求時(shí),才將主片中ISR寄存器的第6位置“1”,CPU將從中斷入口地址表中得到相應(yīng)的入口地址,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。如果在該中斷服務(wù)程序過程中,#1從片的IR0端接收到一個(gè)新的中斷請求。根據(jù)中斷嵌套原則,在#1從片中IR0優(yōu)先級別高于IR7,應(yīng)該允許新的中斷請求進(jìn)入,將ISR寄存器中第0位置“1”,并通過INT向主片的IR6端再次發(fā)出請求。但這時(shí)由于主片中ISR寄存器的第6位早已置“1”,不允許這一級中斷再進(jìn)入,這便造成#1從片不能按完全嵌套方式工作。特殊完全嵌套方式,當(dāng)中斷系統(tǒng)工作在級聯(lián)方式,對主8259A初始化時(shí),應(yīng)將它定義為特殊完全嵌套方式。在級聯(lián)方式下有效。76543210765432107654321040可引入22級中斷請求信號,#1從8259A引入的8級中斷通過經(jīng)判優(yōu)線路確定為當(dāng)前#1號從8259A中最高優(yōu)先級時(shí),將ISR寄存器置成如下狀態(tài):70IRR10000000(#1號從8259A)70ISR10000000(#1號從8259A)70IRR01000000(主8259A)然后將IRR寄存器復(fù)位為全“0”,從片通過INT向主8259A的IR6端發(fā)出請求,將主8259A中的IRR寄存器置成如下狀態(tài):041經(jīng)判優(yōu)線路確定為當(dāng)前#1號從8259A中最高優(yōu)先級時(shí),將IS70

ISR01000000(主8259A)在CPU執(zhí)行上述中斷服務(wù)程序過程中#1從8259A從IR0端接收到一個(gè)新的中斷請求,IRR寄存器被置成如下狀態(tài)70IRR00000001(#1號從8259A)并通過INT向CPU發(fā)出中斷請求信號INTR。待CPU執(zhí)行完當(dāng)前指令訪問到INTR有效時(shí)暫停執(zhí)行下條指令進(jìn)入中斷響應(yīng)總線周期,獲得中斷類型碼后,可轉(zhuǎn)去執(zhí)行相應(yīng)中斷服務(wù)程序。70ISR10000001(#1號從8259A)4270ISR0100特殊完全嵌套方式,主8259A將允許新的中斷請求參加判優(yōu),當(dāng)確定為當(dāng)前最高優(yōu)先級時(shí),保持ISR寄存器的狀態(tài)不變70ISR01000000(主8259A)并再次向CPU發(fā)出中斷請求INT,CPU將暫停執(zhí)行原來的中斷服務(wù)程序而轉(zhuǎn)去執(zhí)行新的更高級的中斷服務(wù)程序,實(shí)現(xiàn)在級聯(lián)方式下的完全嵌套過程。43特殊完全嵌套方式,主8259A將允許新的中斷請求參加判優(yōu),當(dāng)當(dāng)中斷請求線(IR0~I(xiàn)R7)上有一條或若干條變?yōu)楦唠娖?,則使IRR的相應(yīng)的位置1;8259A的中斷響應(yīng)過程2.當(dāng)中斷請求寄存器IRR的某一位或若干位被置1后,若中斷屏蔽寄存器IMR中相應(yīng)的位為1,則屏蔽該中斷請求,若IMR中相應(yīng)位為0,則中斷請求送優(yōu)先權(quán)判斷器PR;3.PR把接到的中斷請求的最高優(yōu)先級與ISR中在服務(wù)中斷級比較,若前者級別高于后者,則置INT為高電平,否則INT低電平;44當(dāng)中斷請求線(IR0~I(xiàn)R7)上有一條或若干條變?yōu)楦唠娖剑瑒t4.CPU采樣到INT為高后,響應(yīng)中斷進(jìn)入連續(xù)的兩個(gè)可屏蔽中斷響應(yīng)周期;5.8259A接到第一個(gè)負(fù)脈沖后,將對應(yīng)的ISR位置位,而相應(yīng)的中斷請求寄存器IRR被復(fù)位;6.8259A接到第二個(gè)負(fù)脈沖后(第二個(gè)中斷響應(yīng)周期),在該脈沖期間,8259A向CPU發(fā)出中斷類型碼。7.若8259A處于AEOI(自動(dòng)中斷結(jié)束)方式,則第二個(gè)負(fù)脈沖結(jié)束時(shí),相應(yīng)的ISR位被復(fù)位。否則(工作在非自動(dòng)中斷結(jié)束方式)要等到CPU向8259A送內(nèi)含中斷結(jié)束(EOI)命令的OCW2后,相應(yīng)的ISR位才被復(fù)位。

至此,CPU根據(jù)中斷類型碼,從中斷矢量表中獲取對應(yīng)的中斷服務(wù)程序入口地址進(jìn)入中斷服務(wù)。

454.CPU采樣到INT為高后,響應(yīng)中斷進(jìn)入連續(xù)的兩個(gè)可屏蔽8259級聯(lián)工作示意圖468259級聯(lián)工作示意圖468259A工作示意圖478259A工作示意圖47在8259A開始正常工作之前,必須用初始化命令字建立起8259A操作的初始狀態(tài)。8259A的初始化是通過CPU對8259A送4個(gè)方式控制字ICW1、ICW2、ICW3、ICW4以及3個(gè)操作命令字OCW1、OCW2和OCW3。由于8259A只占用兩個(gè)I/O端口地址,但要寫入四個(gè)方式控制字和三個(gè)操作命令字,因而其各寄存器的讀寫是I/O地址和特征位及順序配合完成的:寫入方式控制字必須按照ICW1~I(xiàn)CW4的順序進(jìn)行。

10.2.48259A的編程

48在8259A開始正常工作之前,必須用初始化命令字建立寫入條件:CS=0、A0=0、特征位的D4=1。1.初始化命令字:有ICW1~I(xiàn)CW4四個(gè)。①

ICW149寫入條件:CS=0、A0=0、特征位的D4=1。1.初始②ICW2寫入條件:跟在ICW1之后,CS=0、A0=1。各位作用:D7~D3:規(guī)定中斷類型碼的高五位(T7~T3);D2~D0:無意義,可全寫0。注意點(diǎn):中斷類型碼的低3位由IR0~I(xiàn)R7的下標(biāo)編碼確定。

50②ICW250

ICW3注意主片和從片的ICW3必須不同寫入條件:跟在ICW2之后,CS=0、A0=1且ICW1的D1=0,使用在級連方式。只對級連方式有效51③

ICW3注意主片寫入條件:跟在ICW2之后,CS=0、0④

ICW4D4=1,特殊完全嵌套方式,一般作為級聯(lián)時(shí)主片的方式,工作在該方式時(shí)與工作在一般完全嵌套方式僅一點(diǎn)不同:在中斷處理過程中,對優(yōu)先級相等的同級中斷也給予響應(yīng),能實(shí)現(xiàn)同級中斷嵌套;D4=0,一般完全嵌套方式,一般作為級聯(lián)時(shí)從片的方式,或單片使用時(shí)的方式;

寫入條件:跟在ICW3之后,特征位D7~D5均為0,CS=0、A0=1且ICW1的D0=1。D3=1,緩沖方式,是指8259A和DB之間需加一緩沖器(提高DB帶負(fù)載能力),此時(shí)SP*/EN*作為輸出線EN*,用以鎖存或開啟緩沖器;

D3=0,非緩沖方式,SP*/EN*作為主從片選擇SP。D2=1,緩沖方式下,表示為主片;D2=0,緩沖方式,表示為從片。在D3=0時(shí),D2無意義。520④

ICW4D4=1,特殊完全嵌套方式,一般作為級聯(lián)時(shí)級聯(lián)0級聯(lián)53級聯(lián)0級聯(lián)531M7M6M5M4M3M2M1M0

Mi=1:屏蔽由IRi引入的中斷請求0:允許IRi端中斷請求進(jìn)入A02.操作命令字有OCW1、OCW2、OCW3三個(gè),可隨時(shí)動(dòng)態(tài)寫入,沒有順序,需寫什么就寫什么。①

OCW1(A0=1)屏蔽操作字用于實(shí)現(xiàn)中斷屏蔽,各位分別對應(yīng)于IR0~I(xiàn)R7。被寫入8259A中斷屏蔽寄存器IMR中。各位作用:為1,屏蔽對應(yīng)的中斷請求;為0,不屏蔽對應(yīng)的中斷請求。541M7M6M5M4M3M②

OCW2(A0=0)

用于控制中斷結(jié)束、優(yōu)先權(quán)循環(huán)等。寫入條件:A0=0并且特征位D4D3=00。各位作用:D7:D7=1,中斷優(yōu)先順序是循環(huán)輪換的D7=0,中斷優(yōu)先順序是固定不變的D6:D6=1,D2~D0位將指明一個(gè)中斷級;D6=0,D2~D0位無意義。D5:D5=1,執(zhí)行中斷結(jié)束操作,(用于非自動(dòng)中斷結(jié)束方式)用作中斷結(jié)束命令EOI,8259A接到中斷結(jié)束命令后,將ISR中對應(yīng)的或指定的置1位清0;D5=0,不執(zhí)行中斷結(jié)束操作。D2~D0:(D6=1才有意義)指明結(jié)束哪一位的中斷或設(shè)置哪一位優(yōu)先級為最低。55②

OCW2(A0=0)用于控制中斷結(jié)束、優(yōu)先權(quán)循環(huán)等。501001普通EOI結(jié)束方式,一旦中斷服務(wù)程序結(jié)束,將給8259A送出EOI結(jié)束命令,8259A將ISR寄存器中當(dāng)前級別最高的位清0。011特殊EOI結(jié)束方式,一旦中斷處理結(jié)束,除給8259A送EOI結(jié)束命令外,還由L2L1L0字段給出當(dāng)前結(jié)束的是哪一級中斷,8259A應(yīng)將ISR寄存器中指定級別的相應(yīng)位清“0”。101普通EOI循環(huán)方式。一旦中斷結(jié)束,8259A一方面將ISR寄存器中當(dāng)前級別最高的位清“0”;另一方面將最低優(yōu)先級賦給剛結(jié)束的中斷請求IRi,將最高優(yōu)先級賦給中斷請求IRi+1,其他中斷請求的優(yōu)先級別按循環(huán)方式順序改變111特殊EOI循環(huán)方式。一旦中斷結(jié)束,8259A將ISR寄存器中由L2L1L0字段給定級別的相應(yīng)位清“0”;并將最低優(yōu)先級賦給這一中斷請求,最高優(yōu)先級賦給原來比它低一級的中斷請求,其他級按循環(huán)方式順序改變3位編碼為“100”和“000”,則定義8259A采用自動(dòng)EOI循環(huán)方式(置位/復(fù)位)。一旦被定義為自動(dòng)EOI循環(huán)方式,CPU將在中斷響應(yīng)總線周期中第2個(gè)中斷響應(yīng)信號INTA結(jié)束時(shí),將ISR寄存器中的相應(yīng)位置“0”;并將最低優(yōu)先級賦給這一級,最高優(yōu)先權(quán)賦給原來比它低一級的中斷,其他中斷請求的級別按循環(huán)方式分別賦給。110表示向8259A發(fā)出置位優(yōu)先權(quán)命令,將最低優(yōu)先級賦給由L2L1L0字段所給定的中斷請求IRi。其他中斷源的級別按循環(huán)方式分別賦給。OCW2用于控制中斷結(jié)束、優(yōu)先權(quán)循環(huán)等。寫入條件:A0=0并且特征位D4D3=00SL=1則L2L1L0有效,否則無效R=1采用優(yōu)先級循環(huán)方式R=0采用非循環(huán)方式5601001普通EOI結(jié)束方式,一旦中斷服務(wù)程序結(jié)束,用來控制8259A的中斷屏蔽和讀取寄存器的狀態(tài)。硬件條件:A0=0且特征位D4D3=01,D7=0。各位作用:D4D3:01OCW3的標(biāo)志位;D2D1D0:名稱分別是P、RR和RIS,組合功能如下:③

OCW357用來控制8259A的中斷屏蔽和讀取寄存器的狀態(tài)。③

OCW通過設(shè)置OCW3的RR和RIS,用IN命令從偶地址來讀取IRR寄存器和ISR寄存器的內(nèi)容。如果CPU需要讀出當(dāng)前IMR寄存器的內(nèi)容,用IN指令對奇地址(A0=1)端口讀取,便可將IMR寄存器內(nèi)容讀入累加器中,這種情況實(shí)際上與OCW3控制字無關(guān),可在程序的任何位置安排IN指令來實(shí)現(xiàn)。REOCW3中的ESMM和SMM位是用來實(shí)現(xiàn)或取消特殊屏蔽方式,當(dāng)ESMM和SMM位置成“11”時(shí),表示定義8259A采用特殊屏蔽方式,這種情況下只屏蔽同級中斷請求進(jìn)入,而允許高級中斷打斷低級中斷,也允許低級中斷打斷高級中斷。當(dāng)ESMM和SMM位置成“10”時(shí),表示取消這種特殊屏蔽方式.上述操作控制字OCW1~OCW3可安排在預(yù)置命令字之后,用戶可根據(jù)需要在程序的任何位置上設(shè)置它們,當(dāng)需要讀取ISR或IRR寄存器內(nèi)容或需要查詢當(dāng)前8259A的中斷狀態(tài)時(shí),都必須先定義OCW3,然后用IN指令讀入。如果只需要讀入IMR寄存器內(nèi)容,則不需要定義OCW3。由此看來并不是任何時(shí)候都需要設(shè)置OCW3操作命令字。OCW358通過設(shè)置OCW3的RR和RIS,用IN命令從偶地址來讀取IR查詢的中斷狀態(tài)字格式59查詢的中斷狀態(tài)字格式59寫ICW1A0=0,D4=1寫ICW2A0=1SNGL=1IC4=1寫ICW3A0=1寫ICW4A0=1是否是否按順序?qū)0=1端口寫入命令字8259A芯片的初始化流程60寫ICW1A0=0,D4=1寫ICW210.2.58259A初始化程序舉例某系統(tǒng)中設(shè)置兩片8259A實(shí)現(xiàn)中斷控制,它們之間采用級聯(lián)方式連接,一片從8259A的INT端與主8259A的IR3端相連,已知當(dāng)前主8259A的IR0和IR5端上分別引入兩個(gè)中斷請求,從8259A的IR2和IR3端上也分別引入兩個(gè)中斷請求。6110.2.58259A初始化程序舉例某系統(tǒng)中設(shè)置兩片已知主8259A引入的中斷類型碼分別為40H和45H,它們的中斷服務(wù)程序在同一段中,其段基址為1000H,偏移地址分別為1050H和2060H,而由從8259A引入的中斷請求IR2和IR3的中斷類型碼為32H和33H,它們的中斷服務(wù)程序的段基址為2000H。偏移地址分別為5440H和3620H,那么首先應(yīng)將4個(gè)中斷入口寫入中斷入口地址表中,如圖所示62已

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論