版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章中斷3.1概述3.1.1中斷的基本概念1.中斷和中斷源中斷描述了一種CPU處理程序的過程。CPU在正常執(zhí)行當(dāng)前程序時(shí),由某個(gè)事件引起CPU暫時(shí)停止正在執(zhí)行的程序,進(jìn)而轉(zhuǎn)去執(zhí)行請(qǐng)求CPU暫時(shí)停止的相應(yīng)事件的服務(wù)程序,待該服務(wù)程序處理完畢后又返回繼續(xù)執(zhí)行被暫時(shí)停止的程序,這一過程稱為中斷。常將為實(shí)現(xiàn)中斷功能而采取的硬件和軟件措施,稱為中斷系統(tǒng)。第3章中斷中斷的應(yīng)用(1)實(shí)現(xiàn)主機(jī)與I/O設(shè)備的并行工作(2)利用中斷進(jìn)行實(shí)時(shí)處理當(dāng)微機(jī)用于實(shí)時(shí)控制時(shí),中斷是一個(gè)十分重要的功能。所謂實(shí)時(shí)處理,是指在現(xiàn)場的某個(gè)事件或現(xiàn)象出現(xiàn)的實(shí)際時(shí)間內(nèi)及時(shí)進(jìn)行處理。如微機(jī)在過程控制系統(tǒng)中,監(jiān)測到壓力過大或溫度過高時(shí),微機(jī)應(yīng)立即響應(yīng)并及時(shí)處理。防止偶然事故的發(fā)生。(3)利用中斷方式進(jìn)行人機(jī)對(duì)話某些程序的執(zhí)行需要操作人員從鍵盤或某終端設(shè)備提供信息以進(jìn)行控制。這些信息何時(shí)由鍵盤發(fā)出是隨機(jī)的,因此,可以利用中斷方式將信息提供給微機(jī)以實(shí)現(xiàn)人機(jī)對(duì)話。(4)故障處理微機(jī)在運(yùn)行過程中,往往會(huì)出現(xiàn)事先預(yù)料不到的情況或出現(xiàn)一些故障:如電源掉電、存儲(chǔ)校驗(yàn)出錯(cuò)、運(yùn)算溢出等等。微機(jī)就可以利用中斷技術(shù)自行處理,而不必停機(jī)或報(bào)告工作人員。(5)多處理機(jī)系統(tǒng)中各處理機(jī)之間的協(xié)調(diào)工作在多機(jī)系統(tǒng)與計(jì)算機(jī)網(wǎng)絡(luò)中,各節(jié)點(diǎn)之間需要通信,以交換信息或協(xié)同工作。當(dāng)一個(gè)節(jié)點(diǎn)要和其它節(jié)點(diǎn)通信時(shí),便向它提出中斷請(qǐng)求,對(duì)方轉(zhuǎn)入中斷服務(wù)程序,實(shí)現(xiàn)通信。第3章中斷3.1.2中斷接口電路1.最簡單的中斷接口電路一個(gè)最簡單的中斷接口電路包含三個(gè)輸入設(shè)備(A、B、C)和一個(gè)電源掉電中斷源,CPU中設(shè)有一個(gè)中斷允許觸發(fā)器,三個(gè)可屏蔽中斷請(qǐng)求輸入端INTR0、INTR1、INTR2和一個(gè)非屏蔽中斷請(qǐng)求輸入端NMI。它們的作用如下。(1)中斷請(qǐng)求觸發(fā)器(2)中斷允許觸發(fā)器(3)可屏蔽中斷與非屏蔽中斷(4)中斷請(qǐng)求與撤消(5)中斷請(qǐng)求輸入線第3章中斷最簡單的中斷接口電路第3章中斷2.中斷優(yōu)先級(jí)在實(shí)際系統(tǒng)中,常常遇到多個(gè)中斷源同時(shí)請(qǐng)求中斷的情況,這時(shí)CPU必須確定首先為哪一個(gè)中斷源服務(wù),以及服務(wù)的次序。通常采用中斷優(yōu)先排隊(duì)的處理方法解決這一問題。這就是根據(jù)中斷源要求的輕重緩急,排好中斷處理的優(yōu)先次序,即優(yōu)先級(jí)(又稱優(yōu)先權(quán))。先響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求。有的微處理器有兩條或更多的中斷請(qǐng)求線,而且CPU已經(jīng)安排好中斷的優(yōu)先級(jí),如圖3.1.1中的INTR0為最高優(yōu)先級(jí)、INTR1為次高優(yōu)先級(jí)、INTR2為最低優(yōu)先級(jí)。但有的微處理器只有一條中斷請(qǐng)求線。凡是遇到中斷源的數(shù)目多于CPU的中斷請(qǐng)求線的情況時(shí),就需要采取適當(dāng)?shù)姆椒▉斫鉀Q中斷優(yōu)先級(jí)的問題。另外,當(dāng)CPU正在處理中斷時(shí),也要能響應(yīng)優(yōu)先級(jí)更高的中斷請(qǐng)求,而屏蔽掉同級(jí)或較低級(jí)的中斷請(qǐng)求,即所謂多重中斷的問題。第3章中斷(1)軟件查詢確定優(yōu)先級(jí)第3章中斷(2)硬件優(yōu)先級(jí)排隊(duì)電路確定優(yōu)先級(jí)第3章中斷菊花鏈邏輯電路第3章中斷(3)具有中斷屏蔽的接口電路軟件查詢確定優(yōu)先級(jí)的優(yōu)點(diǎn)是,各中斷源的優(yōu)先級(jí)靈活,但其缺點(diǎn)是在中斷源較多的情況下,由詢問到轉(zhuǎn)至相應(yīng)的中斷服務(wù)程序的入口時(shí)間較長。硬件優(yōu)先級(jí)排隊(duì)電路確定優(yōu)先級(jí)的優(yōu)點(diǎn)是速度快,但其缺點(diǎn)是各個(gè)中斷源的優(yōu)先級(jí)固定不變。在實(shí)際系統(tǒng)中,往往有多個(gè)中斷源。為了增加控制的靈活性,通常采用一種折衷方案,即在圖3.1.3菊花鏈確定優(yōu)先級(jí)的中斷接口電路的基礎(chǔ)上,在每一個(gè)外設(shè)的接口電路中增加一個(gè)中斷屏蔽觸發(fā)器。只有當(dāng)此觸發(fā)器為“1”時(shí),外設(shè)的中斷請(qǐng)求才能通過與門送出。把4個(gè)外設(shè)的中斷屏蔽觸發(fā)器組成一個(gè)端口(即中斷屏蔽寄存器),用輸出指令來控制它們的狀態(tài)。第3章中斷具有中斷屏蔽的接口電路第3章中斷3.1.3中斷處理過程1.單重中斷處理過程如果響應(yīng)某個(gè)中斷請(qǐng)求后,CPU只能為該請(qǐng)求源服務(wù)處理,不被其它中斷請(qǐng)求所打斷,只有本次中斷服務(wù)全部完成并返回原程序后,CPU才能響應(yīng)新的中斷請(qǐng)求,這種情況稱為單重中斷。(1)CPU響應(yīng)中斷的條件一條指令執(zhí)行結(jié)束后,CPU檢測中斷請(qǐng)求輸入端INTR是否有中斷請(qǐng)求信號(hào),若無中斷請(qǐng)求信號(hào),則轉(zhuǎn)取下一條指令,若有中斷請(qǐng)求信號(hào),則檢測中斷允許觸發(fā)器的狀態(tài),若為關(guān)中斷,則轉(zhuǎn)取下一條指令,若為開中斷,則進(jìn)行中斷處理。第3章中斷(2)中斷處理1)關(guān)中斷。CPU在響應(yīng)中斷后,發(fā)出中斷響應(yīng)信號(hào),同時(shí)內(nèi)部自動(dòng)地關(guān)中斷,以禁止接受其他的中斷請(qǐng)求。2)保護(hù)現(xiàn)場。為了使中斷處理程序不影響主程序的運(yùn)行,故要把斷點(diǎn)處的有關(guān)各個(gè)狀態(tài)寄存器的內(nèi)容和標(biāo)志位的狀態(tài),推入堆棧保護(hù)起來。3)保護(hù)斷點(diǎn)。把斷點(diǎn)處的程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧,以備中斷處理完后能正確地返回主程序斷點(diǎn)。4)形成中斷服務(wù)程序入口地址。CPU要對(duì)中斷請(qǐng)求進(jìn)行處理,必須要找到相應(yīng)的中斷服務(wù)程序的入口地址。不同類型的微機(jī)的中斷處理過程基本相似,但主要在形成中斷服務(wù)程序入口地址方式上有所區(qū)別。5)轉(zhuǎn)入中斷服務(wù)程序。將中斷服務(wù)程序入口地址送入程序計(jì)數(shù)器PC。需要說明的是,上述過程是微機(jī)硬件自動(dòng)完成的。第3章中斷(3)中斷服務(wù)程序1)保護(hù)現(xiàn)場。中斷服務(wù)程序像子程序一樣,在執(zhí)行過程中,要使用CPU中的寄存器。所以,就應(yīng)該將中斷服務(wù)程序中要使用的各個(gè)寄存器的內(nèi)容保護(hù)起來,即保護(hù)現(xiàn)場。2)中斷處理。這是中斷服務(wù)程序的核心部分,為中斷源完成特定的功能。3)恢復(fù)現(xiàn)場。在中斷服務(wù)程序結(jié)束之前,應(yīng)恢復(fù)現(xiàn)場,即把保護(hù)現(xiàn)場時(shí)所保存的各個(gè)寄存器的內(nèi)容從堆棧彈出,送回原各個(gè)寄存器中。4)開中斷。通過指令開中斷,在中斷服務(wù)程序結(jié)束時(shí),要開中斷,以便CPU能響應(yīng)新的中斷請(qǐng)求。5)返回?cái)帱c(diǎn)。在中斷服務(wù)程序結(jié)束的最后要安排一條中斷返回指令,將在中斷處理中壓入堆棧內(nèi)的保護(hù)現(xiàn)場和保護(hù)斷點(diǎn)的內(nèi)容彈出,即返回?cái)帱c(diǎn)執(zhí)行主程序并能繼續(xù)準(zhǔn)備響應(yīng)新的中斷請(qǐng)求。第3章中斷可屏蔽多重中斷處理過程流程圖第3章中斷2.多重中斷處理過程多重中斷方式允許在中斷服務(wù)程序處理過程中響應(yīng)優(yōu)先級(jí)別更高的中斷請(qǐng)求。當(dāng)正在執(zhí)行中斷服務(wù)程序時(shí),又產(chǎn)生了優(yōu)先級(jí)較高的中斷請(qǐng)求,這時(shí)CPU掛起正在處理的優(yōu)先級(jí)較低的中斷,轉(zhuǎn)而響應(yīng)優(yōu)先級(jí)較高的中斷,待具有較高優(yōu)先級(jí)的中斷處理完畢后,返回執(zhí)行優(yōu)先級(jí)較低的中斷服務(wù)程序。這種處理過程叫做多重中斷,也叫做中斷嵌套。例如在圖3.1.5中,假定CPU在執(zhí)行主程序第K條指令時(shí)接到設(shè)備C的中斷請(qǐng)求,經(jīng)中斷處理將斷點(diǎn)K+1壓棧保存,然后轉(zhuǎn)入設(shè)備C的中斷服務(wù)程序。在執(zhí)行設(shè)備C的中斷服務(wù)程序第J條指令時(shí),又接到優(yōu)先級(jí)更高的設(shè)備B的中斷請(qǐng)求,于是CPU暫停執(zhí)行設(shè)備C的中斷服務(wù)程序,經(jīng)中斷處理將斷點(diǎn)J+1壓棧保存后,轉(zhuǎn)入設(shè)備B的中斷服務(wù)程序。當(dāng)執(zhí)行完設(shè)備B的中斷服務(wù)程序時(shí),從棧中取出返回地址J+1,返回設(shè)備C的中斷服務(wù)程序。在執(zhí)行完設(shè)備C的中斷服務(wù)程序之后,從棧中取出返回地址K+1返回主程序。第3章中斷(1)CPU響應(yīng)中斷的條件與單重中斷相同。(2)中斷處理與單重中斷相同。第3章中斷(3)中斷服務(wù)程序1)保護(hù)現(xiàn)場。與單重中斷相同。2)保護(hù)原中斷屏蔽字。保護(hù)本次中斷的屏蔽字,以便返回主程序時(shí)恢復(fù)之。3)送新中斷屏蔽字。該屏蔽字將屏蔽掉與本次中斷請(qǐng)求同一優(yōu)先級(jí)別以及更低級(jí)別的其它請(qǐng)求。例如,在圖3.1.5設(shè)備C中斷服務(wù)程序中,其新中斷屏蔽字對(duì)應(yīng)A、B、C、D的輸出狀態(tài)為1、1、0、0。4)開中斷。通過指令開中斷,因在中斷處理中已由硬件關(guān)中斷,為了能響應(yīng)新的更高級(jí)別請(qǐng)求,中斷服務(wù)程序需執(zhí)行開中斷指令。5)中斷處理。與單重中斷相同,若有新的更高級(jí)別的中斷請(qǐng)求就在此程序段內(nèi)響應(yīng)。6)關(guān)中斷。通過指令關(guān)中斷,在恢復(fù)現(xiàn)場和恢復(fù)原屏蔽字時(shí)不允許被干擾,CPU應(yīng)處于關(guān)中斷的狀態(tài)。7)恢復(fù)原屏蔽字。在中斷服務(wù)程序結(jié)束時(shí),需要恢復(fù)原屏蔽字。8)恢復(fù)現(xiàn)場。與單重中斷相同。9)開中斷。10)返回?cái)帱c(diǎn)。第3章中斷3.2Pentium的中斷機(jī)制Pentium的中斷機(jī)制最多能處理256個(gè)中斷源,每個(gè)中斷源都有一個(gè)8位二進(jìn)制數(shù)的中斷類型碼(0~255),以供CPU進(jìn)行識(shí)別。Pentium的256個(gè)中斷源可分成四類,即可屏蔽中斷(INTR)、非屏蔽中斷(NMI)、軟件中斷(執(zhí)行INTO、INT3、INTn、BOUND指令引起的中斷)、異常。第3章中斷Pentium的中斷機(jī)制示意圖第3章中斷3.2.1中斷向量表中斷類型碼通過一個(gè)地址指針表與中斷服務(wù)程序入口地址相聯(lián)。在實(shí)模式下,該表稱為中斷向量表。在保護(hù)模式下,該表稱為中斷描述符表。中斷向量就是中斷服務(wù)程序的入口地址,而中斷向量表則是存放中斷服務(wù)程序入口地址的表格。中斷向量表位于存儲(chǔ)器地址空間的低地址端,共1K個(gè)字節(jié),地址為00000H~003FFH,每4個(gè)字節(jié)存放一個(gè)中斷服務(wù)程序的入口地址(一共可存放256個(gè)中斷服務(wù)程序的入口地址)。較高地址的兩個(gè)字節(jié)存放中斷服務(wù)程序入口的段地址,較低地址的兩個(gè)字節(jié)存放入口地址的段內(nèi)偏移量,這4個(gè)單元的最低地址稱為向量地址,其值為對(duì)應(yīng)的中斷類型碼乘4。第3章中斷中斷向量表第3章中斷3.2.2可屏蔽中斷INTR可屏蔽中斷請(qǐng)求線INTR通常由Intel8259A中斷控制器驅(qū)動(dòng),該控制器可由軟件命令來控制其工作方式。8259A的主要任務(wù)是:接收與其相連的外部設(shè)備的中斷請(qǐng)求,確定優(yōu)先級(jí),向INTR引腳發(fā)中斷請(qǐng)求,通過數(shù)據(jù)總線向CPU發(fā)中斷類型碼。當(dāng)CPU在INTR引腳上接收到一個(gè)高電平的中斷請(qǐng)求信號(hào),并且當(dāng)前的中斷允許標(biāo)志位IF為1時(shí),CPU就會(huì)在當(dāng)前指令執(zhí)行結(jié)束后,響應(yīng)INTR引腳的中斷請(qǐng)求。Pentium要求可屏蔽中斷請(qǐng)求信號(hào)是一個(gè)高電平信號(hào),并且,INTR信號(hào)的高電平必須維持到CPU響應(yīng)中斷后才結(jié)束。第3章中斷中斷響應(yīng)總線周期第3章中斷3.2.4軟件中斷軟件中斷包括INTO、INT3、INTn、BOUND指令。軟件中斷的特點(diǎn)是:(1)軟件中斷指令是程序員人為設(shè)置在程序中的。(2)中斷類型碼包含在指令中,所以不執(zhí)行中斷響應(yīng)總線周期。(3)除BOUND指令外,中斷返回地址指向軟件中斷指令的下一條指令。第3章中斷1.INTn中斷指令執(zhí)行INTn指令時(shí)(n取值為0~255),將使CPU進(jìn)入中斷類型碼n所對(duì)應(yīng)的中斷服務(wù)程序。2.INT3中斷指令I(lǐng)NT3是一個(gè)單字節(jié)的斷點(diǎn)中斷指令,執(zhí)行INT3指令時(shí),將使CPU進(jìn)入類型為3的中斷服務(wù)程序。3.INTO中斷指令I(lǐng)NTO溢出中斷指令也是一個(gè)單字節(jié)的指令。INTO指令通常是跟在有符號(hào)數(shù)的加法運(yùn)算或減法運(yùn)算指令的后面。當(dāng)運(yùn)算指令使溢出標(biāo)志OF為1時(shí),執(zhí)行INTO指令就會(huì)進(jìn)入類型為4的溢出中斷服務(wù)程序,此時(shí)中斷服務(wù)程序給出出錯(cuò)標(biāo)志。如果運(yùn)算指令使OF為0,那么,接著執(zhí)行INTO指令時(shí),也會(huì)進(jìn)入中斷服務(wù)程序,但此時(shí)中斷處理程序僅僅是對(duì)標(biāo)志進(jìn)行測試,然后很快返回主程序。4.BOUND中斷指令第3章中斷3.2.5異常簡介異常既不是外部硬件產(chǎn)生的,也不是用軟件指令產(chǎn)生的,而是在CPU執(zhí)行一條指令過程中出現(xiàn)的錯(cuò)誤或檢測到的異常情況自動(dòng)產(chǎn)生的。除單步(陷阱)中斷外,異常中斷返回地址指向程序中發(fā)生中斷的地方,而不是指向產(chǎn)生中斷指令的下一條指令。第3章中斷1.類型0除法出錯(cuò)在執(zhí)行除法指令后結(jié)果溢出或遇到除數(shù)為0的情況,則CPU會(huì)自動(dòng)產(chǎn)生類型為0的中斷,轉(zhuǎn)入相應(yīng)的中斷處理程序。第3章中斷2.類型1單步(陷阱)當(dāng)標(biāo)志寄存器中的陷阱標(biāo)志位TF為1時(shí),每執(zhí)行一條指令后,就進(jìn)入一次類型1的中斷服務(wù)程序,此中斷服務(wù)程序用來顯示出一系列寄存器的值,并且告示一些附帶的信息。因此,單步中斷一般用在調(diào)試程序中逐條執(zhí)行用戶程序。Pentium沒有直接對(duì)TF標(biāo)志置“1”或置“0”的指令,可以通過修改存放在堆棧中標(biāo)志的內(nèi)容或其他間接方法來改變TF之值。第3章中斷3.類型6無效操作碼在程序中遇到未定義的操作碼時(shí)發(fā)生此中斷。第3章中斷4.類型7設(shè)備不可用設(shè)備不可用故障會(huì)在以下兩種條件下產(chǎn)生:(1)Pentium微處理機(jī)執(zhí)行了一條ESC(處理機(jī)脫離)指令,且控制寄存器CR0中的EM(模擬協(xié)處理器)位被置成“1”。(2)Pentium微處理機(jī)執(zhí)行了一條WAIT指令,且控制寄存器CR0中的(監(jiān)控協(xié)處理器位)MP=1,或執(zhí)行了一條ESC指令,且控制寄存器CR0的TS(任務(wù)切換)位被置為“1”。第3章中斷5.類型8雙故障一般情況下,若Pentium微處理機(jī)在調(diào)用一個(gè)異常處理程序時(shí)又檢測到了一個(gè)異常,則對(duì)這兩個(gè)異常可以進(jìn)行串行處理。但是,如果處理機(jī)不能對(duì)它們實(shí)施串行處理,則它將發(fā)出一個(gè)雙故障異常信息。第3章中斷6.類型10無效任務(wù)狀態(tài)段試圖把任務(wù)轉(zhuǎn)換到一個(gè)具有無效任務(wù)狀態(tài)段的段內(nèi)時(shí),就會(huì)產(chǎn)生無效任務(wù)狀態(tài)段故障。第3章中斷7.類型11段不存在當(dāng)描述符中的P位(P=0)指示段不存在或無效時(shí)發(fā)生該中斷。第3章中斷8.類型12堆棧段超限如果堆棧段不存在(P=0)或堆棧段超限,則發(fā)生該中斷。第3章中斷9.類型13一般保護(hù)在保護(hù)模式下,不會(huì)引起另一個(gè)異常的發(fā)生但卻違背了保護(hù)規(guī)則的所有動(dòng)作都將引起一個(gè)一般保護(hù)異常。下面列出一些違背保護(hù)規(guī)則的情況(不是全部):(1)描述符表邊界超出。(2)違反特權(quán)規(guī)則。(3)在使用代碼段CS、數(shù)據(jù)段DS、附加數(shù)據(jù)段ES、FS或GS時(shí)超出了段界限。(4)對(duì)被保護(hù)代碼段的寫操作。(5)從只能執(zhí)行的代碼段讀取數(shù)據(jù)。第3章中斷10.類型14頁面出錯(cuò)訪問頁面出錯(cuò)的存儲(chǔ)器時(shí)發(fā)生此中斷。第3章中斷11.類型16浮點(diǎn)錯(cuò)浮點(diǎn)錯(cuò)故障是由浮點(diǎn)算術(shù)運(yùn)算指令產(chǎn)生的一種錯(cuò)誤信號(hào),只有當(dāng)控制寄存器CR0中的NE(數(shù)值異常事故)位被置成1時(shí),才可能出現(xiàn)浮點(diǎn)錯(cuò)中斷。第3章中斷12.類型17對(duì)準(zhǔn)檢查對(duì)準(zhǔn)檢查故障是在對(duì)非對(duì)準(zhǔn)的操作數(shù)進(jìn)行訪問時(shí)產(chǎn)生的。例如,一個(gè)存儲(chǔ)在奇數(shù)字節(jié)地址上的字以及一個(gè)存儲(chǔ)在非4的整數(shù)倍的地址上的雙字等就是非對(duì)準(zhǔn)的數(shù)。第3章中斷13.類型18機(jī)器檢查在Pentium~PentiumⅡ微處理器中激活一個(gè)系統(tǒng)存儲(chǔ)器管理模式中斷。第3章中斷3.2.6實(shí)模式中斷處理過程第3章中斷3.2.7保護(hù)模式中斷操作保護(hù)模式下的中斷與實(shí)模式幾乎完全相同,但在保護(hù)模式下,用中斷描述符表IDT來替代中斷向量表。中斷描述符表由中斷描述符表地址寄存器IDTR定位于系統(tǒng)中任一存儲(chǔ)單元。中斷描述符表包含的是門描述符,而不是向量。從圖3.2.5中可以看到該表最多包含256個(gè)門描述符。這些門描述符分別與中斷類型碼0~255相對(duì)應(yīng)。門描述符可定義為陷阱門、中斷門或者任務(wù)門。當(dāng)Pentium響應(yīng)一個(gè)異?;蛑袛鄷r(shí),以其類型碼為依據(jù),指向IDT中的一個(gè)門描述符。如果被尋址的門描述符是任務(wù)門,則它將以一種與用CALL指令調(diào)用一個(gè)任務(wù)門相同的方式引起一次任務(wù)的轉(zhuǎn)換。若是索引指向一個(gè)中斷門或自陷門,則它將以一種與用CALL指令調(diào)用一個(gè)調(diào)用門相同的方式調(diào)用異?;蛑袛喾?wù)程序。但對(duì)于中斷門而言,進(jìn)入中斷服務(wù)程序之前會(huì)將IF復(fù)位為0,陷阱門則不理睬IF標(biāo)志。第3章中斷Pentium在保護(hù)模式下中斷轉(zhuǎn)移的過程示意圖第3章中斷3.3可編程中斷控制器8259A在中斷控制過程中,中斷源的識(shí)別和優(yōu)先權(quán)的確定可以用硬件排隊(duì)電路等實(shí)現(xiàn),Inter8259A可編程中斷控制器就是為完成這些任務(wù)而設(shè)計(jì)的一種器件。它不是I/O接口,而是一種中斷管理芯片,筒稱PIC(ProgrammableInterruptController)。8259A可編程中斷控制器用來管理8級(jí)優(yōu)先中斷,并可將多個(gè)8259A級(jí)聯(lián)起來,構(gòu)成64級(jí)中斷優(yōu)先級(jí)管理系統(tǒng),而無須外加電路,它具有多種工作方式,CPU可以通過編程設(shè)定或改變它的工作方式,CPU響應(yīng)中斷時(shí),8259A能自動(dòng)提供中斷入口地址,而使CPU轉(zhuǎn)向相應(yīng)的中斷處理程序。第3章中斷8259A的主要功能(1)每片8259A可管理8級(jí)優(yōu)先權(quán)中斷源,在基本不增加其他電路的情況下,通過8259A的級(jí)聯(lián),最多可管理64級(jí)優(yōu)先權(quán)的中斷源。(2)對(duì)任何一個(gè)級(jí)別的中斷源都可單獨(dú)進(jìn)行屏蔽,使該級(jí)中斷請(qǐng)求暫時(shí)被禁止,直到取消屏蔽時(shí)為止。(3)向CPU提供可編程的標(biāo)識(shí)碼,對(duì)于8086~Pentium的CPU來說就是中斷類型碼。(4)有多種工作方式,可通過編程選擇。(5)可與8086~Pentium的CPU直接連接,不需外加硬件電路。第3章中斷3.3.18259A的內(nèi)部結(jié)構(gòu)及引腳功能第3章中斷1.中斷請(qǐng)求寄存器IRR中斷請(qǐng)求寄存器IRR用于寄存所有IR輸入線輸入的中斷請(qǐng)求信號(hào),即保存正在請(qǐng)求服務(wù)的中斷級(jí)。中斷請(qǐng)求寄存器IRR接收外部的中斷請(qǐng)求,IRR有8位,它們分別和引腳IR0-IR7相對(duì)應(yīng)。接收來自某一引腳的中斷請(qǐng)求后,IRR寄存器中的對(duì)應(yīng)位置1,也就是對(duì)這一中斷請(qǐng)求作了鎖存。8259A有邊沿觸發(fā)和高電平觸發(fā)兩種觸發(fā)方式。在邊沿觸發(fā)方式下,8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào)。中斷請(qǐng)求輸入端出現(xiàn)上升沿觸發(fā)信號(hào)以后,可以一直保持高電平。在高電平觸發(fā)方式下,8259A把中斷請(qǐng)求輸入端出現(xiàn)的高電平作為中斷請(qǐng)求信號(hào)。在高電平觸發(fā)方式下,當(dāng)?shù)谝粋€(gè)中斷響應(yīng)信號(hào)變?yōu)橛行е?,輸入端必須及時(shí)撤除高電平,避免引起不應(yīng)該有的第二次中斷請(qǐng)求。第3章中斷2.中斷服務(wù)寄存器ISR中斷服務(wù)寄存器ISR的主要作用是保存當(dāng)前被CPU服務(wù)的中斷級(jí),也就是記錄正在被處理的中斷請(qǐng)求。8位中斷服務(wù)寄存器ISR用來記憶正在處理中的中斷級(jí)別,它的每位分別與IRR寄存器中的各位相對(duì)應(yīng)。當(dāng)CPU正為某個(gè)中斷源服務(wù)時(shí),8259A則使ISR中的相應(yīng)位置1。當(dāng)ISR為全“0”時(shí),表示無任何中斷服務(wù)。第3章中斷3.優(yōu)先級(jí)分辨器PR優(yōu)先級(jí)分辨器PR的主要作用是確定中斷請(qǐng)求寄存器IRR中各位的優(yōu)先等級(jí),并確定能否向CPU申請(qǐng)中斷。優(yōu)先級(jí)分辨器PR也稱優(yōu)先級(jí)裁決器,用來管理和識(shí)別各個(gè)中斷源的優(yōu)先級(jí)別。中斷優(yōu)先級(jí)裁決器把新進(jìn)入的中斷請(qǐng)求和當(dāng)前正在處理的(即中斷服務(wù)寄存器ISR中的內(nèi)容)中斷進(jìn)行比較,從而決定哪一個(gè)優(yōu)先級(jí)更高。如果判斷出新進(jìn)入的中斷請(qǐng)求具有足夠高的優(yōu)先級(jí),那么,中斷裁決器會(huì)通過相應(yīng)的邏輯電路要求控制邏輯向CPU發(fā)出一個(gè)中斷請(qǐng)求。第3章中斷4.控制邏輯控制邏輯將根據(jù)優(yōu)先級(jí)裁決器的請(qǐng)求向CPU發(fā)出一個(gè)中斷請(qǐng)求信號(hào),即輸出引腳INT為1。如果CPU的中斷允許標(biāo)志IF為1,那么,CPU執(zhí)行完當(dāng)前指令后,就可以響應(yīng)中斷。這時(shí),CPU從線上往8259A回送兩個(gè)負(fù)脈沖。第一個(gè)負(fù)脈沖到達(dá)時(shí),8259A完成以下3個(gè)動(dòng)作:(1)使IRR的鎖存功能失效。這樣,在IR0-IR7線上的中斷請(qǐng)求信號(hào)就不予接收,直到第二個(gè)負(fù)脈沖到達(dá)時(shí),才又使IRR的鎖存功能有效。(2)使當(dāng)前中斷服務(wù)寄存器ISR中的相應(yīng)位置1,以便為中斷優(yōu)先級(jí)裁決器以后的工作提供判斷依據(jù)。(3)使IRR寄存器中的相應(yīng)位(即剛才設(shè)置ISR為1所對(duì)應(yīng)的IRR中的位)清0。第二個(gè)負(fù)脈沖到達(dá)時(shí),8259A完成下列動(dòng)作:(1)將中斷類型碼寄存器ICW2中的內(nèi)容送到數(shù)據(jù)總線的D7-D0,CPU將此作為中斷類型碼。(2)如果ICW4(方式控制字)中的中斷自動(dòng)結(jié)束位為1,那么,在第二個(gè)脈沖結(jié)束時(shí),8259A會(huì)將第一個(gè)脈沖到來時(shí)設(shè)置的當(dāng)前中斷服務(wù)寄存器ISR的相應(yīng)位清0。INT:中斷請(qǐng)求信號(hào),輸出。只要8259A的中斷邏輯判定中斷請(qǐng)求信號(hào)有效,就在這個(gè)引腳上產(chǎn)生一個(gè)高電平,可接到CPU的中斷輸入端。第3章中斷5.操作命令字寄存器OCW1-OCW3操作命令字寄存器OCW1-OCW3用于存放操作命令字。操作命令字由應(yīng)用程序設(shè)定,用于對(duì)中斷處理過程的動(dòng)態(tài)控制。在一個(gè)系統(tǒng)運(yùn)行過程中,操作命令字可以被多次設(shè)置。操作命令字寄存器中的OCW1是8位中斷屏蔽寄存器IMR,用于存放CPU送來的中斷屏蔽信號(hào),它的每位分別與IRR寄存器中的各位相對(duì)應(yīng),對(duì)各中斷源的中斷請(qǐng)求信號(hào)(IR0-IR7)實(shí)現(xiàn)開關(guān)控制。當(dāng)它的某位為“1”時(shí),對(duì)應(yīng)的中斷請(qǐng)求就被屏蔽,即對(duì)該中斷源的有效請(qǐng)求置之不理。第3章中斷6.初始化命令字寄存器ICW1-ICW4初始化命令字寄存器ICW1-ICW4是微機(jī)系統(tǒng)啟動(dòng)時(shí)由初始化程序設(shè)置的。初始化命令字一旦設(shè)定,一般在系統(tǒng)工作過程中就不再改變。因此,CPU對(duì)8259A編程時(shí),首先要送入初始化命令字。初始化命令字送入8259A時(shí),必須嚴(yán)格按著規(guī)定的順序,因?yàn)?259A的內(nèi)部控制電路,對(duì)命令字的識(shí)別除了依靠地址信號(hào)A0和某些特征位之外,還要根據(jù)它先后裝入的順序。ICW1和ICW2是必須設(shè)置的,而ICW3和ICW4是由工作方式來選擇的。第3章中斷7.?dāng)?shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是8位三態(tài)雙向緩沖器,通常和CPU系統(tǒng)總線中的D7-D0相連接,在讀/寫邏輯的控制下實(shí)現(xiàn)CPU與8259A之間的信息交換。D7-D0:8位數(shù)據(jù)引腳,在系統(tǒng)中,它們和數(shù)據(jù)總線相連,從而實(shí)現(xiàn)和CPU的數(shù)據(jù)交換。在較大的系統(tǒng)中,一般使用總線驅(qū)動(dòng)器(即緩沖方式),這時(shí),D7-D0與總線驅(qū)動(dòng)器相連。在小系統(tǒng)中,D7-D0直接與數(shù)據(jù)總線相連(即非緩沖方式)。第3章中斷8.讀/寫邏輯讀/寫邏輯是根據(jù)CPU送來的讀/寫信號(hào)和地址信息,通過數(shù)據(jù)總線緩沖器有條不紊地完成CPU對(duì)8259A的所有寫操作和讀操作。讀出信號(hào),低電平有效,通知8259A將某個(gè)內(nèi)部寄存器的內(nèi)容送到數(shù)據(jù)總線上。寫入信號(hào),低電平有效,通知8259A從數(shù)據(jù)線上接收數(shù)據(jù)。這些數(shù)據(jù)實(shí)際上就是CPU往8259A發(fā)送的命令字,也就是說,每當(dāng)8259A接收一個(gè)數(shù)據(jù),便設(shè)置一個(gè)命令字。芯片選通信號(hào),低電平有效,通過地址譯碼邏輯電路與地址總線相連。A0:指出當(dāng)前8259A的哪個(gè)端口被訪問。1片8259A對(duì)應(yīng)兩個(gè)端口地址,其中一個(gè)為偶地址,一個(gè)為奇地址,并且要求偶地址較低,奇地址較高。第3章中斷9.級(jí)聯(lián)控制一片8259A最多構(gòu)成8級(jí)中斷(IR7-IR0),要想擴(kuò)展中斷源,必須多片連在一起,叫級(jí)聯(lián)方式。級(jí)聯(lián)控制主要是為實(shí)現(xiàn)多片8259A的級(jí)聯(lián)應(yīng)用而設(shè)計(jì)的。級(jí)聯(lián)緩沖/比較器的功能有兩個(gè),一是提供級(jí)聯(lián)控制,二是提供緩沖控制。在級(jí)聯(lián)應(yīng)用中,只有一片8259A為主片,其他均為從片,從片最多不能超過8片。此時(shí)各從片8259A的INT將與主片8259A的IRx相連接,而它們的三個(gè)級(jí)聯(lián)信號(hào)CAS2-CAS0將分別互連起來。此時(shí),主8259A在第一個(gè)響應(yīng)周期內(nèi)通過CAS2-CAS0送出三位識(shí)別碼,而和此識(shí)別碼相符的從8259A將在第二個(gè)響應(yīng)周期內(nèi)釋放中斷類型碼到數(shù)據(jù)總線上,使CPU進(jìn)入相應(yīng)的中斷處理程序。第3章中斷3.3.28259A的工作方式8259A是可編程芯片,可以通過程序命令來確定8259A的工作方式。中斷控制器8259A有10種工作方式。8259A有兩種命令,一種是初始化命令,另一種是操作命令,它們用于控制8259A的中斷管理。第3章中斷1.全嵌套方式這是一種最普通的工作方式。8259A在初始化工作完成后若未設(shè)定其它的工作方式,就自動(dòng)進(jìn)入全嵌套方式,這種方式的特點(diǎn)是:(1)中斷請(qǐng)求的優(yōu)先級(jí)固定,其順序是IR0最高,逐次減小,IR7最低。(2)中斷服務(wù)寄存器ISR保存優(yōu)先權(quán)電路確定的優(yōu)先級(jí)狀態(tài),相應(yīng)位置“1”,并且一直保持這個(gè)服務(wù)“記錄”狀態(tài),直到CPU發(fā)出中斷結(jié)束命令為止。(3)在ISR置位期間,不再響應(yīng)同級(jí)及較低級(jí)的中斷請(qǐng)求,而高級(jí)的中斷請(qǐng)求如果CPU開放中斷的話仍能夠得到中斷服務(wù)。(4)IR7-IR0的中斷請(qǐng)求輸入可分別由中斷屏蔽寄存IMR的D7-D0的相應(yīng)位屏蔽與允許,對(duì)某一位的屏蔽與允許操作不影響其它位的中斷請(qǐng)求操作。全嵌套工作方式由ICW4的D4=0來確定。第3章中斷2.循環(huán)優(yōu)先級(jí)方式循環(huán)優(yōu)先級(jí)方式是8259A管理優(yōu)先級(jí)相同的設(shè)備時(shí)采用的中斷管理方式,它包括兩種:自動(dòng)循環(huán)優(yōu)先級(jí)方式和特殊循環(huán)優(yōu)先級(jí)方式。(1)自動(dòng)循環(huán)各設(shè)備優(yōu)先級(jí)相同,當(dāng)某一個(gè)設(shè)備受到服務(wù)之后,它的優(yōu)先級(jí)就自動(dòng)地排到最后。所謂各設(shè)備優(yōu)先級(jí)相同,是指它們的地位相同,受服務(wù)的機(jī)會(huì)均等,但是必竟各中斷源的優(yōu)先級(jí)需要排出一個(gè)順序,否則同時(shí)有多個(gè)中斷源申請(qǐng)中斷時(shí)計(jì)算機(jī)無法處理,于是排出這樣一個(gè)優(yōu)先級(jí)由高到低的順序。(2)特殊循環(huán)特殊循環(huán)優(yōu)先級(jí)方式與自動(dòng)循環(huán)優(yōu)先級(jí)方式的不同之處在于:在自動(dòng)循環(huán)優(yōu)先級(jí)方式中,某一設(shè)備在被服務(wù)之后被確定為最低優(yōu)先權(quán);而在特殊循環(huán)優(yōu)先級(jí)方式中,是通過編程來確定某一設(shè)備為最低優(yōu)先級(jí)。如IR5被指定為最低優(yōu)先級(jí),則IR6的優(yōu)先級(jí)最高。第3章中斷3.特殊屏蔽方式8259A的每個(gè)中斷請(qǐng)求輸入信號(hào)都可由中斷屏蔽寄存器IMR的相應(yīng)位進(jìn)行屏蔽,IMR的D0對(duì)應(yīng)IR0,D1對(duì)應(yīng)IR1,…,D7對(duì)應(yīng)IR7,相應(yīng)位為“1”則屏蔽中斷輸入,相應(yīng)位為“0”則允許中斷輸入。IMR寄存器由操作命令OCW1進(jìn)行設(shè)置。對(duì)中斷請(qǐng)求輸入信號(hào)的屏蔽方式一般有兩種:正常屏蔽方式和特殊屏蔽方式。在正常屏蔽方式中,每一個(gè)屏蔽位對(duì)應(yīng)一個(gè)中斷請(qǐng)求輸入信號(hào),屏蔽某一個(gè)中斷請(qǐng)求輸入信號(hào)對(duì)其他請(qǐng)求信號(hào)沒有影響。未被屏蔽的中斷請(qǐng)求輸入信號(hào)仍然按照設(shè)定的優(yōu)先級(jí)順序進(jìn)行工作,而且保證當(dāng)某一級(jí)中斷請(qǐng)求被響應(yīng)服務(wù)時(shí),同級(jí)和低級(jí)的中斷請(qǐng)求將被禁止,如果CPU允許中斷,則高級(jí)的中斷請(qǐng)求還會(huì)被響應(yīng),實(shí)現(xiàn)中斷嵌套。第3章中斷4.程序查詢方式程序查詢方式是不使用中斷,用軟件尋找中斷源并為之服務(wù)的工作方式。在這種方式下,8259A不向CPU發(fā)送INT信號(hào)(實(shí)際上是8259A的INT信號(hào)不連到CPU的INTR信號(hào)上),或者CPU關(guān)閉自己的中斷允許觸發(fā)器,使IF=0,禁止中斷輸入。申請(qǐng)中斷的優(yōu)先級(jí)不是由8259A提供的中斷類型碼而是由CPU發(fā)出查詢命令得到的。查詢時(shí),CPU先向8259A發(fā)出查詢命令,8259A接到查詢命令后,就把下一個(gè)IN指令(對(duì)偶地址端口的讀指令)產(chǎn)生的脈沖作為中斷響應(yīng)信號(hào),此時(shí),若有中斷請(qǐng)求信號(hào),則在ISR中相應(yīng)位置“1”,并把該優(yōu)先級(jí)送上數(shù)據(jù)總線。第3章中斷5.中斷結(jié)束方式所謂中斷結(jié)束方式是指中斷如何結(jié)束的方法,這里的“結(jié)束”不是指中斷服務(wù)程序的結(jié)束,中斷服務(wù)程序的結(jié)束用IRET指令就可完成,這里的“結(jié)束”是指如何和何時(shí)使8259A中的ISR中的相應(yīng)位清零。ISR中某位為“1”,表示CPU正在為之服務(wù);某位為“0”表示CPU已經(jīng)停止(結(jié)束)為之服務(wù)。而IRET指令主要是恢復(fù)程序的斷點(diǎn),它并不能使ISR的相應(yīng)位清零。8259A的中斷結(jié)束方式有兩種:命令中斷結(jié)束方式(EOI)和自動(dòng)中斷結(jié)束方式(AEOI)。第3章中斷(l)自動(dòng)結(jié)束在自動(dòng)中斷結(jié)束(AEOI)方式下,8259A自動(dòng)地在最后一個(gè)中斷響應(yīng)脈沖的后沿將中斷服務(wù)寄存器ISR中的相應(yīng)位清零。這種方式的過程是:中斷請(qǐng)求,CPU響應(yīng),發(fā)第一個(gè),ISR相應(yīng)位置“1”,CPU發(fā)第二個(gè),8259A提供中斷類型碼,ISR相應(yīng)位清零,結(jié)束。顯然,ISR的相應(yīng)置“1”位在CPU中斷響應(yīng)周期內(nèi)自生自滅,因此在ISR中不會(huì)有兩個(gè)或兩個(gè)以上的置“1”位。自動(dòng)中斷結(jié)束方式(AEOI)的應(yīng)用場合一般是,8259A單片系統(tǒng),或不需要嵌套的多級(jí)中斷系統(tǒng)。AEOI方式只能用于主片8259A,不能用于從片8259A。自動(dòng)中斷結(jié)束方式由ICW4的AEOI=1確定。第3章中斷(2)命令結(jié)束命令中斷結(jié)束方式(EOI)是在中斷服務(wù)程序返回之前,向8259A發(fā)中斷結(jié)束命令(EOI),使ISR中的相應(yīng)位清零。它包括兩種情況:1)非特殊EOI命令:全嵌套方式下的中斷結(jié)束命令稱為非特殊EOI命令,該命令能自動(dòng)地把當(dāng)前ISR中的最高優(yōu)先級(jí)的那一位清“0”。非特殊EOI命令是由OCW2的R=0、SL=0、EOI=1確定的。2)特殊EOI命令:非全嵌套方式下的中斷結(jié)束命令稱為特殊EOI命令。在非全嵌套方式下,由于無法確定最后響應(yīng)的是哪一級(jí)中斷(非全嵌套方式各中斷源沒有固定的優(yōu)先級(jí)別,因此也就不知道誰高誰低),所以應(yīng)向8259A發(fā)出特殊EOI命令,即指定哪一級(jí)中斷返回,使其ISR中的相應(yīng)位清“0”。第3章中斷6.讀8259A狀態(tài)讀8259A的狀態(tài)是指讀8259A內(nèi)部的IRR、ISR和IMR的內(nèi)容。(1)讀IRR。先發(fā)出OCW3命令(使RR=1、RIS=0,地址A0=0),在下一個(gè)脈沖時(shí)可讀出IRR,其中包含尚未被響應(yīng)的中斷源情況。(2)讀ISR。先發(fā)出OCW3命令(使RR=1、RIS=1,地址A0=0),在下一個(gè)脈沖時(shí)可讀出ISR,其中包含正在服務(wù)的中斷源情況,也可看中斷嵌套情況。(3)讀IMR。不必先發(fā)OCW3,只要讀奇地址端口(A0=l),則可讀出IMR,其中包含設(shè)置的中斷屏蔽情況。第3章中斷7.中斷請(qǐng)求觸發(fā)方式8259A的中斷請(qǐng)求寄存器IRR中有8個(gè)中斷請(qǐng)求觸發(fā)器,分別對(duì)應(yīng)8個(gè)中斷請(qǐng)求信號(hào)的輸入端IR0-IR7,這些觸發(fā)器的觸發(fā)方式有兩種,即邊沿觸發(fā)和電平觸發(fā)。(1)邊沿觸發(fā)當(dāng)輸入端有從低電平到高電平的正跳變時(shí),則產(chǎn)生中斷請(qǐng)求(IRR中相應(yīng)位的觸發(fā)器被觸發(fā)置“1”,而不是直接向CPU申請(qǐng)中斷)。此后,即使輸入端仍然保持高電平也不會(huì)再產(chǎn)生中斷。也就是說,只有正跳沿才能產(chǎn)生中斷。邊沿觸發(fā)方式由ICW1的LTIM=0確定。(2)電平觸發(fā)當(dāng)輸入端產(chǎn)生高電平時(shí)產(chǎn)生中斷請(qǐng)求。只要高電平就可以,不需要脈沖跳變。但需要注意的是,在電平觸發(fā)方式下,在發(fā)出EOI命令以前,必須去掉中斷請(qǐng)求信號(hào)(使其變?yōu)榈碗娖剑?,否則將產(chǎn)生第二次中斷。第3章中斷8.緩沖器方式所謂緩沖器方式就是在8259A和數(shù)據(jù)總線之間掛接總線驅(qū)動(dòng)器的方式,在緩沖器方式下,引腳將使用功能,并使之輸出一個(gè)有效低電平,開啟緩沖器工作。該方式多用于級(jí)聯(lián)的大系統(tǒng)。緩沖器方式由ICW4的BUF=1確定。第3章中斷9.特殊的全嵌套方式該方式適用于多片級(jí)連,且必須將優(yōu)先級(jí)保存在各從片8259A中的大系統(tǒng)。該方式與普通的全嵌套方式工作情況基本相同,區(qū)別在于兩點(diǎn):(1)當(dāng)某從片的一個(gè)中斷請(qǐng)求被CPU響應(yīng)后,該從片的中斷仍未被禁止(即沒有被屏蔽),即該從片中的高級(jí)中斷仍可提出申請(qǐng)(全嵌套方式中這樣的中斷是被屏蔽的,因?yàn)檫@種中斷對(duì)從片而言后者是高級(jí)中斷,可以嵌套,但對(duì)主片而言,由于它們來自于同一個(gè)從片,故中斷優(yōu)先級(jí)相同,而在全嵌套方式中,同級(jí)和低級(jí)中斷是被禁止的)。(2)在某個(gè)中斷源退出中斷服務(wù)程序之前,CPU要用軟件檢查它是否是這個(gè)從片中的唯一中斷。檢查辦法是:送一個(gè)非特殊中斷結(jié)束命令(EOI)給這個(gè)從片,然后讀它的ISR,檢查是否為0,若為0則唯一,即只有這一個(gè)中斷在被服務(wù),沒有嵌套。若不為0則不唯一,說明還有其他的中斷在被服務(wù),該中斷是嵌套在其他中斷里的。只有唯一時(shí),才能把另一個(gè)非特殊EOI命令送至主片,結(jié)束此從片的中斷。否則,如果過早地結(jié)束主片的工作記載而從片尚有未處理完的嵌套中斷的話,整個(gè)系統(tǒng)的中斷嵌套環(huán)境就會(huì)混亂。第3章中斷10.多片級(jí)聯(lián)方式在級(jí)聯(lián)系統(tǒng)中,每個(gè)從片的中斷請(qǐng)求輸出線INT直接連到主片的某個(gè)中斷請(qǐng)求輸入線上,主片的CAS0-CAS2是輸出線,輸出被響應(yīng)的從片代碼,從片的CAS0-CAS2是輸入線,接收主片發(fā)出的從片代碼,以便與自身代碼相比較。級(jí)聯(lián)方式的要點(diǎn)如下:(1)一個(gè)8259A主片至多帶8個(gè)從片,可擴(kuò)展至64級(jí)。(2)緩沖方式下,主片和從片的設(shè)定由ICW4的M/S位確定,M/S=1是主片,M/S=0是從片。M/S的狀態(tài)在BUF=l時(shí)有意義。(3)在非緩沖方式下,主片和從片由引腳的功能確定,=1是主片,=0是從片。(4)在級(jí)聯(lián)系統(tǒng)中,主片的三條級(jí)聯(lián)線相當(dāng)于從片的片選信號(hào),從片的INT是主片的中斷請(qǐng)求輸入信號(hào)。(5)主片和從片需要分別進(jìn)行初始化操作,可設(shè)定為不同的工作方式。第3章中斷3.3.38259A的編程8259A是一個(gè)可編程器件,為了使8259A實(shí)現(xiàn)預(yù)定的中斷管理功能,按預(yù)定的方式工作,就必須對(duì)它進(jìn)行初始化編程。所謂初始化編程是指系統(tǒng)在上電或復(fù)位后對(duì)可編程器件進(jìn)行控制字設(shè)定的一段程序。8259A的命令控制字包括兩個(gè)部分,即初始化命令字和操作命令字。初始化命令字一般在系統(tǒng)復(fù)位后的初始化編程中設(shè)置,用于確定8259A的基本工作方式,設(shè)置以后一般保持不變。操作命令是在初始化以后的正常工作中寫入的,它實(shí)現(xiàn)對(duì)8259A的狀態(tài)、中斷方式和過程的動(dòng)態(tài)控制,在工作中可隨時(shí)寫入操作命令字以修改某些控制方式。8259A內(nèi)部有7個(gè)寄存器,分為兩組:初始化命令寄存器組和操作命令寄存器組。初始化命令寄存器組包括4個(gè)寄存器:ICW1-ICW4對(duì)應(yīng)的寄存器。操作命令寄存器組包括3個(gè)寄存器:OCW1-OCW3對(duì)應(yīng)的寄存器。第3章中斷1.初始化命令字初始化命令字有4個(gè):ICW1、ICW2、ICW3、ICW4。8259A在進(jìn)入正常工作之前,必須將系統(tǒng)中的每一個(gè)8259A進(jìn)行初始化設(shè)置,以此建立8259A的基本工作條件。寫入的初始化命令字一般為2~4個(gè)(在某些條件下,4個(gè)初始化命令字并非必須全部寫入),最多為4個(gè),然而,ICW1使用偶地址,而ICW2、ICW3、ICW4都使用奇地址,為了相互區(qū)別,初始化命令字的寫入必須有一個(gè)固定的順序。第3章中斷8259A的ICW寫入順序第3章中斷(1)ICW1ICW1的主要功能是:確定級(jí)連方式、觸發(fā)方式。ICW1是芯片控制初始化命令字,其中D7-D5、D2位對(duì)8086以上型號(hào)CPU無意義,都可取0。寫入ICW1后,8259A內(nèi)部自動(dòng)復(fù)位,其復(fù)位功能為:1)初始化命令字順序邏輯重新置位,準(zhǔn)備接收ICW2、ICW3、ICW4。2)清除IMR和ISR。3)IRR狀態(tài)可讀。4)優(yōu)先級(jí)排隊(duì),IR0最高,IR7最低。5)特殊屏蔽方式復(fù)位。6)自動(dòng)EOI循環(huán)方式復(fù)位。第3章中斷8259A的ICW1格式(A0=0)第3章中斷(2)ICW2ICW2的主要功能是:確定中斷向量、中斷類型碼。ICW2的功能是設(shè)置中斷類型碼的初始化命令字,其格式及各位的具體定義如圖3.3.4所示。中斷類型碼的高5位就是ICW2的高5位,而低3位的值,則由8259A按引入中斷請(qǐng)求的引腳IR0-IR7三位編碼值自動(dòng)填入。第3章中斷8259A的ICW2格式(A0=1)第3章中斷(3)ICW3ICW3的主要功能是:確定主片、從片的級(jí)聯(lián)狀態(tài),即確定主片的連接位和從片的編碼。ICW3僅用于8259A的級(jí)聯(lián)方式,它分為主片ICW3和從片ICW3兩種格式。1)主片ICW3的功能是用來表明主片8259A的IRx與從片8259A的INT之間連接關(guān)系,其格式及各位的具體定義如圖3.3.5所示。圖中S0-S7分別與主片8259A的IR0-IR7引腳的連接情況相對(duì)應(yīng),如果某一個(gè)引腳上連有從片,則對(duì)應(yīng)位為1;如果未連從片,則對(duì)應(yīng)位為0。比如當(dāng)ICW3=0FH()時(shí),表示在IR3、IR2、IR1、IR0引腳上接有從片,而IR7、IR6、IR5、IR4引腳上沒連從片。2)從片ICW3的功能是用來表明從片8259A的INT引腳是和主片8259A中的哪一個(gè)IRx相連接,其格式及各位的具體定義如圖3.3.6所示。其中的D7-D3不用,可都取0。D2-D0的值與從片的輸出端INT連在主片的哪條中斷請(qǐng)求輸入引腳有關(guān)。比如,某片從片的INT引腳連在主片的IR5引腳上,則此從片的ICW3中的標(biāo)識(shí)碼D2-D0應(yīng)為101。第3章中斷8259A的ICW3格式第3章中斷3片8259A的級(jí)聯(lián)第3章中斷(4)ICW4ICW4的主要功能是:選擇CPU系統(tǒng)、確定中斷結(jié)束方式、規(guī)定是主片還是從片、選擇是否采用緩沖方式。ICW4的格式及各位的具體定義如圖3.3.8所示,其中D7-D5位無意義,都可取0。第3章中斷8259A的ICW4格式(A0=1)第3章中斷2.操作命令字在初始化命令字寫入8259A之后,8259A就準(zhǔn)備接收中斷請(qǐng)求輸入信號(hào)了。在8259A工作期間,CPU可以隨時(shí)通過操作命令字使8259A完成各種不同的工作方式。8259A
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年北京協(xié)和醫(yī)院腫瘤內(nèi)科合同制科研助理招聘備考題庫及1套參考答案詳解
- 中山大學(xué)附屬第三醫(yī)院粵東醫(yī)院2026年合同人員招聘備考題庫及一套參考答案詳解
- 商標(biāo)代理合同15篇
- 2025年臨清市財(cái)政局(國資局)公開招聘市屬國有企業(yè)副總經(jīng)理的備考題庫及1套參考答案詳解
- 2025年北京高中合格考政治(第二次)試題和答案
- (2025)廉潔答題題庫及答案
- 甘肅社區(qū)工作者村文書招聘考試真題2024
- 2025年臺(tái)州市自然資源和規(guī)劃局黃巖分局公開招聘編制外工作人員備考題庫附答案詳解
- 2025年中國人民銀行清算總中心直屬企業(yè)銀清企業(yè)服務(wù)(北京)有限公司公開招聘備考題庫完整參考答案詳解
- 2025年石獅市人民政府湖濱街道辦事處公開招聘編外工作人員備考題庫有答案詳解
- 合法斷絕母子關(guān)系協(xié)議書范文
- 北京市西城區(qū)2023-2024學(xué)年三年級(jí)上學(xué)期語文期末試卷
- 河北省石家莊市裕華區(qū)石家莊市第四十中學(xué)2024-2025學(xué)年七年級(jí)上學(xué)期期中地理試題(含答案)
- 手術(shù)清點(diǎn)記錄評(píng)分標(biāo)準(zhǔn)
- 中國戲曲劇種鑒賞智慧樹知到期末考試答案章節(jié)答案2024年上海戲劇學(xué)院等跨校共建
- pet薄膜生產(chǎn)工藝
- 二年級(jí)【語文(統(tǒng)編版)】語文園地一(第一課時(shí))課件
- 肝臟的營養(yǎng)與保健知識(shí)講座
- 2024屆遼寧省撫順市名校數(shù)學(xué)九年級(jí)第一學(xué)期期末達(dá)標(biāo)檢測模擬試題含解析
- 2023年廣東省佛山市順德區(qū)小升初數(shù)學(xué)試卷(含答案)
- 區(qū)域經(jīng)濟(jì)空間結(jié)構(gòu)理論之增長極理論
評(píng)論
0/150
提交評(píng)論