第6章 中斷系統(tǒng)與可編程8259A.doc_第1頁(yè)
第6章 中斷系統(tǒng)與可編程8259A.doc_第2頁(yè)
第6章 中斷系統(tǒng)與可編程8259A.doc_第3頁(yè)
第6章 中斷系統(tǒng)與可編程8259A.doc_第4頁(yè)
第6章 中斷系統(tǒng)與可編程8259A.doc_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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)介

目錄第6章 中斷系統(tǒng)與可編程8259A6.1 8086中斷系統(tǒng)6.1.1項(xiàng)目1:外部中斷控制繼電器6.1.2知識(shí)講解6.2 8259A芯片引腳和內(nèi)部結(jié)構(gòu)6.2.1項(xiàng)目2:用8259A中斷控制LED燈左循環(huán)亮6.2.2知識(shí)講解6.3 8259A控制字及編程應(yīng)用6.3.1項(xiàng)目3:外部中斷次數(shù)顯示6.3.2知識(shí)講解6.4 項(xiàng)目擴(kuò)展與工程應(yīng)用6.4.1項(xiàng)目4:中斷控制跑馬燈6.4.2項(xiàng)目5:兩個(gè)外部中斷源中斷思考題與練習(xí)題第6章 中斷系統(tǒng)與可編程8259A6.1 8086中斷系統(tǒng)6.1.1項(xiàng)目1:外部中斷控制繼電器1項(xiàng)目要求與目的 (1)項(xiàng)目要求:用8086CPU控制8259可編程中斷控制器,實(shí)現(xiàn)對(duì)外部中斷的響應(yīng)和處理。要求程序中對(duì)IR0每次中斷,去控制繼電器動(dòng)作,使LED閃爍。(2)項(xiàng)目目的:了解8086中斷的概念。了解8086的中斷類型。了解8086的中斷矢量表。了解8086的中斷過(guò)程。2項(xiàng)目電路連接與說(shuō)明(1)項(xiàng)目電路連接:如圖6-1所示的粗線為要接的連線,接線描述如下:8259A的片選連至地址譯碼處的210217插孔;8255A的片選連至地址譯碼處的200207插孔;PB0接到繼電器的控制端上;將UP脈沖按鈕連接至8259A的IR0插孔。(2)項(xiàng)目說(shuō)明:8086需要外接中斷控制器才能對(duì)外部中斷進(jìn)行處理。8259可外接8個(gè)中斷源,本項(xiàng)目只響應(yīng)IR0中斷。將單脈沖信號(hào)UP接到8259的IR0腳,每次中斷時(shí),可以看到繼電器控制的LED燈閃爍。 3項(xiàng)目電路原理框圖項(xiàng)目電路原理框圖如圖6-1所示。電路由8086CPU、8255A芯片、8259A芯片、繼電器及驅(qū)動(dòng)和脈沖按鈕UP組成。 圖6-1 外部中斷控制繼電器電路圖4項(xiàng)目程序設(shè)計(jì)(1)程序流程圖外部中斷控制繼電器程序流程圖如6-2所示。 (a)主程序 (b)IR0中斷服務(wù)程序 圖6-2 外部中斷控制繼電器程序流程圖 (2)程序清單 外部中斷控制繼電器程序清單如下所示。DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTA DW 50 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS: DATA ,SS:STACK START :MOV AL,13H ; 00010011B,ICW1:邊沿觸發(fā),單片,要ICW4 MOV DX,210H ; 8259地址 OUT DX,AL MOV AL,8 ; ICW2中斷類型號(hào)為8 MOV DX,211H OUT DX,AL MOV AL,01H ; ICW4不用緩沖方式,正常中斷結(jié)束,非特殊的全嵌套方式 OUT DX,AL MOV AX,0 ; 清零 MOV DS,AX ; 數(shù)據(jù)段清零 LEA AX,INT0 ; 寫8259中斷程序的入口地址 MOV DS:4*8,AX; 把中斷服務(wù)程序的入口地址偏移量送中斷矢量表 MOV AX,CS MOV DS:4*8+2,AX; 把中斷服務(wù)程序的入口地址段地址送中斷矢量表 IN AL,DX ; 讀中斷屏蔽寄存器IMR, AND AL,0FEH ; 屏蔽IR1IR7,允許IR0中的中斷請(qǐng)求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; B口輸出,方式0 OUT DX,AL MOV BL,01H ;置繼電器動(dòng)作初值 STI ; 開中斷 AGAIN :HLT JMP AGAIN ;等待 INT0 PROC NEAR ; IR1中斷服務(wù)程序 MOV DX,201H ;8255的PB口地址 NOT BL ;求反 MOV AL,BL OUT DX,AL ;PB0輸出 MOV DX,210H MOV AL,20H ; OCW2發(fā)結(jié)束命令EOI=1 OUT DX,AL IRET INT1 ENDP CODE ENDS END START6.1.2知識(shí)講解1.中斷基本概念(1)中斷中斷是通過(guò)硬件來(lái)改變CPU的運(yùn)行方向的。當(dāng)CPU在執(zhí)行程序時(shí),由內(nèi)部或外部的原因引起的隨機(jī)事件要求CPU暫時(shí)停止正在執(zhí)行的程序,而轉(zhuǎn)向執(zhí)行一個(gè)用于處理該隨機(jī)事件的程序,處理完后又返回被中止的程序斷點(diǎn)處繼續(xù)執(zhí)行,這一過(guò)程就稱為中斷。中斷之后所執(zhí)行的相應(yīng)的處理程序通常稱之為中斷服務(wù)或中斷處理子程序,原來(lái)正常運(yùn)行的程序稱為主程序。主程序被斷開的位置(或地址)稱為“斷點(diǎn)”。引起中斷的原因,或能發(fā)出中斷申請(qǐng)的來(lái)源,稱為“中斷源”。中斷源要求服務(wù)的請(qǐng)求稱為“中斷請(qǐng)求”(或中斷申請(qǐng))。中斷示意圖如圖6-3所示。 圖6-3 中斷示意圖(2)中斷的特點(diǎn) 提高CPU的效率中斷可以解決高速的CPU與低速的外設(shè)之間的矛盾,使CPU和外設(shè)并行工作。CPU在啟動(dòng)外設(shè)工作后繼續(xù)執(zhí)行主程序,同時(shí)外設(shè)也在工作。每當(dāng)外設(shè)做完一件事就發(fā)出中斷申請(qǐng),請(qǐng)求CPU中斷它正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,中斷處理完之后,CPU恢復(fù)執(zhí)行主程序,外設(shè)也繼續(xù)工作。這樣,CPU可啟動(dòng)多個(gè)外設(shè)同時(shí)工作,大大地提高了CPU的效率。實(shí)時(shí)處理 在實(shí)時(shí)控制系統(tǒng)中,工業(yè)現(xiàn)場(chǎng)的各種參數(shù)和信息都會(huì)隨時(shí)間而變化。這些外界變量可根據(jù)要求隨時(shí)向CPU發(fā)出中斷申請(qǐng),請(qǐng)求CPU及時(shí)處理中斷請(qǐng)求。如果滿足中斷條件,CPU就立刻會(huì)響應(yīng),轉(zhuǎn)入中斷處理,從而實(shí)現(xiàn)實(shí)時(shí)處理。故障處理 控制系統(tǒng)的故障和緊急情況難以預(yù)料的,如掉電、設(shè)備運(yùn)行出錯(cuò)等,可通過(guò)中斷系統(tǒng)由故障源向CPU發(fā)出中斷請(qǐng)求,再由CPU轉(zhuǎn)到相應(yīng)的故障處理程序進(jìn)行處理。(3) 中斷的功能實(shí)現(xiàn)中斷響應(yīng)和中斷返回當(dāng)CPU 收到中斷請(qǐng)求后,CPU要根據(jù)相關(guān)條件(如中斷優(yōu)先級(jí)、是否允許中斷)進(jìn)行判斷,決定是否響應(yīng)這個(gè)中斷請(qǐng)求。若響應(yīng),則在執(zhí)行完當(dāng)前指令后立刻響應(yīng)這一中斷請(qǐng)求。CPU中斷過(guò)程為:第一步 將斷點(diǎn)處的PC值(即下一條應(yīng)執(zhí)行指令的地址)壓入堆棧保留下來(lái)(這稱為保護(hù)斷點(diǎn),由硬件自動(dòng)執(zhí)行)。第二步 將有關(guān)的寄存器內(nèi)容和標(biāo)志PSW狀態(tài)壓入堆棧保留下來(lái)(這稱為保護(hù)現(xiàn)場(chǎng),由用戶自己編程完成)。第三步 執(zhí)行中斷服務(wù)程序。第四步 中斷返回,CPU將繼續(xù)執(zhí)行原主程序。中斷返回過(guò)程為:首先恢復(fù)原保留寄存器的內(nèi)容和標(biāo)志位的狀態(tài),這稱為恢復(fù)現(xiàn)場(chǎng),由用戶編程完成。然后,再加返回指令I(lǐng)RET,IRET指令的功能是恢復(fù)PC值,使CPU返回?cái)帱c(diǎn),這稱為恢復(fù)斷點(diǎn)。 實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì)中斷優(yōu)先權(quán)也稱為中斷優(yōu)先級(jí)。中斷系統(tǒng)中存在著多個(gè)中斷源,同一時(shí)刻可能會(huì)有不止一個(gè)中斷源提出中斷請(qǐng)求,因此需要給所有中斷源安排不同的優(yōu)先級(jí)別。CPU可通過(guò)中斷優(yōu)先級(jí)排隊(duì)電路首先響應(yīng)中斷優(yōu)先級(jí)高的中斷請(qǐng)求,等到處理完優(yōu)先級(jí)高的中斷請(qǐng)求后,再來(lái)響應(yīng)優(yōu)先級(jí)低的中斷請(qǐng)求。實(shí)現(xiàn)中斷嵌套 當(dāng)CPU響應(yīng)某一中斷時(shí),若有中斷優(yōu)先級(jí)更高的中斷源發(fā)出中斷請(qǐng)求,CPU會(huì)暫停正在執(zhí)行的中斷服務(wù)程序,并保留這個(gè)程序的斷點(diǎn),轉(zhuǎn)向執(zhí)行中斷優(yōu)先級(jí)更高的中斷源的中斷服務(wù)程序,等處理完這個(gè)高優(yōu)先級(jí)的中斷請(qǐng)求后,再返回來(lái)繼續(xù)執(zhí)行被暫停的中斷服務(wù)程序。這個(gè)過(guò)程稱為中斷嵌套。中斷嵌套流程圖如圖6-4所示。 圖6-4 中斷嵌套流程圖 (4)中斷源 引發(fā)中斷的事件稱為中斷源。8086CPU的中斷源有兩類:一是內(nèi)部中斷源,由CPU內(nèi)部的標(biāo)志TF為1或執(zhí)行一條軟件中斷指令而引起;二是外部中斷,由外部請(qǐng)求信號(hào)引起。外部中斷又分為可屏蔽中斷(INTR)和非屏蔽中斷(NMI)。中斷源形式如圖6-5所示。 圖6-5 8086CPU的中斷源(5) 禁止中斷與中斷屏蔽 在有些情況下,CPU不允許響應(yīng)可屏蔽中斷INTR,當(dāng)中斷源向CPU申請(qǐng)中斷后,CPU不能終止當(dāng)前正在運(yùn)行的程序并轉(zhuǎn)到中斷服務(wù)程序,這種情況就是禁止中斷。 在另一些情況下,例如有多個(gè)中斷源發(fā)出申請(qǐng)時(shí),CPU只響應(yīng)其中某些中斷,而屏蔽其他類型的中斷,這就叫中斷屏蔽。中斷屏蔽可以通過(guò)中斷屏蔽觸發(fā)器來(lái)實(shí)現(xiàn)。將中斷源對(duì)應(yīng)的中斷屏蔽觸發(fā)器置1,則中斷源的中斷請(qǐng)求被屏蔽,否則該中斷源的中斷請(qǐng)求被允許。2中斷類型與中斷向量表8086CPU的中斷系統(tǒng)能夠處理256個(gè)不同的中斷源,每個(gè)中斷源都有一個(gè)為它服務(wù)的中斷處理程序。CPU響應(yīng)中斷后,就要轉(zhuǎn)入相應(yīng)的中斷處理程序中。下面就介紹CPU如何轉(zhuǎn)入中斷處理程序的。中斷類型號(hào):就是為每個(gè)中斷源指定一個(gè)編號(hào),稱為中斷類型號(hào)。中斷矢量: 每一個(gè)中斷服務(wù)程序有一個(gè)確定的入口地址,該地址稱為中斷矢量。中斷矢量表: 把系統(tǒng)中所有的中斷矢量集中起來(lái),按中斷類型號(hào)從小到大的順序安排到存儲(chǔ)器的某一個(gè)區(qū)域內(nèi),這個(gè)存放中斷矢量的存儲(chǔ)區(qū)叫中斷矢量表。80x86 CPU的中斷矢量表位于主存儲(chǔ)器最低地址00000H003FFH中,共占用1024個(gè)存儲(chǔ)器單元。中斷矢量表中共有256項(xiàng),能處理256級(jí)中斷矢量,對(duì)應(yīng)中斷類型號(hào)是00H0FFH,中斷矢量表的結(jié)構(gòu)如圖6-6所示。圖6-6 中斷矢量表結(jié)構(gòu)圖中斷服務(wù)程序的入口地址在中斷矢量表中,占4個(gè)字節(jié),其中兩個(gè)低地址字節(jié)中存放中斷服務(wù)程序入口地址的段內(nèi)地址偏移量(IP)部分,兩個(gè)高地址字節(jié)中存放中斷服務(wù)程序入口地址的段地址(CS)部分。在中斷矢量表中,各個(gè)中斷矢量表按中斷類型碼從0到255順序存放。這樣,知道了中斷類型碼,很快就可計(jì)算出相應(yīng)中斷矢量的存放位置,從而取出中斷矢量。而每個(gè)中斷矢量的地址可由中斷類型碼乘以4計(jì)算出來(lái)。CPU響應(yīng)中斷時(shí),只要把中斷類型碼N左移2位(乘以4),即可得到中斷矢量在中斷矢量表中的對(duì)應(yīng)地址4N,然后把兩個(gè)低地址字節(jié)中存放中斷服務(wù)程序入口地址的段內(nèi)地址偏移量(IP)部分,兩個(gè)高地址字節(jié)中存放中斷服務(wù)程序入口地址的段地址(CS)部分。【例題6-1】 中斷類型碼為27H,中斷矢量為: 中斷矢量應(yīng)存放在從0000H:009CH開始的4個(gè)連續(xù)字節(jié)單元中,即:(0000H:009CH,0000H:009DH) IP(0000H:009EH,0000H:0009FH) CS如(0000H:009CH)=21H (0000H:009DH)=43H (0000H:009EH)=65H (0000H:009FH)=87H則27H號(hào)中斷的中斷服務(wù)程序的入口地址為:8765H:4321H.【例題6-2】中斷類型碼為17H,如中斷服務(wù)程序的入口地址是:3240H:87FFH,試指出中斷矢量表中存放該中斷矢量的4個(gè)字節(jié)單元的地址及內(nèi)容。解:由于中斷類型碼為17H,則中斷矢量為: 中斷矢量應(yīng)存放在從0000H:005CH開始的4個(gè)連續(xù)字節(jié)單元中,即:(0000H:005CH)=FFH(0000H:005DH)=87H(0000H:005EH)=40H(0000H:005FH)=32H3. 中斷響應(yīng)過(guò)程(1)8086中斷響應(yīng)過(guò)程8086的中斷響應(yīng)過(guò)程如圖6-7所示。從圖可以看出,該流程已經(jīng)考慮了不同中斷源的響應(yīng)優(yōu)先級(jí),當(dāng)多個(gè)中斷同時(shí)申請(qǐng)中斷時(shí),CPU先響應(yīng)內(nèi)部中斷,其次響應(yīng)非屏蔽中斷NMI,然后響應(yīng)可屏蔽中斷INTR,最后響應(yīng)單步中斷。這個(gè)中斷響應(yīng)過(guò)程,不同的中斷略有所不同。圖6-7 8086的中斷響應(yīng)過(guò)程(2)INTR中斷響應(yīng)過(guò)程不同的微型計(jì)算機(jī)的中斷系統(tǒng)略有所不同,但實(shí)現(xiàn)中斷時(shí)的過(guò)程基本相同。中斷過(guò)程包括4個(gè)階段即:中斷請(qǐng)求、中斷響應(yīng)、中斷服務(wù)、中斷返回。下面以INTR中斷為例來(lái)說(shuō)明中斷的響應(yīng)過(guò)程。 CPU在INTR引腳上接到一個(gè)中斷請(qǐng)求信號(hào),若此時(shí)的中斷允許標(biāo)志IF=1,并且,當(dāng)前的中斷請(qǐng)求具有最高的優(yōu)先級(jí),CPU就在執(zhí)行完當(dāng)前指令以后開始響應(yīng)外部的中斷請(qǐng)求。這時(shí),CPU通過(guò)引腳連續(xù)發(fā)出兩個(gè)負(fù)脈沖信號(hào),外設(shè)接口在接到第二個(gè)負(fù)脈沖以后,就在數(shù)據(jù)線上發(fā)送中斷類型號(hào),CPU接到此中斷類型號(hào)后,將進(jìn)行如下5步操作: 第1步,將中斷類型號(hào)送入暫存器保存。 第2步,將標(biāo)志寄存器PSW內(nèi)容壓入堆棧,以保護(hù)中斷時(shí)的狀態(tài)。 第3步,把IF和TF標(biāo)志清零。IF清零是為了防止在中斷響應(yīng)的同時(shí)又來(lái)別的中斷,而TF清零是為了防止CPU以單步方式執(zhí)行中斷處理程序。 第4步,保護(hù)斷點(diǎn)。就是將當(dāng)前程序執(zhí)行的下一條指令的IP和CS的內(nèi)容壓棧。保護(hù)斷點(diǎn)的作用是為了執(zhí)行中斷服務(wù)程序后能返回主程序。第5步,根據(jù)得到的中斷類型號(hào),在中斷向量表中找出中斷向量,將其裝入IP和CS,這時(shí)程序就轉(zhuǎn)向中斷服務(wù)程序去執(zhí)行。4.8086中斷結(jié)構(gòu)8086中斷結(jié)構(gòu)如圖6-8所示,從圖中可以看出,8086中斷系統(tǒng)分為外部中斷和內(nèi)部中斷兩大類,外部中斷也稱為硬件中斷,它由非屏蔽中斷NMI和可屏蔽中斷INTR構(gòu)成。內(nèi)部中斷也稱為軟件中斷,它由除法錯(cuò)誤中斷、溢出中斷、單步中斷、斷點(diǎn)中斷和INT n指令中斷構(gòu)成。同時(shí)8086CPU規(guī)定了各類中斷的優(yōu)先級(jí),最高為除法錯(cuò)誤中斷INT 0、溢出中斷INT0及INT n指令、非屏蔽中斷NMI、可屏蔽中斷INTR、最低的是單步中斷。下面簡(jiǎn)單進(jìn)行介紹。(1)外部中斷 80x86CPU有兩條外部中斷請(qǐng)求線:NMI和INTR,即NMI(17引腳)非屏蔽中斷和INTR(18引腳)可屏蔽中斷。 NMI非屏蔽中斷:中斷類型號(hào)為2,NMI非屏蔽中斷的中斷請(qǐng)求信號(hào)從CPU的外部送往CPU的引腳NMI上,采用邊沿觸發(fā)方式圖6-8 8086中斷結(jié)構(gòu) INTR可屏蔽中斷:中斷類型號(hào)為08H0FH。INTR可屏蔽中斷的中斷源一般是外部設(shè)備,可屏蔽中斷請(qǐng)求信號(hào)通過(guò)INTR引腳輸入,所有的可屏蔽中斷請(qǐng)求公用一條INTR線,由可編程中斷控制器8259A管理。需要注意的是非屏蔽中斷與可屏蔽中斷的不同點(diǎn):可屏蔽中斷INTR由CPU的程序狀態(tài)控制字中的IF位為1還是為0決定的。IF=1,CPU響應(yīng)由INTR端引入的中斷申請(qǐng);IF0,CPU不響應(yīng)由INTR端引入的中斷申請(qǐng)。由INTR端引入,依靠IF端置0還是置1決定CPU是否響應(yīng)的中斷稱為可屏蔽中斷。IF位置0可通過(guò)指令CLI實(shí)現(xiàn),稱為關(guān)中斷。IF位置1通過(guò)指令STI實(shí)現(xiàn),稱為開中斷。由NMI端引入,不受IF位狀態(tài)的控制,只要有中斷申請(qǐng)就必須響應(yīng)的中斷稱為非屏蔽中斷。(2)內(nèi)部中斷內(nèi)部中斷的中斷源在CPU的內(nèi)部。內(nèi)部中斷包括除法錯(cuò)誤中斷、溢出中斷、單步中斷、斷點(diǎn)中斷和INT n指令中斷等。內(nèi)部中斷是由CPU內(nèi)部事件引發(fā)的中斷。除法錯(cuò)誤中斷:除法錯(cuò)誤中斷的中斷類型號(hào)為0。當(dāng)CPU執(zhí)行除法操作,除數(shù)為零或商超出計(jì)算機(jī)可表示的最大數(shù)值范圍時(shí),產(chǎn)生0號(hào),除法錯(cuò)誤中斷。單步中斷:?jiǎn)尾街袛嗟闹袛囝愋吞?hào)為1。當(dāng)PSW標(biāo)志寄存器的單步標(biāo)志位TF為1時(shí),每執(zhí)行完一條指令,CPU立即暫停程序的執(zhí)行,產(chǎn)生1號(hào)中斷。單步中斷可用于進(jìn)行程序的調(diào)試。 斷點(diǎn)中斷:斷點(diǎn)中斷的中斷類型號(hào)為3。為了調(diào)試匯編語(yǔ)言程序經(jīng)常需要設(shè)置斷點(diǎn),可以在程序中加入INT 3指令。 溢出中斷:溢出中斷的中斷類型號(hào)為4,以指令I(lǐng)NTO的形式出現(xiàn)。當(dāng)PSW標(biāo)志寄存器的溢出標(biāo)志OF為1時(shí),且CPU執(zhí)行INTO指令,則產(chǎn)生溢出中斷。 INT n中斷:INT n中斷也稱為軟件中斷,以指令 INT n的形式出現(xiàn),中斷類型號(hào)就是n。CPU執(zhí)行INT n指令,產(chǎn)生類型號(hào)為n的內(nèi)部中斷。 6.2 8259A芯片引腳和內(nèi)部結(jié)構(gòu)6.2.1項(xiàng)目2:用8259A中斷控制LED燈左循環(huán)亮1項(xiàng)目要求與目的 (1)項(xiàng)目要求:用8086控制8259可編程中斷控制器,實(shí)現(xiàn)對(duì)外部中斷的響應(yīng)和處理。編寫程序?qū)崿F(xiàn)8086響應(yīng)外部中斷8259的IR0,每按一次脈沖按鈕,結(jié)果用8255的PA口輸出到LED發(fā)光二極管燈左循環(huán)亮。(2)項(xiàng)目目的:了解8259A的芯片引腳及內(nèi)部結(jié)構(gòu)。了解8259的初始化編程。了解8086與8259的連接方法。2項(xiàng)目電路連接與說(shuō)明(1)項(xiàng)目電路連接:如圖6-9所示的粗線為要接的連線,接線描述如下:8259A的片選連至地址譯碼處的210217插孔;8255A的片選連至地址譯碼處的200207插孔;將8只LED發(fā)光二極管連接至8255A的PA0PA7插孔;將UP脈沖按鈕連接至8259A的IR0插孔。(2)項(xiàng)目說(shuō)明:8259可外接8個(gè)中斷源,本項(xiàng)目只響應(yīng)INT0中斷,8259也可以多級(jí)連接,以響應(yīng)多個(gè)中斷源。將單脈沖信號(hào)接到8259的INT0腳。每按一下UP,8259A就中斷一次,LED發(fā)光二極管燈左循環(huán)亮。在編程時(shí)應(yīng)注意: 正確地設(shè)置可編程中斷控制和工作方式。 必須正確地設(shè)置中斷服務(wù)程序地址。3項(xiàng)目電路原理框圖項(xiàng)目電路原理框圖如圖6-9所示。電路由8086CPU、8255A芯片、8259A芯片、8只發(fā)光二極管LED0LED7和脈沖按鈕UP組成。 圖6-9 用8259A中斷控制LED燈左循環(huán)亮電路圖4項(xiàng)目程序設(shè)計(jì)(1)程序流程圖用8259A中斷控制LED燈左循環(huán)亮程序流程圖如6-10所示。 圖6-10 用8259A中斷控制LED燈左循環(huán)亮程序流程圖 (2)程序清單 用8259A中斷控制LED燈左循環(huán)亮程序清單如下所示。 DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTA DW 50 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS: DATA ,SS:STACK START :MOV AL,13H ; 00010011B,ICW1:邊沿觸發(fā),單片,要ICW4 MOV DX,210H ; 8259地址 OUT DX,AL MOV AL,8 ; ICW2中斷類型號(hào)為8 MOV DX,211H OUT DX,AL MOV AL,01H ; ICW4不用緩沖方式,正常中斷結(jié)束,非特殊的全嵌套方式 OUT DX,AL MOV AX,0 ; 清零 MOV DS,AX ; 數(shù)據(jù)段清零 LEA AX,INT0 ; 寫8259中斷程序的入口地址 MOV DS:4*8,AX; 把中斷服務(wù)程序的入口地址偏移量送中斷矢量表 MOV AX,CS MOV DS:4*8+2,AX; 把中斷服務(wù)程序的入口地址段地址送中斷矢量表 IN AL,DX ;讀中斷屏蔽寄存器IMR, AND AL,0FEH ;屏蔽IR1IR7,允許IR0中的中斷請(qǐng)求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; A口輸出,方式0 OUT DX,AL MOV BL,0FEH ;LED0燈亮(低電平燈亮) MOV AL,BL MOV DX,200H OUT DX,AL ;PA0燈亮 STI ;開中斷 REPEAT :HLT JMP REPEAT ;等待 INT0 PROC NEAR ;8259中斷程序 ROL BL,1 ;左循環(huán)1次 MOV AL,BL MOV DX,200H ; PA口燈亮 OUT DX,AL MOV DX,210H MOV AL,20H ; OCW2發(fā)結(jié)束命令EOI=1 OUT DX,AL IRET INT0 ENDP CODE ENDS END START6.2.2 知識(shí)講解1.概述Intel 8259A可編程中斷控制器用于管理PC機(jī)中的INTR中斷(外部可屏蔽中斷)。外部設(shè)備可通過(guò)中斷控制器8259A的中斷請(qǐng)求線INT把中斷請(qǐng)求信號(hào)送往CPU的INTR線,以便提出中斷請(qǐng)求。8259A的主要功能如下所示。(1) 可管理8個(gè)中斷源電路的中斷,并能對(duì)其進(jìn)行優(yōu)先級(jí)管理。 (2) 用9片8259A可組成主從式中斷系統(tǒng),管理64個(gè)中斷源電路的中斷,并能對(duì)其進(jìn)行優(yōu)先級(jí)管理。 (3) 對(duì)中斷源有屏蔽或允許申請(qǐng)中斷的操作。 (4) 能自動(dòng)送出中斷類型號(hào),使CPU迅速找到中斷服務(wù)程序的入口地址。2. 8259A芯片引腳與內(nèi)部結(jié)構(gòu)(1)8259A芯片引腳8259A為28腳雙列直插式芯片,芯片引腳如圖6-11所示,各引腳信號(hào)功能如下所示。(1腳):片選信號(hào)。輸入,低電平有效。該信號(hào)有效時(shí),CPU可對(duì)該8259A進(jìn)行讀寫操作。(2腳):寫信號(hào)。輸入,低電平有效。該信號(hào)有效時(shí),允許CPU把命令字(ICW和OCW)寫入相應(yīng)命令寄存器。(3腳):讀信號(hào)。輸入,低電平有效。該信號(hào)有效時(shí),允許該8259A將狀態(tài)信息放到數(shù)據(jù)總線上供CPU檢測(cè)。 圖6-11 8259A芯片引腳圖D0D7(114腳):雙向數(shù)據(jù)總線。用來(lái)傳送控制、狀態(tài)和中斷類型號(hào)。IR0IR7(1825腳):外部中斷請(qǐng)求信號(hào)。INT(17腳):中斷請(qǐng)求信號(hào)。用來(lái)向CPU發(fā)送中斷請(qǐng)求信號(hào)。(26腳):中斷響應(yīng)信號(hào)。CPU同意中斷申請(qǐng)后,發(fā)此信號(hào)作為響應(yīng)中斷的回答信號(hào)。A0(27腳):地址輸入信號(hào),用于尋址8259A內(nèi)部寄存器,一般與地址總線的A0連接。同、和在PC AT機(jī)上的組合操作功能見(jiàn)表6-1表6-1 8259A讀/寫操作與I/O端口地址 CAS0CAS2(12、13、15腳):級(jí)聯(lián)信號(hào)。雙向引腳,用來(lái)控制多片8259A的級(jí)聯(lián)使用。對(duì)主片來(lái)說(shuō),CAS0CAS2為輸出;對(duì)從片來(lái)說(shuō),CAS0CAS2為輸入。/(16腳):從片/允許緩沖器信號(hào)。此信號(hào)線為雙向,作用有二:一是當(dāng)為輸入時(shí),用來(lái)決定本片是主片還是從片,當(dāng)=1,該片為主片;當(dāng)=0,該片為從片;二是當(dāng)為輸出時(shí),/可作為啟動(dòng)數(shù)據(jù)總線驅(qū)動(dòng)器的啟動(dòng)信號(hào)。(2)8259A芯片內(nèi)部結(jié)構(gòu)8259A的內(nèi)部結(jié)構(gòu)如圖6-12所示。下面介紹各個(gè)部分的功能圖6-12 8259A芯片的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器。 這是一個(gè)8位的雙向三態(tài)緩沖器,是8259A與CPU之間的數(shù)據(jù)接口,在讀/寫邏輯的控制之下實(shí)現(xiàn)CPU與8259A之間的信息交換。讀寫控制電路。讀/寫邏輯電路控制CPU與8259A之間的信息交換。為片選信號(hào)線,低電平時(shí)選中8259A工作。由片選信號(hào)和A0指定內(nèi)部寄存器,CPU可以通過(guò)執(zhí)行OUT指令,將初始化命令字和工作命令字寫入相應(yīng)的命令寄存器ICW和OCW中;也可以通過(guò)執(zhí)行IN指令,將8259A中的IRR、ISR、IMR等寄存器的內(nèi)容讀入CPU中。級(jí)聯(lián)緩沖/比較器。用來(lái)實(shí)現(xiàn)多個(gè)8259A的級(jí)聯(lián)及數(shù)據(jù)緩沖方式。級(jí)聯(lián)時(shí),一個(gè)8259A芯片為主片,最多能帶動(dòng)8個(gè)8259從片,因此最多可以實(shí)現(xiàn)對(duì)64級(jí)中斷的管理。這時(shí),從片的INT腳與主片的一條中斷請(qǐng)求信號(hào)線IRi相連,同時(shí)將主片的CAS0CAS2與與所有從片的CAS0CAS2相連,構(gòu)成8259A的主從式控制結(jié)構(gòu)。主片引腳接高電平,CAS0CAS2為輸出引腳;從片引腳接低電平,CAS0CAS2為輸入引腳。每個(gè)從8259A芯片的中斷請(qǐng)求信號(hào)INT接至主8259A芯片的中斷請(qǐng)求輸入端IRi,主8259A的INT連接至CPU的中斷請(qǐng)求輸入端。主、從8259A芯片應(yīng)分別初始化和設(shè)置必要的工作狀態(tài)。 中斷請(qǐng)求寄存器IRR。這是8位寄存器,是8259A與外設(shè)中斷源相接的接口。該寄存器通過(guò)IR7IR0的8根線與8個(gè)中斷源相接。當(dāng)有某個(gè)中斷源申請(qǐng)中斷時(shí),使8位寄存器的相應(yīng)位置1。最多可同時(shí)接收8個(gè)中斷源的中斷申請(qǐng)。中斷服務(wù)寄存器ISR。這是8位寄存器,用8位寄存器的某位置1記錄CPU當(dāng)前正為哪個(gè)中斷源服務(wù),該信號(hào)一直保持到CPU處理完該中斷服務(wù)程序?yàn)橹?。?dāng)該寄存器有多位置1時(shí),表示CPU正在處理低級(jí)別中斷源的中斷服務(wù)程序時(shí),發(fā)生級(jí)別高的中斷源申請(qǐng)中斷,CPU未處理完低級(jí)別中斷服務(wù)程序而轉(zhuǎn)向級(jí)別高的中斷服務(wù)程序,形成中斷服務(wù)嵌套。當(dāng)中斷結(jié)束時(shí),由中斷結(jié)束命令EOI或自動(dòng)將相應(yīng)位ISRi清0。中斷屏蔽寄存器IMR。中斷屏蔽寄存器IMR,8位,屏蔽或允許IRR中的中斷請(qǐng)求。用戶可根據(jù)需要設(shè)IMR,禁止或允許某些中斷(通過(guò)設(shè)置OCW1可對(duì)來(lái)自IRR的一個(gè)或多個(gè)中斷請(qǐng)求進(jìn)行屏蔽)。 優(yōu)先級(jí)判別器PR。優(yōu)先級(jí)判別器PR時(shí)用來(lái)識(shí)別各中斷請(qǐng)求的優(yōu)先級(jí)別。在多個(gè)中斷請(qǐng)求信號(hào)同時(shí)出現(xiàn)并經(jīng)IMR允許進(jìn)入系統(tǒng)后,先由PR選出其最高優(yōu)先級(jí)的中斷請(qǐng)求,由CPU首先響應(yīng)這一級(jí)中斷,并在第一個(gè)中斷響應(yīng)周期將ISR中的相應(yīng)位置“1”。當(dāng)出現(xiàn)多重中斷時(shí),PR將首先比較ISR中正在服務(wù)的與IRR中斷請(qǐng)求服務(wù)的兩個(gè)中斷請(qǐng)求優(yōu)先級(jí)的大小,從中決定是否向CPU發(fā)出新的中斷請(qǐng)求來(lái)響應(yīng)更高優(yōu)先級(jí)的中斷請(qǐng)求服務(wù)。一般的原則是允許高級(jí)中斷打斷低級(jí)中斷,而不允許低級(jí)中斷打斷高級(jí)中斷,也不允許同級(jí)中斷相互打斷??刂齐娐贰?刂齐娐酚脕?lái)控制整個(gè)芯片內(nèi)部各部件之間協(xié)調(diào)一致地工作。控制電路中有如下7個(gè)寄存器。ICW1ICW4用來(lái)存放初始化程序設(shè)定的工作方式字,管理8259A的工作;OCW1OCW3用來(lái)存放操作命令字,對(duì)中斷處理過(guò)程進(jìn)行動(dòng)態(tài)控制。操作命令字也是由程序設(shè)定的。控制電路的控制作用有兩個(gè):一是向CPU通過(guò)INT線發(fā)中斷申請(qǐng);二是接收來(lái)自CPU輸出的中斷響應(yīng)信號(hào)。 3. 8259A的中斷工作過(guò)程為了對(duì)8259A的工作過(guò)程有個(gè)系統(tǒng)的層次分明的了解,下面對(duì)8259A的中斷工作過(guò)程作一個(gè)小結(jié)式的說(shuō)明。(1) 當(dāng)有一個(gè)或多個(gè)中斷源申請(qǐng)中斷時(shí),通過(guò)IR7IR0輸入給8259A,使中斷請(qǐng)求寄存器IRR相應(yīng)位置1。(2) 當(dāng)對(duì)中斷源的中斷申請(qǐng)不屏蔽的情況下,向中斷控制器發(fā)中斷申請(qǐng)信號(hào),中斷控制器把該信號(hào)轉(zhuǎn)發(fā)給優(yōu)先級(jí)判別器PR。(3) 優(yōu)先級(jí)判別器PR根據(jù)中斷申請(qǐng)寄存器的內(nèi)容決定處理哪個(gè)中斷源申請(qǐng)的中斷,再根據(jù)中斷服務(wù)寄存器ISR的內(nèi)容決定CPU正響應(yīng)哪一級(jí)中斷源,經(jīng)過(guò)優(yōu)先級(jí)判別決定該中斷源是否高于CPU正在服務(wù)的中斷源,若高于,通過(guò)控制邏輯的INT線向CPU申請(qǐng)中斷。(4) 若CPU處于開中斷狀態(tài),則在當(dāng)前指令執(zhí)行完后,進(jìn)入中斷服務(wù)程序,并用信號(hào)作為響應(yīng)中斷的回答信號(hào)。(5) 8259A接收到信號(hào)后,使中斷服務(wù)寄存器ISR相應(yīng)位置1,使中斷請(qǐng)求寄存器IRR的相應(yīng)位置0,以避免該中斷源再次發(fā)生中斷申請(qǐng)。(6) CPU啟動(dòng)另一個(gè)中斷響應(yīng)周期,輸出另一個(gè)脈沖。這時(shí)8259A通過(guò)數(shù)據(jù)總線向CPU輸出當(dāng)前級(jí)別最高的中斷申請(qǐng)?jiān)吹闹袛囝愋吞?hào),以便CPU很快轉(zhuǎn)入中斷服務(wù)程序。(7) 若8259A工作在AEOI模式(自動(dòng)結(jié)束方式),在第二個(gè)脈沖結(jié)束時(shí),使中斷源在中斷服務(wù)寄存器中的相應(yīng)位置0;否則,直至中斷服務(wù)程序結(jié)束,發(fā)出EOI命令,才使中斷服務(wù)寄存器中的相應(yīng)位復(fù)位。6.3 8259A控制字及編程應(yīng)用6.3.1項(xiàng)目3:外部中斷次數(shù)顯示1項(xiàng)目要求與目的 (1)項(xiàng)目要求:用8086CPU控制8259可編程中斷控制器,實(shí)現(xiàn)對(duì)外部中斷的響應(yīng)和處理。要求程序中對(duì)每次中斷進(jìn)行計(jì)數(shù),并將計(jì)數(shù)結(jié)果用8255的PA口輸出到LED顯示。(2)項(xiàng)目目的:掌握8259A控制字的設(shè)置。掌握8259A的初始化編程方法。了解8086與8259A的連接方法。了解8259A的工作方式。2項(xiàng)目電路連接與說(shuō)明(1)項(xiàng)目電路連接:如圖6-13所示的粗線為要接的連線,接線描述如下:8259A的片選連至地址譯碼處的210217插孔;8255A的片選連至地址譯碼處的200207插孔;將8只LED發(fā)光二極管連接至8255A的PA0PA7插孔;將UP脈沖按鈕連接至8259A的IR0插孔。(2)項(xiàng)目說(shuō)明:8086需要外接中斷控制器才能對(duì)外部中斷進(jìn)行處理。8259可外接8個(gè)中斷源,本項(xiàng)目只響應(yīng)IR0中斷。將單脈沖信號(hào)接到8259的IR0腳。每次中斷時(shí),可以看到LED顯示會(huì)加1。在編程時(shí)應(yīng)注意: 正確地設(shè)置可編程中斷控制和工作方式。 必須正確地設(shè)置中斷服務(wù)程序地址。 本實(shí)驗(yàn)是LED燈是低電平亮。3項(xiàng)目電路原理框圖項(xiàng)目電路原理框圖如圖6-13所示。電路由8086CPU、8255A芯片、8259A芯片、8只發(fā)光二極管LED0LED7和脈沖按鈕UP組成。 圖6-13 外部中斷次數(shù)顯示電路圖4項(xiàng)目程序設(shè)計(jì)(1)程序流程圖外部中斷次數(shù)顯示程序流程圖如6-14所示。 圖6-14 外部中斷次數(shù)顯示程序流程圖 (2)程序清單 外部中斷次數(shù)顯示程序清單如下所示。 DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTA DW 50 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS: DATA ,SS:STACK START :MOV AL,13H ; 00010011B,ICW1:邊沿觸發(fā),單片,要ICW4 MOV DX,210H ; 8259地址 OUT DX,AL MOV AL,8 ; ICW2中斷類型號(hào)為8 MOV DX,211H OUT DX,AL MOV AL,01H ; ICW4不用緩沖方式,正常中斷結(jié)束,非特殊的全嵌套方式 OUT DX,AL MOV AX,0 ; 清零 MOV DS,AX ; 數(shù)據(jù)段清零 LEA AX,INT0 ; 寫8259中斷程序的入口地址 MOV DS:4*8,AX; 把中斷服務(wù)程序的入口地址偏移量送中斷矢量表 MOV AX,CS MOV DS:4*8+2,AX; 把中斷服務(wù)程序的入口地址段地址送中斷矢量表 IN AL,DX ; 讀中斷屏蔽寄存器IMR, AND AL,0FEH ; 屏蔽IR1IR7,允許IR0中的中斷請(qǐng)求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; A口輸出,方式0 OUT DX,AL MOV BL,0FFH ;置計(jì)數(shù)最大值 STI ; 開中斷 REPEAT :HLT JMP REPEAT ;等待 INT0 PROC NEAR ; 8259中斷程序 DEC BL ; 最大值減1(因?yàn)槭堑碗娖絃ED燈亮) MOV AL,BL MOV DX,200H ; PA口燈亮 OUT DX,AL MOV DX,210H MOV AL,20H ; OCW2發(fā)結(jié)束命令EOI=1 OUT DX,AL IRET INT0 ENDP CODE ENDS END START6.3.2 知識(shí)講解 1.8259A控制字8259A工作開始之前,首先要對(duì)8259A進(jìn)行初始化,也就是接收CPU發(fā)出的初始化控制字ICW1ICW4和操作控制字OCW1OCW3,以設(shè)定8259A的工作方式和發(fā)出相應(yīng)的控制命令。初始化命令字(ICW0ICW4)通常是在計(jì)算機(jī)系統(tǒng)啟動(dòng)時(shí)由初始化程序來(lái)設(shè)置,一般在系統(tǒng)的工作過(guò)程中不再重新設(shè)置。工作命令字(OCW1OCW3)用于對(duì)中斷處理過(guò)程進(jìn)行動(dòng)態(tài)控制,因此操作命令字可以在工作過(guò)程中多次設(shè)置。初始化流程圖如圖6-15所示。圖6-158259A初始化流程圖初始化控制字有4個(gè),操作控制字有3個(gè),需寫入8259A7個(gè)相應(yīng)的寄存器中,但是8259A只占用了兩個(gè)地址,偶地址和奇地址,8259A是通過(guò)控制字的標(biāo)識(shí)位和奇偶地址來(lái)決定控制字應(yīng)寫入到哪個(gè)寄存器中。下面討論每個(gè)控制字中特別標(biāo)出A0位,若A01,控制字應(yīng)寫在奇地址端口中,若A00,控制字應(yīng)寫在偶地址端口中。下面分別對(duì)初始化控制字和操作控制字各位定義進(jìn)行介紹。(1)初始化命令字ICW初始化命令字 是用來(lái)設(shè)定8259A的基本工作方式。它有四個(gè)初始化命令字寄存器ICW1ICW4。各初始化命令字的格式如下所示。 初始化命令字ICW1 ICW1的端口為偶(A0=0)地址,A0=0、D4=1為ICW1的特征位。ICW1是必須寫入的第一個(gè)初始化命令字,各位定義如圖6-16所示。D0位:表示后面是否設(shè)置ICW4命令字,D0=1,寫ICW4;D0=0,不寫ICW4。對(duì)于8086/8088系統(tǒng)必須設(shè)置ICW4命令字,D0位為1。D1位:表示有一片8259A工作還是有多片8259A工作,D1=1,單片使用;D1=0,多片使用,當(dāng)有多片8259A工作時(shí),他們組成級(jí)連方式。 圖6-16 ICW1的格式D2位:該位對(duì)8086/8088系統(tǒng)不起作用。對(duì)8080/8085及8098單片機(jī)系統(tǒng),D2位為1還是為0,決定中斷源中每?jī)蓚€(gè)相鄰的中斷處理程序的入口地址之間的距離間隔值。D3位:該位設(shè)定IR0IR7端中斷請(qǐng)求觸發(fā)方式是電平觸發(fā)方式還是邊沿觸發(fā)方式。D3=1,電平觸發(fā);D3=0,邊緣觸發(fā)。D4位:此位為特征位。表示當(dāng)前設(shè)置的是初始化控制字ICW1。D7D5位:這3位在8086/8088系統(tǒng)中不用,一般設(shè)定為0。 初始化命令字ICW2ICW2的端口為奇(A0=1)地址,A0恒等于1,為ICW2的特征位,它是必須寫入的第二個(gè)初始化命令字。此控制字為設(shè)置中斷類型號(hào)的初始化控制字,格式如圖6-17所示。CPU響應(yīng)中斷,發(fā)出第二個(gè)中斷響應(yīng)信號(hào)后,8259A將中斷類型寄存器中的內(nèi)容ICW2送到數(shù)據(jù)總線上。 圖6-17 ICW2的格式D0 D2位:為中斷類型碼的低三位,決定中斷源掛在8259A IRi 哪一個(gè)引腳上。例:根據(jù)中斷矢量表,1A0H1FFH單元8086系統(tǒng)未用,可向用戶開放。設(shè)用戶設(shè)備中斷矢量放入中斷矢量表1AAH開始的單元,那么1AAH/46AH,該設(shè)備中斷類型為6AH,這樣ICW2的值設(shè)置為6AH,高5位是01101,低3位值010,用戶設(shè)備的中斷申請(qǐng)線連接到8259A的IR2端。D3D7位:由用戶決定。中斷類型號(hào)的高5位,如上例高5位是01101。初始化命令字ICW3 ICW3的端口為奇(A0=1)地址。ICW3控制字僅用于級(jí)連方式,只有在一個(gè)系統(tǒng)中包含多片8259A時(shí),ICW3才有意義。系統(tǒng)中是否有多片8259A,是由ICW1的D1位決定的。當(dāng)ICW1的D1=0時(shí),初始化時(shí)才需要有ICW3控制字。ICW3的格式對(duì)于主片8259A和從片8259A是不一樣的,主、從片ICW3的各位格式如圖6-18所示。 例如:圖6-19所示是80x86 系列PC機(jī)中8259A級(jí)聯(lián)的實(shí)際連接電路框圖,根據(jù)主、從片ICW3的各位定義進(jìn)行填寫,其中從片ICW3就應(yīng)設(shè)置為00000010B,主片ICW3應(yīng)設(shè)置為00000100B。 圖6-19 80x86 系列PC機(jī)中8259A級(jí)聯(lián)圖初始化命令字ICW4ICW4的端口為奇(A0=1)地址,只有當(dāng)ICW1的D0位為1時(shí)才需寫入控制字ICW4。ICW4控制字的寫入決定8259A是工作在緩沖方式還是非緩沖方式,是一般全嵌套方式還是特殊全嵌套方式,中斷結(jié)束方式是自動(dòng)還是正常。ICW4初始化命令字的各位格式如圖6-20所示。 圖6-20 ICW4字格式D0位:系統(tǒng)選擇位。選擇8259A當(dāng)前工作在哪類CPU系統(tǒng)中,8086CPU該位為1。D1位:中斷結(jié)束方式位。選擇結(jié)束中斷的方式。就是使中斷服務(wù)寄存器的相應(yīng)位置0,有自動(dòng)結(jié)束和正常結(jié)束兩種方式。D2位:主從選擇位。此位僅在緩沖工作方式時(shí)有效。在D3位為1時(shí),D2位有效;D3位為0時(shí),D2位無(wú)效。D3位:用來(lái)設(shè)定是否選用緩沖方式,與D2配合用。D4位:嵌套方式選擇位。在級(jí)連方式下,主片8259A一般設(shè)置為特殊全嵌套工作方式,從片8259A設(shè)置為普通全嵌套工作方式。D7D5位:特征位。當(dāng)這三位為000時(shí),表示現(xiàn)在送出的控制字是ICW4。(2)操作命令字OCW寫完初始化命令字ICW之后,8259A就作好了接收從IRR輸入中斷請(qǐng)求的準(zhǔn)備。在8259A工作期間可以隨時(shí)寫入操作命令字OCW,設(shè)置8259A的各種工作方式。操作命令字OCW1OCW1的端口為奇(A0=1)地址。OCW1是中斷屏蔽操作控制字,設(shè)置OCW1實(shí)際上是在設(shè)置8259A的中斷屏蔽寄存器IMR。通過(guò)設(shè)置OCW1可對(duì)來(lái)自IRR的一個(gè)或多個(gè)中斷請(qǐng)求進(jìn)行屏蔽,在執(zhí)行某段程序時(shí),如果不希望某些中斷源在該時(shí)刻申請(qǐng)中斷,可對(duì)其進(jìn)行屏蔽,當(dāng)允許時(shí),再取消屏蔽操作。因而該控制字可根據(jù)用戶的意愿,隨時(shí)對(duì)某些中斷源進(jìn)行屏蔽或不屏蔽操作。OCW1操作命令字的各位格式如圖6-21所示。圖6-21 OCW1操作命令字格式D0D7位:將OCW1中的某位Di置1時(shí),IMR中的相應(yīng)位也為1,從而屏蔽相應(yīng)的IRi中斷請(qǐng)求信號(hào)。操作命令字OCW2OCW2的端口為偶(A0=0)地址。OCW2又兩個(gè)作用:一是設(shè)置中斷優(yōu)先級(jí)方式;二是發(fā)送中斷結(jié)束命令。中斷結(jié)束命令用于清除ISR中保存著的當(dāng)前正在被服務(wù)的中斷源的置位信息,如果該位不被復(fù)位為0,則后續(xù)的同級(jí)和較低級(jí)的中斷請(qǐng)求將不會(huì)被響應(yīng)。操作命令字OCW2的格式如圖6-22所示。圖6-22 OCW2字格式D0D2位:這三位的編碼000111一一對(duì)應(yīng)IR0IR7。對(duì)于中斷結(jié)束方式,控制字OCW2的SL、EOI、L2、L1、L0各位用來(lái)確定中斷結(jié)束方式。當(dāng)EOI1,且SL0,發(fā)中斷結(jié)束命令,L2L0位無(wú)效,使中斷服務(wù)寄存器當(dāng)前級(jí)別最高的為1位清零,此方法稱為一般中斷結(jié)束方式;當(dāng)EOI1,且SL1,發(fā)中斷結(jié)束命令,使中斷服務(wù)寄存器的某位置0,置0位由L2L0指明,此種方式為特殊中斷結(jié)束方式。例如,要使IR3在中斷服務(wù)寄存器的相應(yīng)位置0,OCW2控制字應(yīng)為01100011。對(duì)于優(yōu)先級(jí)循環(huán)方式,OCW2控制字的R、SL、L2、L1、L0各位確定優(yōu)先級(jí)控制方式。當(dāng)R=0,為固定的優(yōu)先級(jí)方式,IR0中斷級(jí)別最高,IR7中斷級(jí)別最低,SL、L2、L1、L0各位無(wú)意義;當(dāng)R=1,且SL=0時(shí),為優(yōu)先級(jí)自動(dòng)循環(huán)方式,剛剛被服務(wù)過(guò)的中斷源降為級(jí)別最低,L2、L1、L0各位無(wú)意義;當(dāng)R=1且SL=1時(shí),為優(yōu)先級(jí)特殊循環(huán)方式,此時(shí)的L2、L1、L0三位用來(lái)指定級(jí)別最低的中斷源IRi。例如OCW2命令字為11000011,指明IR3中斷源的級(jí)別最低。操作命令字OCW3OCW3的端口為偶(A0=0)地址。OCW3有三種作用:第一,讀中斷請(qǐng)求寄存器IRR或讀中斷服務(wù)寄存器ISR中的內(nèi)容;第二,設(shè)置使用中斷查詢方式或不使用中斷查詢方式;第三,設(shè)置使用特殊屏蔽方式或不使用特殊屏蔽方式。OCW3的各位格式如圖6-23所示。 D0D1位:讀命令。D0D1=11,讀中斷服務(wù)寄存器ISR中的內(nèi)容;D0D1=01,讀中斷申請(qǐng)寄存器IRR的內(nèi)容;D1=1,D0無(wú)意義。注意:8259A的屏蔽寄存器IMR的內(nèi)容可通過(guò)IN輸入指令直接讀出,不用發(fā)讀出命令。D4、D3:特征位。OCW2和OCW3都是寫入8259A的偶地址端口,當(dāng)D4=0、D3=0時(shí),8259A識(shí)別為OCW2,會(huì)把送來(lái)的控制字送入OCW2寄存器中;當(dāng)D4=0、D3=1時(shí),8259A識(shí)別為O

溫馨提示

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