第五章輸入輸出基本技術(shù)_第1頁
第五章輸入輸出基本技術(shù)_第2頁
第五章輸入輸出基本技術(shù)_第3頁
第五章輸入輸出基本技術(shù)_第4頁
第五章輸入輸出基本技術(shù)_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第五章第五章 輸入輸出基本技術(shù)輸入輸出基本技術(shù)mov ax,12hcall displayJmp 1234h【回顧】微機(jī)系統(tǒng)主機(jī)與外部設(shè)備之間的數(shù)據(jù)傳送控制方式,中斷的概念及處理過程?!颈局v重點(diǎn)】8086中斷系統(tǒng);中斷控制器Intel8259A的性能概述,內(nèi)、外部結(jié)構(gòu),工作過程,工作方式等。【講授內(nèi)容】5. 1中斷的概念及處理過程一、中斷的基本概念1、中斷從查詢式的傳輸過程可以看出,它的優(yōu)點(diǎn)是硬件開銷小,使用起來比較簡(jiǎn)單。但在此方式下,CPU要不斷地查詢外設(shè)的狀態(tài),當(dāng)外設(shè)未準(zhǔn)備好時(shí),CPU就只能循環(huán)等待,不能執(zhí)行其它程序,這樣就浪費(fèi)了CPU的大量時(shí)間,降低了主機(jī)的利用率。為了解決這個(gè)矛盾,我們

2、提出了中斷傳送方式,即當(dāng)CPU進(jìn)行主程序操作時(shí),外設(shè)的數(shù)據(jù)已存入輸入端口的數(shù)據(jù)寄存器;或端口的數(shù)據(jù)輸出寄存器已空,由外設(shè)通過接口電路向CPU發(fā)出中斷請(qǐng)求信號(hào),CPU在滿足一定的條件下,暫停執(zhí)行當(dāng)前正在執(zhí)行的主程序,轉(zhuǎn)入執(zhí)行相應(yīng)能夠進(jìn)行輸入/輸出操作的子程序,待輸入/輸出操作執(zhí)行完畢之后CPU即返回繼續(xù)執(zhí)行原來被中斷的主程序。這樣CPU就避免了把大量時(shí)間耗費(fèi)在等待、查詢狀態(tài)信號(hào)的操作上,使其工作效率得以大大地提高。能夠向CPU發(fā)出中斷請(qǐng)求的設(shè)備或事件稱為中斷源。微機(jī)系統(tǒng)引入中斷機(jī)制后,使CPU與外設(shè)(甚至多個(gè)外設(shè))處于并行工作狀態(tài),便于實(shí)現(xiàn)信息的實(shí)時(shí)處理和系統(tǒng)的故障處理。中斷方式的原理示意圖如圖

3、7-1所示。圖7-1 中斷方式的原理2、中斷請(qǐng)求信號(hào)的產(chǎn)生中斷方式提高了CPU的工作效率,但是它同時(shí)也提高了系統(tǒng)的硬件開銷。因?yàn)橄到y(tǒng)需增加含有中斷功能接口電路,用來產(chǎn)生中斷請(qǐng)求信號(hào)。以輸入方式為例,接口電路如圖7-2所示。圖7-2 中斷請(qǐng)求信號(hào)的產(chǎn)生數(shù)據(jù)輸入的過程 當(dāng)外設(shè)發(fā)STB數(shù)據(jù)入鎖存器,中斷請(qǐng)求觸發(fā)器置1若沒有屏蔽則產(chǎn)生INTRCPU滿足條件(允許中斷;指令執(zhí)行完)發(fā)INTA(進(jìn)入中斷服務(wù)子程序)讀數(shù)據(jù),發(fā)RD,和地址清中斷請(qǐng)求觸發(fā)器,數(shù)據(jù)送D0D7。(輸出過程請(qǐng)自己思考)3、中斷優(yōu)先級(jí)當(dāng)系統(tǒng)中有多個(gè)設(shè)備提出中斷請(qǐng)求時(shí),就有一個(gè)該響應(yīng)誰的問題,也就是一個(gè)優(yōu)先級(jí)的問題,解決優(yōu)先級(jí)的問題一般

4、可有三種方法:軟件查詢法、簡(jiǎn)單硬件方法及專用硬件方法。下面分別介紹:(1) 軟件查詢法只需有簡(jiǎn)單的硬件電路,如將A、B、C三臺(tái)設(shè)備的中斷請(qǐng)求信號(hào)“或”后作為系統(tǒng)INTR,這時(shí),A、B、C三臺(tái)設(shè)備中只要至少有一臺(tái)設(shè)備提出中斷請(qǐng)求,都可以向CPU發(fā)中斷請(qǐng)求。進(jìn)入中斷服務(wù)子程序后,再用軟件查詢的方式分別對(duì)不同的設(shè)備的服務(wù),查詢程序的設(shè)計(jì)思想同查詢式,查詢的前后順序就給出了設(shè)備的優(yōu)先級(jí),框圖如圖所示。(2) 簡(jiǎn)單硬件方法以鏈?zhǔn)街袛鄡?yōu)先權(quán)排隊(duì)電路為例,基本設(shè)計(jì)思想 將所有的設(shè)備連成一條鏈,靠近CPU的設(shè)備優(yōu)先級(jí)最高,越遠(yuǎn)的設(shè)備優(yōu)先級(jí)別越低,則發(fā)出中斷響應(yīng)信號(hào),若級(jí)別高的設(shè)備發(fā)出了中斷請(qǐng)求,在它接到中斷響

5、應(yīng)信號(hào)的同時(shí),封鎖其后的較低級(jí)設(shè)備使得它們的中斷請(qǐng)求不能響應(yīng),只有等它的中斷服務(wù)結(jié)束以后才開放,允許為低級(jí)的設(shè)備服務(wù)。如圖所示。(3) 專用硬件方式采用可編程的中斷控制器芯片,如Intel8259A。圖7-3 中斷控制器的系統(tǒng)連接 有了中斷控制器以后,CPU的INTR和引腳不再與接口直接相連,而是與中斷控制器相連,外設(shè)的中斷請(qǐng)求信號(hào)通過IR0IR7進(jìn)入中斷控制器,經(jīng)優(yōu)先級(jí)管理邏輯確認(rèn)為級(jí)別最高的那個(gè)請(qǐng)求的類型號(hào)會(huì)經(jīng)過中斷類型寄存器在當(dāng)前中斷服務(wù)寄存器的某位上置1,并向CPU發(fā)INTR請(qǐng)求,CPU發(fā)出信號(hào)后,中斷控制器將中斷類型碼送出。在整個(gè)過程中,優(yōu)先級(jí)較低的中斷請(qǐng)求都受到阻塞,直到較高級(jí)的中

6、斷服務(wù)完畢之后,當(dāng)前服務(wù)寄存器的對(duì)應(yīng)位清0,較低級(jí)的中斷請(qǐng)求才有可能被響應(yīng)。電路如圖圖5-11所示。利用中斷控制器可以通過編程來設(shè)置或改變其工作方式,使用起來方便靈活。4、中斷響應(yīng)中斷源向CPU發(fā)出中斷請(qǐng)求,若優(yōu)先級(jí)別最高,CPU在滿足一定的條件下,可以中斷當(dāng)前程序的運(yùn)行,保護(hù)好被中斷的主程序的斷點(diǎn)及現(xiàn)場(chǎng)信息。然后,根據(jù)中斷源提供的信息,找到中斷服務(wù)子程序的入口地址,轉(zhuǎn)去執(zhí)行新的程序段,這就是中斷響應(yīng)。注意 CPU響應(yīng)中斷是有條件的,如內(nèi)部允許中斷、中斷未被屏蔽、當(dāng)前指令執(zhí)行完等。5、中斷服務(wù)子程序CPU響應(yīng)中斷以后,就會(huì)中止當(dāng)前的程序,轉(zhuǎn)去執(zhí)行一個(gè)中斷服務(wù)子程序,以完成為相應(yīng)設(shè)備的服務(wù)。中斷

7、服務(wù)子程序的一般結(jié)構(gòu)如圖7-4所示。圖7-4 中斷服務(wù)子程序(1) 保護(hù)現(xiàn)場(chǎng)(由一系列的PUSH指令完成)。目的是為了保護(hù)那些與主程序中有沖突的寄存器,(如AX,BX,CX等),如果中斷服務(wù)子程序中所使用的寄存器與主程序中所使用的寄存器等沒有沖突的話,這一步驟可以省略。(2) 開中斷(由STI指令實(shí)現(xiàn))。目的是為了能實(shí)現(xiàn)中斷的嵌套。(3) 中斷服務(wù)(4) 恢復(fù)現(xiàn)場(chǎng)是與保護(hù)現(xiàn)場(chǎng)對(duì)應(yīng)的,但要注意數(shù)據(jù)恢復(fù)的次序,以免混亂。(5) 返回(使用中斷返回指令I(lǐng)RET)。不能使用一般的子程序返回指令RET,因?yàn)镮RET指令除了能恢復(fù)斷點(diǎn)地址外,還能恢復(fù)中斷響應(yīng)時(shí)的標(biāo)志寄存器的值,而這后一個(gè)動(dòng)作是RET指令不

8、能完成的。中斷的工作過程可分為五大步驟:即中斷請(qǐng)求、中斷判優(yōu)、中斷響應(yīng)、中斷服務(wù)和中斷返回。5. 2 8086中斷系統(tǒng)一、中斷分類及中斷類型碼中斷源 引起中斷的原因或發(fā)出中斷請(qǐng)求的設(shè)備稱為中斷源。中斷的分類共分為兩類:硬件中斷和軟件中斷(1) 硬件中斷 即通過外部的硬件產(chǎn)生的中斷,如打印機(jī)、鍵盤等,有時(shí)也稱為外部中斷。硬件中斷又可分為兩類:可屏蔽中斷和不可屏蔽中斷。不可屏蔽中斷:由NMI引腳引入,它不受中斷允許標(biāo)志的影響,每個(gè)系統(tǒng)中僅允許有一個(gè),都是用來處理緊急情況的,如掉電處理。這種中斷一旦發(fā)生,系統(tǒng)會(huì)立即響應(yīng);可屏蔽中斷:由INTR引腳引入,它受中斷允許標(biāo)志的影響,也就是說,只有當(dāng)IF1時(shí)

9、,可屏蔽中斷才能進(jìn)入,反之則不允許進(jìn)入,可屏蔽中斷可有多個(gè),一般是通過優(yōu)先級(jí)排隊(duì),從多個(gè)中斷源中選出一個(gè)進(jìn)行處理。(2) 軟件中斷(內(nèi)部中斷):即根據(jù)某條指令或者對(duì)標(biāo)志寄存器中某個(gè)標(biāo)志的設(shè)置而產(chǎn)生,它與硬件電路無關(guān),常見的如除數(shù)為0,或用INT n指令產(chǎn)生。INTn指令中斷邏輯INTO指令單步中斷INT 3指令除數(shù)為0中斷非屏蔽中斷請(qǐng)求中斷控制系統(tǒng)(8259A)??善帘沃袛嗾?qǐng)求NMIINTR軟件中斷硬件中斷溢出中斷由INT0指令引起斷點(diǎn)中斷由INT3指令引起單步由標(biāo)志TF引起 不對(duì)應(yīng)指令除0由計(jì)算結(jié)果引起 不對(duì)應(yīng)指令2.中斷類型碼8086為每個(gè)中斷源分配了一個(gè)中斷類型碼,其取值范圍為0255,

10、即可處理256種中斷。其中包括軟件中斷,系統(tǒng)占用的中斷以及開放給用戶使用的中斷。二、中斷向量和中斷向量表系統(tǒng)處理中斷的方法很多,處理中斷的步驟中最主要的一步就是如何根據(jù)不同的中斷源進(jìn)入相應(yīng)的中斷服務(wù)子程序,目前用的最多的就是向量式中斷。中斷向量 把各個(gè)中斷服務(wù)子程序的入口都稱為一個(gè)中斷向量;中斷向量表 將這些中斷向量按一定的規(guī)律排列成一個(gè)表,就是所謂的中斷向量表,當(dāng)中斷源發(fā)出中斷請(qǐng)求時(shí),即可查找該表,找出其中斷向量,就可轉(zhuǎn)入相應(yīng)的中斷服務(wù)子程序。8086中斷系統(tǒng)中的中斷向量表是位于0段的03FFFH的存貯區(qū)內(nèi),每個(gè)中斷向量占四個(gè)單元,其中前兩個(gè)單元存放中斷處理子程序的入口地址的偏移量(IP),

11、低位在前,高位在后;后兩個(gè)單元存放中斷處理子程序入口地址的段地址(CS),也是低位在前,高位在后,整個(gè)中斷向量的排列是按中斷類型號(hào)進(jìn)行的。圖示給出了中斷類型碼與中斷向量所在位置之間的對(duì)應(yīng)關(guān)系。其中00H04H為專用中斷,05H3FH為系統(tǒng)保留中斷,用戶一般是不能對(duì)它們定義的(這里面有一些為固定的用途,如INT 21H即為MSDOS 的系統(tǒng)調(diào)用),40FF為用戶定義的中斷。p26900H04H-系統(tǒng)專用10H1FH-BIOS用40HFFH-用戶用08H0FH-硬件中斷20H3FH-DOS用中斷類型號(hào)*4即可計(jì)算某個(gè)中斷類型的中斷向量在整個(gè)中斷向量表中的位置。如類型號(hào)為20H,則中斷向量的存放位置

12、為20H480H,(設(shè)中斷服務(wù)子程序的入口地址為4030:2010,則在0000:0080H0000:0083H中就應(yīng)順序放入10H、20H、30H、40H。當(dāng)系統(tǒng)響應(yīng)20H號(hào)中斷時(shí),會(huì)自動(dòng)查找中斷向量,找出對(duì)應(yīng)的中斷向量裝入CS、IP,即轉(zhuǎn)入該中斷服務(wù)子程序。三、中斷響應(yīng)過程與時(shí)序8086對(duì)軟件中斷和硬件中斷響應(yīng)的過程是不同的,這是由于軟件中斷和硬件中斷所產(chǎn)生的原因不同,下面主要討論硬件中斷的情況。硬件中斷的響應(yīng)過程硬件中斷指的是由NMI引腳進(jìn)入的非屏蔽中斷或由INTR引腳進(jìn)入的可屏蔽中斷。下面以可屏蔽中斷為例。CPU在INTR引腳上接到一個(gè)中斷請(qǐng)求信號(hào),如果此時(shí)IF1,CPU就會(huì)在當(dāng)前指令

13、執(zhí)行完以后開始響應(yīng)外部的中斷請(qǐng)求,這時(shí),CPU在INTA引腳連續(xù)發(fā)兩個(gè)負(fù)脈沖,外設(shè)在接到第二個(gè)負(fù)脈沖以后,在數(shù)據(jù)線上發(fā)送中斷類型碼,接到這個(gè)中斷類型碼后,CPU做如下動(dòng)作:(1) 將中斷類型碼放入暫存器保存;(2) 將標(biāo)志寄存器內(nèi)容壓入堆棧,以保護(hù)中斷時(shí)的狀態(tài);(3) 將IF和TF標(biāo)志清0,目的是防止在中斷響應(yīng)的同時(shí)又來別的中斷,而將TF清0是為了防止CPU以單步方式執(zhí)行中斷處理子程序。這時(shí)要特別提醒,因?yàn)镃PU在中斷響應(yīng)時(shí)自動(dòng)關(guān)閉了IF標(biāo)志,因此用戶如要進(jìn)行中斷嵌套時(shí),必須在自己的中斷處理子程序中用開中斷指令來重新設(shè)置IF;(4) 保護(hù)斷點(diǎn),斷點(diǎn)指的是在響應(yīng)中斷時(shí),主程序當(dāng)前指令下面的一條指

14、令的地址。因此保護(hù)斷點(diǎn)的動(dòng)作就是將當(dāng)前的IP和CS的內(nèi)容入棧,保護(hù)斷點(diǎn)是為了以后正確地返回主程序;(5) 根據(jù)取到的中斷類型碼,在中斷向量表中找出相應(yīng)的中斷向量,將其裝入IP和CS,即呆自動(dòng)轉(zhuǎn)向中斷服務(wù)子程序。對(duì)NMI進(jìn)入的中斷請(qǐng)求,由于其類型碼固定為2,因此CPU不用從外設(shè)讀取類型碼,也不需計(jì)算中斷向量表的地址,只要將中斷向量表中0000:0008H0000:000BH單元內(nèi)容分別裝入IP和CS即可。圖7-5給出了8086中斷響應(yīng)過程的流程圖,對(duì)這個(gè)圖我們做幾點(diǎn)說明:(1) 8086除軟件中斷外,內(nèi)部“非屏蔽中斷”、“可屏蔽中斷”均設(shè)立有優(yōu)先級(jí),其中內(nèi)中(除單步外)-即0、1、3、4號(hào)中斷的

15、優(yōu)先級(jí)高于非屏蔽中斷,非屏蔽中斷高于可屏蔽中斷,單步中斷優(yōu)先級(jí)最低;(2) 只有在可屏蔽中斷的情況下才判IF1?,才取中斷類型碼,其余的沒有這個(gè)動(dòng)作。(3) 關(guān)于單步中斷,它是每執(zhí)行一條指令中斷一次,顯示出當(dāng)時(shí)各寄存器的內(nèi)容,供用戶參考,當(dāng)進(jìn)入單步中斷響應(yīng)時(shí),CPU自動(dòng)清除了TF,在中斷返回后,由于恢復(fù)了響應(yīng)時(shí)的標(biāo)志寄存器的值,因此TF1,執(zhí)行完一條指令后又進(jìn)入單步中斷,直到程序?qū)F改為0為止。(4) 關(guān)于中斷的嵌套,NMI總是可以響應(yīng)的,若在中斷處理子程序中設(shè)立了開中斷指令,INTR的請(qǐng)求也能響應(yīng)。(5) 彈出IP、CS、標(biāo)志,返回?cái)帱c(diǎn)的動(dòng)作由IRET指令完成。(6) 有些情況下,即使條件

16、滿足,CPU也不能馬上響應(yīng)中斷,必須執(zhí)行完下一條指令(而不是當(dāng)前指令)才行。正好執(zhí)行LOCK指令;執(zhí)行往SS寄存器賦值的傳送指令,因?yàn)橐话阋筮B續(xù)用兩條指令對(duì)SS和SP寄存器賦值,以保證堆棧指針的正確性。(7) 當(dāng)遇到等待指令或串操作指令時(shí),允許在指令執(zhí)行的過程中進(jìn)入中斷。這時(shí)需注意在中斷處理子程序中保護(hù)現(xiàn)場(chǎng),以保證中斷返回后能繼續(xù)正確地執(zhí)行這些指令。圖7-5 中斷響應(yīng)流程圖2.硬件中斷的時(shí)序7-6 8086中斷響應(yīng)總線周期(1) 要求INTR信號(hào)是一個(gè)高電平信號(hào),并且維持2個(gè)T,因?yàn)镃PU是在一條指令的最后一個(gè)T采樣INTR,進(jìn)入中斷響應(yīng)后,它在第一個(gè)總線周期的T1仍需采樣INTR。(2)

17、當(dāng)8086工作在最小模式時(shí),從INTA發(fā)出中斷響應(yīng)信號(hào),而在最大模式進(jìn),則是通過S2、S1、S0的組合完成。(3) 第一個(gè)總線周期用來通知外設(shè),CPU準(zhǔn)備響應(yīng)中斷,第二個(gè)總線周期,接收外設(shè)發(fā)回的中斷類型碼,該類型碼必須通過16位數(shù)據(jù)總線的低8位傳送。(4) 在中斷響應(yīng)總線周期,M/IO為低,數(shù)據(jù)/地址線浮空,BHE/S7和地址/狀態(tài)線均浮空,中間的三個(gè)空閑周期也可為兩個(gè)。3.軟件中斷即通過中斷指令來使CPU執(zhí)行中斷處理子程序的方法,特點(diǎn)如下:(1) 中斷類型碼由指令提供,不需執(zhí)行中斷響應(yīng)總線周期,也不受IF標(biāo)志的影響。(2) 正在執(zhí)行軟件中斷時(shí),若來NMI,則立即響應(yīng),若來可屏蔽中斷,只要條件

18、允許(如IF1,當(dāng)前指令執(zhí)行完)也可響應(yīng)。(3) 軟件中斷,由于其處理程序是定位裝配的(中斷向量表),又可方便地用INT n指令調(diào)用,因此在使用中和一般的子程序沒有兩樣,并且原則上是0255種類型均可使用?!玖?xí)題與思考】1何謂中斷優(yōu)先級(jí),它對(duì)于實(shí)時(shí)控制有什么意義?8086CPU系統(tǒng)中,NMI與INTR哪個(gè)優(yōu)先級(jí)高?2試結(jié)合8086的INTR中斷響應(yīng)過程,說明向量中斷的基本概念和處理方法。3在中斷響應(yīng)總線周期中,第一個(gè)INTA脈沖向外部電路說明什么?第二個(gè)脈沖呢?4中斷向量表的功能是什么?已知中斷類型碼分別是84H和FAH,它們的中斷向量應(yīng)放在中斷向量表的什么位置?5.3 中斷控制器Intel8

19、259AIntel 8259A是8086微機(jī)系統(tǒng)的中斷控制器件,它具有對(duì)外設(shè)中斷源進(jìn)行管理,并向CPU轉(zhuǎn)達(dá)中斷請(qǐng)求的能力。一、8259A的性能概述1. 具有8級(jí)中斷優(yōu)先控制,通過級(jí)連可以擴(kuò)展至64級(jí)優(yōu)先權(quán)控制2. 每一級(jí)中斷都可以通過初始設(shè)置為允許或屏蔽狀態(tài)3. 8259A的工作方式,可以通過編程進(jìn)行設(shè)置,因此,使用非常靈活4. 8259A采用NMOS制造工藝,只需要單一的+5V電源二、 8259A的內(nèi)部結(jié)構(gòu)和工作原理下面,我們來討論8259A的內(nèi)部結(jié)構(gòu),并進(jìn)而分析它的工作原理,8259A的內(nèi)部結(jié)構(gòu)如圖7-7所示,它主要由下列主要部分組成:圖7-7 8259A的內(nèi)部結(jié)構(gòu)1.數(shù)據(jù)總線緩沖器 它是

20、8259A與系統(tǒng)數(shù)據(jù)總線的接口,是8位雙向三態(tài)緩沖器。CPU與8259A之間的控制命令信息、狀態(tài)信息以及中斷類型信息,都是通過該緩沖器傳送的。2.讀/寫控制邏輯 CPU通過它實(shí)現(xiàn)對(duì)8259A的讀/寫操作。3.級(jí)連緩沖器 用以實(shí)現(xiàn)8259A芯片之間的級(jí)連,使得中斷源可以由8級(jí)擴(kuò)展至64級(jí)。4.控制邏輯電路 對(duì)整個(gè)芯片內(nèi)部各部件的工作進(jìn)行協(xié)調(diào)和控制。5.中斷請(qǐng)求寄存器IRR 8位,用以分別保存8個(gè)中斷請(qǐng)求信號(hào),當(dāng)相應(yīng)的中斷請(qǐng)求輸入引腳有中斷請(qǐng)求時(shí),該寄存器的相應(yīng)位置1。6.中斷屏蔽寄存器IMR 8位,相應(yīng)位用以對(duì)8個(gè)中斷源的中斷請(qǐng)求信號(hào)進(jìn)行屏蔽控制。當(dāng)其中某位置”0”時(shí),則相應(yīng)的中斷請(qǐng)求可以向CP

21、U提出;否則,相應(yīng)的中斷請(qǐng)求被屏蔽,即不允許向CPU提出中斷請(qǐng)求。該寄存器的內(nèi)容為8259A的操作命令字OCW1,可以由程序設(shè)置或改變。7.中斷服務(wù)寄存器ISR 8位,當(dāng)CPU正在處理某個(gè)中斷源的中斷請(qǐng)求時(shí),ISR寄存器中的相應(yīng)位置1。8.優(yōu)先級(jí)比較器 用以比較正在處理的中斷和剛剛進(jìn)入的中斷請(qǐng)求之間的優(yōu)先級(jí)別,以決定是否產(chǎn)生多重中斷或中斷嵌套。三、8259A的外部引腳8259A是具有28個(gè)引腳的集成電路芯片,這28個(gè)引腳分別是:1. D7-D0 雙向數(shù)據(jù)輸入/輸出引腳,用以與CPU進(jìn)行信息交換。2. IR7-IR0 8級(jí)中斷請(qǐng)求信號(hào)輸入引腳,規(guī)定的優(yōu)先級(jí)為IR0IR1IR7,當(dāng)有多片8259A

22、形成級(jí)連時(shí),從片的INT與主片的IRi相連。3. INT 中斷請(qǐng)求信號(hào)輸出引腳,高電平有效,用以向CPU發(fā)中斷請(qǐng)求,應(yīng)接在CPU的INTR輸入端。4. INTA中斷響應(yīng)應(yīng)答信號(hào)輸入引腳,低電平有效,在CPU發(fā)出第二個(gè)INTA時(shí),8259A將其中最高級(jí)別的中斷請(qǐng)求的中斷類型碼送出;應(yīng)接在CPU的INTA中斷應(yīng)答信號(hào)輸出端。5. RD讀控制信號(hào)輸入引腳,低電平有效,實(shí)現(xiàn)對(duì)8259A內(nèi)部有關(guān)寄存器內(nèi)容的讀操作。6. WR寫控制信號(hào)輸入引腳,低電平有效,實(shí)現(xiàn)對(duì)8259A內(nèi)部有關(guān)寄存器的寫操作。7. CS 片選信號(hào)輸入引腳,低電平有效,一般由系統(tǒng)地址總線的高位,經(jīng)譯碼后形成,決定了8259A的端口地址范

23、圍。8. A0、A1 8259A兩組內(nèi)部寄存器的選擇信號(hào)輸入引腳,決定8259A的端口地址。A00 ICW1、OCW2、OCW3;A01 ICW2ICW4、OCW19. CAS2-CAS0 級(jí)連信號(hào)引腳,當(dāng)8259A為主片時(shí),為輸出;否則為輸入,與所配、SP/EN信號(hào)配合,實(shí)現(xiàn)芯片的級(jí)連,這三個(gè)引腳信號(hào)的不同組合000111,剛好對(duì)應(yīng)于8個(gè)從片。10. SP/EN :為級(jí)連管理信號(hào)輸入引腳,在非緩沖方式下,若8259A在系統(tǒng)中作從片使用,則;否則;在緩沖方式下,用作8259A外部數(shù)據(jù)總線緩沖器的啟動(dòng)信號(hào)。11. +5V、GND 電源和接地引腳四、 8259A的工作過程1. 當(dāng)有一條或若干條中斷

24、請(qǐng)求輸入(IR7-IR0)有效時(shí),則使中斷請(qǐng)求寄存器的IRR的相應(yīng)位置位。2. 若CPU處于開中斷狀態(tài),則在當(dāng)前指令執(zhí)行完之后,響應(yīng)中斷,并且從INTA發(fā)應(yīng)答信號(hào)(兩個(gè)連續(xù)INTA的負(fù)脈沖)。3. 第一個(gè)INTA負(fù)脈沖到達(dá)時(shí),IRR的鎖存功能失效,對(duì)于IR7-IR0上發(fā)來的中斷請(qǐng)求信號(hào)不予理睬。4. 使正服務(wù)寄存器ISR的相應(yīng)位置1,以便為中斷優(yōu)先級(jí)比較器的工作做好準(zhǔn)備。5. 使寄存器IRR的相應(yīng)位復(fù)位,即清除中斷請(qǐng)求。6. 第二個(gè)INTA負(fù)脈沖到達(dá)時(shí),將中斷類型寄存器中的內(nèi)容ICW2,送到數(shù)據(jù)總線的D7-D0上,CPU以此作為相應(yīng)中斷的類型碼。7. 若ICW4中的中斷結(jié)束位為1,那么,第二個(gè)

25、INTA負(fù)脈沖結(jié)束時(shí),8259A將ISR寄存器的相應(yīng)位清零。否則,直至中斷服務(wù)程序執(zhí)行完畢,才能通過輸出操作命令字EOI,使該位復(fù)位。五、 8259A的工作方式8259A有多種工作方式,這些工作方式,可以通過編程設(shè)置或改變。下面,我們進(jìn)行分類介紹。1. 優(yōu)先權(quán)的管理方式(1).全嵌套方式這是8259A默認(rèn)的優(yōu)先權(quán)設(shè)置方式,在全嵌套方式下,8259A所管理的8級(jí)中斷優(yōu)先權(quán)是固定不變的,其中IR0的中斷優(yōu)先級(jí)最高,IR7的中斷優(yōu)先級(jí)最低。CPU響應(yīng)中斷后,請(qǐng)求中斷的中斷源中,優(yōu)先級(jí)最高的中斷源,在中斷服務(wù)寄存器ISR中的相應(yīng)位置位,而且把它的中斷矢量送至系統(tǒng)數(shù)據(jù)總線,在此中斷源的中斷服務(wù)完成之前,

26、與它同級(jí)或優(yōu)先級(jí)低的中斷源的中斷請(qǐng)求被屏蔽,只有優(yōu)先級(jí)比它高的中斷源的中斷請(qǐng)求才是運(yùn)算的,從而出現(xiàn)中斷嵌套。(2).特殊全嵌套方式特殊全嵌套方式與全嵌套方式基本相同,所不同的是,當(dāng)CPU處理某一級(jí)中斷時(shí),如果有同級(jí)中斷請(qǐng)求,那么CPU也會(huì)作出響應(yīng),從而形成了對(duì)同一級(jí)中斷的特殊嵌套。特殊全嵌套方式通常應(yīng)用在有8259A級(jí)連的系統(tǒng)中,在這種情況下,對(duì)主8259A編程時(shí),通常使它工作在特殊全嵌套方式下。這樣,一方面,CPU對(duì)于優(yōu)先級(jí)別較高的主片的中斷輸入是允許的,另一方面,CPU對(duì)于來自同一從片的優(yōu)先級(jí)別較高(但對(duì)于主片來講,優(yōu)先級(jí)別是相同的)的中斷也是允許、能夠響應(yīng)的。(3).優(yōu)先級(jí)自動(dòng)循環(huán)方式在

27、實(shí)際應(yīng)用中,中斷源優(yōu)先級(jí)的情況是比較復(fù)雜的,要求8級(jí)中斷的優(yōu)先級(jí)在系統(tǒng)工作過程中,可以動(dòng)態(tài)改變。即一個(gè)中斷源的中斷請(qǐng)求被響應(yīng)之后,其優(yōu)先級(jí)自動(dòng)降為最低。系統(tǒng)啟動(dòng)時(shí),8級(jí)中斷優(yōu)先級(jí)默認(rèn)為IR0IR7,這時(shí),剛好IR4發(fā)出了中斷請(qǐng)求,CPU響應(yīng)之后,若8259A工作在優(yōu)先級(jí)自動(dòng)循環(huán)方式下,則中斷優(yōu)先級(jí)自動(dòng)變?yōu)镮R5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。(4).優(yōu)先級(jí)特殊循環(huán)方式優(yōu)先級(jí)特殊循環(huán)方式與自動(dòng)循環(huán)方式相比,只有一點(diǎn)不同,即初始化的優(yōu)先級(jí)是由程序控制的,而不是默認(rèn)的IR0IR7。2.中斷源的屏蔽方式CPU對(duì)于8259A提出的中斷請(qǐng)求,都可以加以屏蔽控制,屏蔽控制有下列幾種

28、方式:(1).普通屏蔽方式8259A的每個(gè)中斷請(qǐng)求輸入,都要受到屏蔽寄存器中相應(yīng)位的控制。若相應(yīng)位為“1”,則中斷請(qǐng)求不能送CPU。屏蔽是通過對(duì)屏蔽寄存器IMR的編程(操作命令字OCW1),來加以設(shè)置和改變的。(2).特殊屏蔽方式有些場(chǎng)合下,希望一個(gè)中斷服務(wù)程序的運(yùn)行過程中,能動(dòng)態(tài)地改變系統(tǒng)中的中斷優(yōu)先級(jí)結(jié)構(gòu),即在中斷處理的一部分,禁止低級(jí)中斷,而在中斷處理的另一部分,又能夠允許低級(jí)中斷,于是引入了對(duì)中斷的特殊屏蔽方式。設(shè)置了特殊屏蔽方式后,用OCW1對(duì)屏蔽寄存器中的某一位復(fù)位時(shí),同時(shí)也會(huì)是中斷服務(wù)寄存器ISR中的相應(yīng)位復(fù)位,這樣就不只屏蔽了正在處理的等級(jí)中斷,而且真正開放了其它優(yōu)先級(jí)別較低的

29、中斷請(qǐng)求。特殊屏蔽是在中斷處理程序中使用的,用了這種方式之后,盡管系統(tǒng)正在處理高級(jí)中斷,但對(duì)外界來講,只有同級(jí)中斷被屏蔽,而允許其它任何級(jí)別的中斷請(qǐng)求。3. 結(jié)束中斷處理的方式按照對(duì)中斷結(jié)束(復(fù)位中斷響應(yīng)寄存器ISR中相應(yīng)位)的不同處理,8259A有兩種工作方式,即自動(dòng)結(jié)束方式(AEI)和非自動(dòng)結(jié)束方式。而非自動(dòng)結(jié)束方式又可進(jìn)一步分為一般的中斷結(jié)束方式和特殊的中斷結(jié)束方式。(1). 中斷自動(dòng)結(jié)束方式這種方式僅適用于只有單片8259A的場(chǎng)合,在這種方式下,系統(tǒng)一旦響應(yīng)中斷,那么CPU在發(fā)第二個(gè)INTA脈沖時(shí),就會(huì)使中斷響應(yīng)寄存器ISR中相應(yīng)位復(fù)位,這樣一來,雖然系統(tǒng)在進(jìn)行中斷處理,但對(duì)于8259

30、A來講,ISR沒有相應(yīng)的指示,就象中斷處理結(jié)束,返回主程序之后一樣。CPU可以再次響應(yīng)任何級(jí)別的中斷請(qǐng)求。(2). 一般的中斷結(jié)束方式一般的中斷結(jié)束方式適用用在全嵌套的情況下,當(dāng)CPU用輸出指令向8259A發(fā)一般中斷中斷結(jié)束命令OCW2時(shí),8259A才會(huì)使中斷響應(yīng)寄存器ISR中優(yōu)先級(jí)別最高的位復(fù)位。(3). 特殊的中斷結(jié)束方式在特殊全嵌套模式下,系統(tǒng)無法確定哪一級(jí)中斷為最后相應(yīng)和處理的中斷,也就是說,CPU無法確定當(dāng)前所處理的是哪級(jí)中斷,這時(shí)就要采用特殊的中斷結(jié)束方式。特殊的中斷結(jié)束方式是指在CPU結(jié)束中斷處理之后,向8259A發(fā)送一個(gè)特殊的EOI中斷結(jié)束命令,這個(gè)特殊的中斷結(jié)束EOI命令,明

31、確指出了中斷響應(yīng)寄存器ISR中需要復(fù)位的位。這里,我們還要指出一點(diǎn),在級(jí)聯(lián)方式下,一般不用自動(dòng)中斷結(jié)束方式,而需要用非自動(dòng)結(jié)束中斷方式,一個(gè)中斷處理程序結(jié)束時(shí),都必須發(fā)兩個(gè)中斷結(jié)束EOI命令,一個(gè)發(fā)往主片,一個(gè)發(fā)往從片。4. 系統(tǒng)總線的連接方式按照8259A與系統(tǒng)總線的連接方式來分,有下列兩種方式:(1).緩沖方式在多片8259A級(jí)連的大系統(tǒng)中,8259A通過外部總線驅(qū)動(dòng)器和數(shù)據(jù)總線相連,這就是緩沖方式。在緩沖方式下,8259的SP/EN輸出信號(hào)作為緩沖器的啟動(dòng)信號(hào),用來啟動(dòng)總線驅(qū)動(dòng)器,在8259A與CPU之間進(jìn)行信息交換。(2).非緩沖方式當(dāng)系統(tǒng)中只有一片或幾片8259A芯片時(shí),可以將數(shù)據(jù)總

32、線直接與系統(tǒng)數(shù)據(jù)總線相連,這時(shí)8259A處于非緩沖方式下。在這種方式下,8259A的SP/EN作為輸入端設(shè)置,主片應(yīng)接高電平,從片應(yīng)接低電平。5. 引入中斷請(qǐng)求的方式按照引入中斷請(qǐng)求的方式,8259A有下列幾種工作方式:(1). 邊沿觸發(fā)方式8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿,作為中斷請(qǐng)求信號(hào),上升沿后相應(yīng)引腳,可以一直保持高電平。(2). 電平觸發(fā)方式8259A將中斷請(qǐng)求輸入端出現(xiàn)的高電平作為中斷請(qǐng)求信號(hào),在這種方式下,必須注意:中斷響應(yīng)之后,高電平必須及時(shí)撤除,否則,在CPU響應(yīng)中斷,開中斷之后,會(huì)引起第二次不應(yīng)該有的中斷。(3). 中斷查詢方式當(dāng)系統(tǒng)中的中斷源很多,超過64個(gè)時(shí),則可

33、以使8259A工作在查詢方式下,中斷查詢方式的特點(diǎn)是:a.中斷源仍往8259A發(fā)中斷請(qǐng)求,但8259A卻不使用INT信號(hào)向CPU發(fā)中斷請(qǐng)求信號(hào)。b. CPU內(nèi)部的中斷允許標(biāo)志復(fù)位,所以CPU對(duì)INT引腳上出現(xiàn)的中斷請(qǐng)求呈禁止?fàn)顟B(tài)。c. CPU 用軟件查詢的方法來確定中斷源,從而實(shí)現(xiàn)對(duì)設(shè)備的中斷服務(wù),可見,中斷查詢方式,既有中斷的特點(diǎn),又有查詢的特點(diǎn),從外設(shè)的角度來看,是靠中斷的方式來請(qǐng)求服務(wù),但從CPU的角度來看,是用查詢方式來確定發(fā)中斷請(qǐng)求的中斷源。查詢是通過CPU向8259A發(fā)查詢命令來實(shí)現(xiàn)的,查詢命令字由OCW3構(gòu)成的,其格式如下:D7 。 。 。 D3 D2 D1 D0X 0 0 0

34、1 1 0 0其中D2=1,是查詢命令的特征位。8259A在接到CPU發(fā)來的上述格式的查詢命令之后,立即組成狀態(tài)字,等待CPU來讀取,狀態(tài)字的格式如下:D7 。 。 。 D3 D2 D1 D0 I X X X X W2 W1 W0若I=0,則表示該8259A芯片沒有中斷請(qǐng)求,若I=1,則表示有中斷請(qǐng)求,W2、W1、W0即為本片中中斷請(qǐng)求優(yōu)先級(jí)別最高的中斷源的編碼。【習(xí)題與思考】試說明8259A芯片的可編程序性?8259A芯片的編程有哪兩種類型?8259A芯片是如何實(shí)現(xiàn)對(duì)8級(jí)中斷進(jìn)行管理的?又是如何級(jí)聯(lián)實(shí)現(xiàn)對(duì)64級(jí)中斷管理的?在8259A級(jí)聯(lián)工作的情況下,主片的CAS0CAS2與從片的CAS0C

35、AS2的作用有何不同?試結(jié)合8086/8088的INTR中斷響應(yīng)過程,說明向量中斷的基本概念和處理方法。5在采用8259A作為中斷控制器的系統(tǒng)中,由IRi輸入的外部中斷請(qǐng)求,能夠獲得CPU響應(yīng)的基本條件是什么?六、8259A的編程8259A是可編程的集成電路芯片,這大大增加了其使用的靈活性。1. 8259A的端口地址由8259A的外部結(jié)構(gòu)可知:與尋址8259A內(nèi)部寄存器組有關(guān)的信號(hào)包括:CS、A0、RD、WR等,其中CS是由地址譯碼器形成的芯片選擇信號(hào),只有該引腳為低電平時(shí),相應(yīng)的8259A芯片才工作。 若8259A與8088CPU配合使用,可直接將A0與CPU的地址信號(hào)輸出引腳A0相連,82

36、59A的兩個(gè)端口地址是連續(xù)的; 若8259A與8086CPU配合使用,如將8259A的D7D0接到16位數(shù)據(jù)總線的低8位,則A0應(yīng)與CPU的地址信號(hào)輸出引腳A1相連,此時(shí)地址碼A0應(yīng)取0,8259A的兩個(gè)端口地址都是偶地址,若除以2之后若仍為偶數(shù),則為偶地址;除以2之后若為奇數(shù),則為奇地址,即:A1A000ICW1、OCW2、OCW310ICW2ICW4、OCW1 A0用以區(qū)分8259A芯片中的不同寄存器組,由于8259A內(nèi)部寄存器的尋址,只用到一位地址信號(hào),所以一片8259A芯片占用系統(tǒng)中的兩個(gè)端口地址,即偶地址和奇地址,并且規(guī)定偶地址小于奇地址。 需要注意的是:8259A內(nèi)部并不只有兩個(gè)寄

37、存器,為了區(qū)別不同的寄存器,需采用在有關(guān)信息中加特征位、或規(guī)定有關(guān)操作順序的方法,來區(qū)分不同的輸入/輸出信息。2. 8259A的初始化編程(1). 引言在使用8259A之前,必須對(duì)其進(jìn)行初始始化編程,以規(guī)定它的各種工作方式,并明確其所處的硬件環(huán)境。若CPU用一條輸出指令向8259A的偶地址端口寫入一個(gè)命令字,而且D4=1,則被解釋為初始化命令字ICW1,輸出ICW1啟動(dòng)了8259A的初始化操作,8259A的內(nèi)、外部自動(dòng)產(chǎn)生下列操作:邊沿敏感電路復(fù)位,中斷請(qǐng)求的上升沿有效。中斷屏蔽器IMR清零,即對(duì)所有的中斷呈現(xiàn)允許狀態(tài)。中斷優(yōu)先級(jí)自動(dòng)按IR0IR7排列。清除特殊屏蔽方式8259A的初始化編程,

38、需要CPU向它輸出一個(gè)24字節(jié)的初始化命令字,輸出初始化命令字的流程如圖7-8所示,其中ICW1和ICW2是必須的,而ICW3和ICW4需根據(jù)具體的情況來加以選擇。各初始化命令字的安排與作用分?jǐn)⑷缦拢?2).ICW(2).ICW1 1:初始化命令字1,寫入8259A偶地址端口,其各位的功能及含義如下:A0 D7 D6 D5 D4 D3 D2 D1 D0 01LTIMSNGLIC4a. D0:IC4位,用以決定是否跟ICW4,若D0=1,則說明必須輸出ICW4;若D0=0,則說明不需輸出ICW4。若ICW4的各位都為0,則說明不需要輸出ICW4。b. D1:SNGL位,取決于8259A芯片是單片

39、工作,還是多片級(jí)聯(lián)工作。若8259A單片工作,則D1=1;若8259A多片級(jí)連工作,則D1=0。c. D2:ADI位,只用于MCS80/85系統(tǒng)中,規(guī)定CALL地址的間隔,在8088/8086系統(tǒng)中,該位無意義。d. D3:LTIM位,規(guī)定中斷請(qǐng)求信號(hào)的引入方式。若D3=1,則表示中斷請(qǐng)求信號(hào)為高電平有效;若D3=0,則表示中斷請(qǐng)求信號(hào)為上升沿有效。e. D4:恒定為1,為ICW1的特征位。f. D5-7:應(yīng)用于MCS80/85系統(tǒng),為入口地址中的編程位,在8088/8086系統(tǒng)中,無意義。圖7-8 8259A初始化流程圖(2).ICW2(2).ICW2:初始化命令字2,寫入8259A奇地址端

40、口A0 D7 D6 D5 D4 D3 D2 D1 D01T7T6T5T4T3000 A0=1,ICW2必須寫入奇地址端口中 8259A中IR0端對(duì)應(yīng)的中斷類型號(hào)為中斷類型號(hào)基值,是可被8整除的正整數(shù)ICW2用來設(shè)置這個(gè)中斷類型號(hào)基值,由此提供外部中斷的中斷類型號(hào)ICW2低3位為0,高5位由用戶設(shè)定當(dāng)8259A收到CPU法蘭的第二個(gè)INTA負(fù)脈沖信號(hào),它向CPU發(fā)中斷類型號(hào)其中高5位為ICW2的高5位,低3位根據(jù)IR0-IR7中響應(yīng)哪級(jí)中斷來確定對(duì)應(yīng)000111 P290例當(dāng)ICW2中的T7-T3=00001時(shí),那對(duì)應(yīng)的中斷類型號(hào)是多少?08H-0FH(3).ICW3(3).ICW3:初始化命令

41、字3,寫入相應(yīng)8259A的奇地址端口ICW3用于8259A的級(jí)連,8259A最多允許有一片主片和8片從片級(jí)連,使能夠管理的中斷源可以擴(kuò)充至64個(gè)。若系統(tǒng)中只有一片8259A,則不用ICW3,若由多片8259A級(jí)連,則主、從8259A芯片,都必須使用ICW3,主、從8259A芯片中的ICW3的使用方式不同。對(duì)于主8259A芯片,ICW3的格式如下: A0 D7 D6 D5 D4 D3 D2 D1 D0 1IR7IR6IR5IR4IR3IR2IR1IR0其中每一位對(duì)應(yīng)于一片從8259A芯片,若相應(yīng)引腳上接有從8259A芯片,則相應(yīng)位為1;否則,若相應(yīng)引腳上未接從8259A芯片,則相應(yīng)位為0。例:I

42、CW311100010,則說明IR7、IR6、IR5、IR1上連有從片。對(duì)于從8259A芯片,ICW3的格式如下:A0 D7 D6 D5 D4 D3 D2 D1 D0100000ID2ID1ID0從8259A芯片中的ICW3,只用其中的低3來設(shè)置該芯片的標(biāo)識(shí)符,高5位全為0。在多片8259A級(jí)聯(lián)的情況下,主片與從片的CAS2-CAS0相連,主片的CAS2-CAS0為輸出,從片的CAS2-CAS0為輸入。當(dāng)CPU發(fā)第一個(gè)中斷響應(yīng)信號(hào)INTA負(fù)脈沖時(shí),主片通過CAS2-CAS0發(fā)一個(gè)編碼ID2-ID0,從片的CAS2-CAS0收到主片發(fā)來的編碼與本身的ICW2中的ID2-ID0相比較,若相等,則在

43、第二個(gè)INTA負(fù)脈沖到來后,將自己的中斷類型號(hào)放到數(shù)據(jù)總線上。從8259A芯片中的ICW3,只用其中的低3來設(shè)置該芯片的標(biāo)識(shí)符,高5位全為0。在中斷響應(yīng)時(shí),主8259A通過級(jí)連線CS2CS0,依次向各個(gè)從8259A芯片輸送中斷請(qǐng)求的源中,優(yōu)先級(jí)最高的源所對(duì)應(yīng)的標(biāo)識(shí)符,每個(gè)從8259A拿到這個(gè)標(biāo)識(shí)符之后,與自己在初始化編程時(shí),由ICW3設(shè)置的標(biāo)識(shí)符進(jìn)行比較。當(dāng)兩者相符合時(shí),則該從8259A芯片在第二個(gè)中斷響應(yīng)周期,向CPU提供由ICW2設(shè)置的8位中斷類型碼。例:若本從片的INT接在主片的IR1引腳上,則ICW300000001P291 例715(4).ICW4(4).ICW4:初始化命令字4,寫

44、入8259A奇地址端口, 只有當(dāng)ICW1中的D01時(shí)才需要設(shè)置,其各位的功能及含義如下:A0 D7 D6 D5 D4 D3 D2 D1 D0 1000SFNMBUFM/SAEOIPMa. D0:PM位,取決于系統(tǒng)中所采用微處理器的類型,若系統(tǒng)中的微處理器為MCS80/85,則D0=0;反之,若系統(tǒng)中的微處理器為8086則D0=1。b. D1:AEOI位,規(guī)定結(jié)束中斷的方式,若D1=1,則為自動(dòng)中斷結(jié)束方式;若D1=0,則需要用中斷結(jié)束命令來結(jié)束中斷。c. D2:M/S位,緩沖方式下使用,若D2=1,則表示為主8259A;若D2=0,則表示為從8259A。d. D3:BUF位,若8259A工作于

45、緩沖方式,則D3=1;否則,D3=0。e. D4:SFNM位:若D4=1,則規(guī)定特殊的全嵌套模式;否則,若D4=0則規(guī)定普通的全嵌套模式。f. D5-7:恒定為0003. 8259A的操作編程 對(duì)8259A按照上述流程進(jìn)行初始化編程之后,相應(yīng)芯片就做好了接收中斷的準(zhǔn)備,若中斷源發(fā)生了中斷請(qǐng)求,則8259A按照初始化編程所規(guī)定的各種方式來處理這種請(qǐng)求。在8259A的工作期間,CPU也可以通過操作命令字,實(shí)現(xiàn)對(duì)8259A的操作控制,或者改變工作方式,或者實(shí)時(shí)讀取8259A中某些寄存器的內(nèi)容。8259A有三個(gè)操作命令字,我們分別討論如下:(1).OCW1(1).OCW1:中斷屏蔽字,必須寫入相應(yīng)82

46、59A芯片的奇地址端口,其格式如下:A0 D7 D6 D5 D4 D3 D2 D1 D0 1M7M6M5M4M3M2M1M0它的每一位,可以對(duì)相應(yīng)的中斷請(qǐng)求輸入進(jìn)行屏蔽,若OCW1的某一位為1,則相應(yīng)的中斷請(qǐng)求輸入被屏蔽;反之,則相應(yīng)的中斷請(qǐng)求輸入呈現(xiàn)允許狀態(tài)。即若Mi=1,則表示8259A對(duì)IRi的中斷請(qǐng)求呈屏蔽狀態(tài);否則若Mi=0,則表示8259A對(duì)IRi的中斷請(qǐng)求呈允許狀態(tài)。(2).OCW2(2).OCW2:必須寫入相應(yīng)8259A芯片的偶地址端口,其格式如下:A0 D7 D6 D5 D4 D3 D2 D1 D0 0RSLEOI00L2L1L0其中D4、D3位恒定為0,是OCW2的特征位。

47、R、SL、EOI:三位組合指明優(yōu)先級(jí)設(shè)置方式和中斷結(jié)束控制方式。R(ROTATE):R=1,中斷優(yōu)先級(jí)是按循環(huán)方式設(shè)置的,每個(gè)中斷級(jí)輪流成為最高優(yōu)先級(jí)。R=0,設(shè)置為固定優(yōu)先級(jí),0級(jí)最高,7級(jí)最低。SL(SPECIFIC LEVEL):指明L2-L0是否有效。SL=1時(shí), L2-L0有效,否則, L2-L0無意義。EOI(END OF INTERRUPT):指定中斷結(jié)束。EOI=1,用作中斷結(jié)束命令,使中斷結(jié)束服務(wù)寄存器中對(duì)應(yīng)位復(fù)位0,在非自動(dòng)結(jié)束方式中使用。EOI=0,不執(zhí)行結(jié)束操作命令。若在ICW4中的AEOI=1,設(shè)置為自動(dòng)結(jié)束方式時(shí),此時(shí)OCW2中的EOI為0。OCW2的功能:1、決定

48、8259A是否采用優(yōu)先級(jí)循環(huán)方式2、中斷結(jié)束采用普通的還是特殊的EOI結(jié)束方式。R、SL、EOI共有8種不同的組合形式,其中有7種是相應(yīng)的控制命令,分別介紹如下:a. 0、0、0:為取消自動(dòng)EOI循環(huán)命令;b. 1、0、0:為設(shè)置自動(dòng)EOI循環(huán)命令;c. 0、0、1:為普通的EOI命令,它適用于完全嵌套方式,在中斷服務(wù)程序結(jié)束時(shí),用于清除ISR中最后被置位的相應(yīng)位。顯然,只有在ICW4中的AEOI=0時(shí),才需要在中斷服務(wù)子程序中向8259A發(fā)普通的EOI命令。d. 0、1、1:為特殊的EOI命令,與普通的EOI命令的差別在于,它需要利用L2、L1、L0位明確指出ISR寄存器中需要被復(fù)位的位;e

49、. 1、0、1:為普通循環(huán)的EOI命令,它在中斷服務(wù)程序結(jié)束時(shí)使用,它使已置位的ISR寄存器中優(yōu)先級(jí)最高的那一位復(fù)位,同時(shí)賦予剛剛結(jié)束中斷處理的中斷源的中斷優(yōu)先級(jí)最低。f. 1、1、1:為特殊的EOI循環(huán)命令,它一方面復(fù)位ISR寄存器中由L2、L1、L0位明確指出的那一位;另一方面,使L2、L1、L0位明確指出的那一個(gè)中斷源的中斷優(yōu)先級(jí)最低。g. 1、1、0:為置位優(yōu)先權(quán)命令,它用以設(shè)置優(yōu)先級(jí)特殊循環(huán)方式,即利用L2、L1、L0位明確指出中斷優(yōu)先級(jí)最低的中斷源。h. 0、1、0:非操作命令,無實(shí)際意義。(3)OCW3(3)OCW3:必須寫入相應(yīng)8259A芯片的偶地址端口。其格式如下:A0 D7

50、 D6 D5 D4 D3 D2 D1 D0 0 xESMMSMM01PRRRISa. D0:RIS位,用以決定下一個(gè)讀操作所對(duì)應(yīng)的寄存器,若D0=1,則下一個(gè)讀操作讀取中斷服務(wù)寄存器ISR的內(nèi)容;否則,讀取中斷請(qǐng)求寄存器IRR的內(nèi)容。b. D1:RR位,決定下一個(gè)操作是否讀操作,若D1=1,則下一個(gè)操作是讀操作;否則,下一個(gè)操作不是讀操作。(3)OCW3(3)OCW3:必須寫入相應(yīng)8259A芯片的偶地址端口。其格式如下:A0 D7 D6 D5 D4 D3 D2 D1 D0 0 xESMMSMM01PRRRISRR,RIS:RR為讀寄存器狀態(tài)命令,RR=1,允許讀寄存器狀態(tài),RIS為指定讀取對(duì)象

51、。RR,RIS=10,用輸入指令(IN指令),在下一個(gè)RD負(fù)脈沖到來后,將中斷請(qǐng)求寄存器IRR的內(nèi)容讀到數(shù)據(jù)總線上。RR,RIS=11,用輸入指令,在下一個(gè)RD負(fù)脈沖到來后,將中斷服務(wù)寄存器ISR的內(nèi)容讀到數(shù)據(jù)總線上。中屏蔽寄存器IMR的值,隨時(shí)可通過輸入指令從奇地址端口讀取讀同一寄存器的命令只需要發(fā)送一次,不必每次重寫OCW3。f. P查詢方式位,P=1,設(shè)置8259A為中斷查詢工作方式。此方式下,CPU不是靠接收中斷請(qǐng)求信號(hào)來進(jìn)入中斷處理過程,而是靠發(fā)送查詢命 令,讀取查詢字來獲得外部設(shè)備的中斷請(qǐng)求信息。 CPU先送操作命令OCW3(P=1)給8259A,再送一條輸入指令將一個(gè)RD負(fù)脈沖信

52、號(hào)送給8259A,8259A收到后將中斷服務(wù)寄存器的相應(yīng)位置1,并將查詢字送到數(shù)據(jù)總線。 查詢字反映了當(dāng)前外設(shè)有無中斷請(qǐng)求及中斷請(qǐng)求的最高優(yōu)先級(jí)是那個(gè),查詢字為:0IRXXXXW2W1W0A0 D7 D0g. D3D4:恒定為10,是OCW3的特征位。h. ESMM,SMM:置位和復(fù)位特殊屏蔽方式ESMM,SMM =11,設(shè)置8259A為特殊屏蔽方式,只屏蔽本級(jí)中斷請(qǐng)求允許高級(jí)或低級(jí)中斷請(qǐng)求進(jìn)入。ESMM,SMM =10,取消特殊屏蔽方式,回復(fù)原來優(yōu)先級(jí)控制。ESMM=0設(shè)置無效。i. D7:無關(guān)操作命令字OCW1-OCW3的設(shè)置,安排在初始化命令字之后,用戶可根據(jù)需要在程序的任何位置設(shè)置。I

53、CW2,ICW3,ICW4和OCW1寫入奇地址端口初始化時(shí)ICW1后面緊跟ICW2、ICW3、ICW4,而ICW1是單獨(dú)寫入的不會(huì)緊跟在ICW1后面。七、 8259A的級(jí)聯(lián)所謂級(jí)聯(lián),就是在微型計(jì)算機(jī)系統(tǒng)中,以1片8259A的INT引腳與CPU的INTR引腳相連,稱為主片;再將最多8片8259A的INT引腳,分別與主8259A的IR0-IR7相連,稱為從片。顯然,在主-從式8259級(jí)聯(lián)的微機(jī)系統(tǒng)中,系統(tǒng)能夠管理的中斷源可由8級(jí)擴(kuò)展至64級(jí)。圖7-9 8259A的級(jí)聯(lián) p297主-從式8259級(jí)聯(lián)系統(tǒng)的連接,需要注意的要點(diǎn)如下:* 主片的INT引腳接CPU的INTR引腳,從片的INT引腳分別主片的

54、IRi引腳,使得由從片輸入的中斷請(qǐng)求,能夠通過主片向CPU發(fā)出;*主片的3條級(jí)聯(lián)線與各從片的同名級(jí)聯(lián)線引腳對(duì)接,主片為輸出,從片為輸入。*主片用以向各從片發(fā)出優(yōu)先級(jí)別最高的中斷請(qǐng)求的從片代碼,各從片用該代碼與本片的代碼進(jìn)行比較,符合則將本片ICW2中預(yù)先設(shè)定中斷類型碼,送數(shù)據(jù)總線。* 主片的SP/EN接+5v,從片的SP/EN接地。*級(jí)連系統(tǒng)中的所有8259A都必須進(jìn)行各自獨(dú)立的編程,作為主片的8259A必須設(shè)置為特殊的全嵌套方式??梢员苊庀嗤瑥钠校瑑?yōu)先級(jí)較高的中斷請(qǐng)求被屏蔽的情況發(fā)生.與一般的全嵌套方式相比,有兩點(diǎn)需要注意:a. 當(dāng)來自某個(gè)從設(shè)備的中斷請(qǐng)求被響應(yīng)之后,主片的優(yōu)先權(quán)邏輯不封鎖

55、這個(gè)從片,從而可以使來自從設(shè)備的較高優(yōu)先級(jí)的中斷請(qǐng)求能被主片正常接受,并向CPU發(fā)出。b. 中斷服務(wù)結(jié)束時(shí),必須用軟件來檢查被服務(wù)的中斷是否為該從片中,唯一的中斷請(qǐng)求。為此,須先向從片發(fā)一個(gè)一般的中斷結(jié)束命令,清除已完成服務(wù)的ISR中的相應(yīng)位,然后,再讀出ISR的內(nèi)容,檢查是否全0,若為全0,則向主片發(fā)一個(gè)中斷結(jié)束命令,清除與從設(shè)備相應(yīng)的ISR中的位;反之,則不向主片發(fā)中斷結(jié)束命令,因?yàn)橥粡钠羞€有其它中斷請(qǐng)求正在處理。八、8259A的應(yīng)用舉例 書上 P298 7-20 P300 7-22【例1】 IBMPC機(jī)中,只有一片8259A,可接受外部8級(jí)中斷。在I/O地址中,分配8259A的端口地址為20H和21H,初始化為:邊沿觸發(fā)、緩沖連接、中斷結(jié)束采用EOI命令、中斷優(yōu)先級(jí)采用完全嵌套方式,8級(jí)中斷源的中斷類型分別為08H0F

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論