




已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄第6章 中斷系統(tǒng)與可編程8259A6.1 8086中斷系統(tǒng)6.1.1項目1:外部中斷控制繼電器6.1.2知識講解6.2 8259A芯片引腳和內(nèi)部結(jié)構(gòu)6.2.1項目2:用8259A中斷控制LED燈左循環(huán)亮6.2.2知識講解6.3 8259A控制字及編程應(yīng)用6.3.1項目3:外部中斷次數(shù)顯示6.3.2知識講解6.4 項目擴展與工程應(yīng)用6.4.1項目4:中斷控制跑馬燈6.4.2項目5:兩個外部中斷源中斷思考題與練習(xí)題第6章 中斷系統(tǒng)與可編程8259A6.1 8086中斷系統(tǒng)6.1.1項目1:外部中斷控制繼電器1項目要求與目的 (1)項目要求:用8086CPU控制8259可編程中斷控制器,實現(xiàn)對外部中斷的響應(yīng)和處理。要求程序中對IR0每次中斷,去控制繼電器動作,使LED閃爍。(2)項目目的:了解8086中斷的概念。了解8086的中斷類型。了解8086的中斷矢量表。了解8086的中斷過程。2項目電路連接與說明(1)項目電路連接:如圖6-1所示的粗線為要接的連線,接線描述如下:8259A的片選連至地址譯碼處的210217插孔;8255A的片選連至地址譯碼處的200207插孔;PB0接到繼電器的控制端上;將UP脈沖按鈕連接至8259A的IR0插孔。(2)項目說明:8086需要外接中斷控制器才能對外部中斷進(jìn)行處理。8259可外接8個中斷源,本項目只響應(yīng)IR0中斷。將單脈沖信號UP接到8259的IR0腳,每次中斷時,可以看到繼電器控制的LED燈閃爍。 3項目電路原理框圖項目電路原理框圖如圖6-1所示。電路由8086CPU、8255A芯片、8259A芯片、繼電器及驅(qū)動和脈沖按鈕UP組成。 圖6-1 外部中斷控制繼電器電路圖4項目程序設(shè)計(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中斷類型號為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中的中斷請求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; B口輸出,方式0 OUT DX,AL MOV BL,01H ;置繼電器動作初值 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知識講解1.中斷基本概念(1)中斷中斷是通過硬件來改變CPU的運行方向的。當(dāng)CPU在執(zhí)行程序時,由內(nèi)部或外部的原因引起的隨機事件要求CPU暫時停止正在執(zhí)行的程序,而轉(zhuǎn)向執(zhí)行一個用于處理該隨機事件的程序,處理完后又返回被中止的程序斷點處繼續(xù)執(zhí)行,這一過程就稱為中斷。中斷之后所執(zhí)行的相應(yīng)的處理程序通常稱之為中斷服務(wù)或中斷處理子程序,原來正常運行的程序稱為主程序。主程序被斷開的位置(或地址)稱為“斷點”。引起中斷的原因,或能發(fā)出中斷申請的來源,稱為“中斷源”。中斷源要求服務(wù)的請求稱為“中斷請求”(或中斷申請)。中斷示意圖如圖6-3所示。 圖6-3 中斷示意圖(2)中斷的特點 提高CPU的效率中斷可以解決高速的CPU與低速的外設(shè)之間的矛盾,使CPU和外設(shè)并行工作。CPU在啟動外設(shè)工作后繼續(xù)執(zhí)行主程序,同時外設(shè)也在工作。每當(dāng)外設(shè)做完一件事就發(fā)出中斷申請,請求CPU中斷它正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,中斷處理完之后,CPU恢復(fù)執(zhí)行主程序,外設(shè)也繼續(xù)工作。這樣,CPU可啟動多個外設(shè)同時工作,大大地提高了CPU的效率。實時處理 在實時控制系統(tǒng)中,工業(yè)現(xiàn)場的各種參數(shù)和信息都會隨時間而變化。這些外界變量可根據(jù)要求隨時向CPU發(fā)出中斷申請,請求CPU及時處理中斷請求。如果滿足中斷條件,CPU就立刻會響應(yīng),轉(zhuǎn)入中斷處理,從而實現(xiàn)實時處理。故障處理 控制系統(tǒng)的故障和緊急情況難以預(yù)料的,如掉電、設(shè)備運行出錯等,可通過中斷系統(tǒng)由故障源向CPU發(fā)出中斷請求,再由CPU轉(zhuǎn)到相應(yīng)的故障處理程序進(jìn)行處理。(3) 中斷的功能實現(xiàn)中斷響應(yīng)和中斷返回當(dāng)CPU 收到中斷請求后,CPU要根據(jù)相關(guān)條件(如中斷優(yōu)先級、是否允許中斷)進(jìn)行判斷,決定是否響應(yīng)這個中斷請求。若響應(yīng),則在執(zhí)行完當(dāng)前指令后立刻響應(yīng)這一中斷請求。CPU中斷過程為:第一步 將斷點處的PC值(即下一條應(yīng)執(zhí)行指令的地址)壓入堆棧保留下來(這稱為保護(hù)斷點,由硬件自動執(zhí)行)。第二步 將有關(guān)的寄存器內(nèi)容和標(biāo)志PSW狀態(tài)壓入堆棧保留下來(這稱為保護(hù)現(xiàn)場,由用戶自己編程完成)。第三步 執(zhí)行中斷服務(wù)程序。第四步 中斷返回,CPU將繼續(xù)執(zhí)行原主程序。中斷返回過程為:首先恢復(fù)原保留寄存器的內(nèi)容和標(biāo)志位的狀態(tài),這稱為恢復(fù)現(xiàn)場,由用戶編程完成。然后,再加返回指令I(lǐng)RET,IRET指令的功能是恢復(fù)PC值,使CPU返回斷點,這稱為恢復(fù)斷點。 實現(xiàn)優(yōu)先權(quán)排隊中斷優(yōu)先權(quán)也稱為中斷優(yōu)先級。中斷系統(tǒng)中存在著多個中斷源,同一時刻可能會有不止一個中斷源提出中斷請求,因此需要給所有中斷源安排不同的優(yōu)先級別。CPU可通過中斷優(yōu)先級排隊電路首先響應(yīng)中斷優(yōu)先級高的中斷請求,等到處理完優(yōu)先級高的中斷請求后,再來響應(yīng)優(yōu)先級低的中斷請求。實現(xiàn)中斷嵌套 當(dāng)CPU響應(yīng)某一中斷時,若有中斷優(yōu)先級更高的中斷源發(fā)出中斷請求,CPU會暫停正在執(zhí)行的中斷服務(wù)程序,并保留這個程序的斷點,轉(zhuǎn)向執(zhí)行中斷優(yōu)先級更高的中斷源的中斷服務(wù)程序,等處理完這個高優(yōu)先級的中斷請求后,再返回來繼續(xù)執(zhí)行被暫停的中斷服務(wù)程序。這個過程稱為中斷嵌套。中斷嵌套流程圖如圖6-4所示。 圖6-4 中斷嵌套流程圖 (4)中斷源 引發(fā)中斷的事件稱為中斷源。8086CPU的中斷源有兩類:一是內(nèi)部中斷源,由CPU內(nèi)部的標(biāo)志TF為1或執(zhí)行一條軟件中斷指令而引起;二是外部中斷,由外部請求信號引起。外部中斷又分為可屏蔽中斷(INTR)和非屏蔽中斷(NMI)。中斷源形式如圖6-5所示。 圖6-5 8086CPU的中斷源(5) 禁止中斷與中斷屏蔽 在有些情況下,CPU不允許響應(yīng)可屏蔽中斷INTR,當(dāng)中斷源向CPU申請中斷后,CPU不能終止當(dāng)前正在運行的程序并轉(zhuǎn)到中斷服務(wù)程序,這種情況就是禁止中斷。 在另一些情況下,例如有多個中斷源發(fā)出申請時,CPU只響應(yīng)其中某些中斷,而屏蔽其他類型的中斷,這就叫中斷屏蔽。中斷屏蔽可以通過中斷屏蔽觸發(fā)器來實現(xiàn)。將中斷源對應(yīng)的中斷屏蔽觸發(fā)器置1,則中斷源的中斷請求被屏蔽,否則該中斷源的中斷請求被允許。2中斷類型與中斷向量表8086CPU的中斷系統(tǒng)能夠處理256個不同的中斷源,每個中斷源都有一個為它服務(wù)的中斷處理程序。CPU響應(yīng)中斷后,就要轉(zhuǎn)入相應(yīng)的中斷處理程序中。下面就介紹CPU如何轉(zhuǎn)入中斷處理程序的。中斷類型號:就是為每個中斷源指定一個編號,稱為中斷類型號。中斷矢量: 每一個中斷服務(wù)程序有一個確定的入口地址,該地址稱為中斷矢量。中斷矢量表: 把系統(tǒng)中所有的中斷矢量集中起來,按中斷類型號從小到大的順序安排到存儲器的某一個區(qū)域內(nèi),這個存放中斷矢量的存儲區(qū)叫中斷矢量表。80x86 CPU的中斷矢量表位于主存儲器最低地址00000H003FFH中,共占用1024個存儲器單元。中斷矢量表中共有256項,能處理256級中斷矢量,對應(yīng)中斷類型號是00H0FFH,中斷矢量表的結(jié)構(gòu)如圖6-6所示。圖6-6 中斷矢量表結(jié)構(gòu)圖中斷服務(wù)程序的入口地址在中斷矢量表中,占4個字節(jié),其中兩個低地址字節(jié)中存放中斷服務(wù)程序入口地址的段內(nèi)地址偏移量(IP)部分,兩個高地址字節(jié)中存放中斷服務(wù)程序入口地址的段地址(CS)部分。在中斷矢量表中,各個中斷矢量表按中斷類型碼從0到255順序存放。這樣,知道了中斷類型碼,很快就可計算出相應(yīng)中斷矢量的存放位置,從而取出中斷矢量。而每個中斷矢量的地址可由中斷類型碼乘以4計算出來。CPU響應(yīng)中斷時,只要把中斷類型碼N左移2位(乘以4),即可得到中斷矢量在中斷矢量表中的對應(yīng)地址4N,然后把兩個低地址字節(jié)中存放中斷服務(wù)程序入口地址的段內(nèi)地址偏移量(IP)部分,兩個高地址字節(jié)中存放中斷服務(wù)程序入口地址的段地址(CS)部分。【例題6-1】 中斷類型碼為27H,中斷矢量為: 中斷矢量應(yīng)存放在從0000H:009CH開始的4個連續(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號中斷的中斷服務(wù)程序的入口地址為:8765H:4321H.【例題6-2】中斷類型碼為17H,如中斷服務(wù)程序的入口地址是:3240H:87FFH,試指出中斷矢量表中存放該中斷矢量的4個字節(jié)單元的地址及內(nèi)容。解:由于中斷類型碼為17H,則中斷矢量為: 中斷矢量應(yīng)存放在從0000H:005CH開始的4個連續(xù)字節(jié)單元中,即:(0000H:005CH)=FFH(0000H:005DH)=87H(0000H:005EH)=40H(0000H:005FH)=32H3. 中斷響應(yīng)過程(1)8086中斷響應(yīng)過程8086的中斷響應(yīng)過程如圖6-7所示。從圖可以看出,該流程已經(jīng)考慮了不同中斷源的響應(yīng)優(yōu)先級,當(dāng)多個中斷同時申請中斷時,CPU先響應(yīng)內(nèi)部中斷,其次響應(yīng)非屏蔽中斷NMI,然后響應(yīng)可屏蔽中斷INTR,最后響應(yīng)單步中斷。這個中斷響應(yīng)過程,不同的中斷略有所不同。圖6-7 8086的中斷響應(yīng)過程(2)INTR中斷響應(yīng)過程不同的微型計算機的中斷系統(tǒng)略有所不同,但實現(xiàn)中斷時的過程基本相同。中斷過程包括4個階段即:中斷請求、中斷響應(yīng)、中斷服務(wù)、中斷返回。下面以INTR中斷為例來說明中斷的響應(yīng)過程。 CPU在INTR引腳上接到一個中斷請求信號,若此時的中斷允許標(biāo)志IF=1,并且,當(dāng)前的中斷請求具有最高的優(yōu)先級,CPU就在執(zhí)行完當(dāng)前指令以后開始響應(yīng)外部的中斷請求。這時,CPU通過引腳連續(xù)發(fā)出兩個負(fù)脈沖信號,外設(shè)接口在接到第二個負(fù)脈沖以后,就在數(shù)據(jù)線上發(fā)送中斷類型號,CPU接到此中斷類型號后,將進(jìn)行如下5步操作: 第1步,將中斷類型號送入暫存器保存。 第2步,將標(biāo)志寄存器PSW內(nèi)容壓入堆棧,以保護(hù)中斷時的狀態(tài)。 第3步,把IF和TF標(biāo)志清零。IF清零是為了防止在中斷響應(yīng)的同時又來別的中斷,而TF清零是為了防止CPU以單步方式執(zhí)行中斷處理程序。 第4步,保護(hù)斷點。就是將當(dāng)前程序執(zhí)行的下一條指令的IP和CS的內(nèi)容壓棧。保護(hù)斷點的作用是為了執(zhí)行中斷服務(wù)程序后能返回主程序。第5步,根據(jù)得到的中斷類型號,在中斷向量表中找出中斷向量,將其裝入IP和CS,這時程序就轉(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)部中斷也稱為軟件中斷,它由除法錯誤中斷、溢出中斷、單步中斷、斷點中斷和INT n指令中斷構(gòu)成。同時8086CPU規(guī)定了各類中斷的優(yōu)先級,最高為除法錯誤中斷INT 0、溢出中斷INT0及INT n指令、非屏蔽中斷NMI、可屏蔽中斷INTR、最低的是單步中斷。下面簡單進(jìn)行介紹。(1)外部中斷 80x86CPU有兩條外部中斷請求線:NMI和INTR,即NMI(17引腳)非屏蔽中斷和INTR(18引腳)可屏蔽中斷。 NMI非屏蔽中斷:中斷類型號為2,NMI非屏蔽中斷的中斷請求信號從CPU的外部送往CPU的引腳NMI上,采用邊沿觸發(fā)方式圖6-8 8086中斷結(jié)構(gòu) INTR可屏蔽中斷:中斷類型號為08H0FH。INTR可屏蔽中斷的中斷源一般是外部設(shè)備,可屏蔽中斷請求信號通過INTR引腳輸入,所有的可屏蔽中斷請求公用一條INTR線,由可編程中斷控制器8259A管理。需要注意的是非屏蔽中斷與可屏蔽中斷的不同點:可屏蔽中斷INTR由CPU的程序狀態(tài)控制字中的IF位為1還是為0決定的。IF=1,CPU響應(yīng)由INTR端引入的中斷申請;IF0,CPU不響應(yīng)由INTR端引入的中斷申請。由INTR端引入,依靠IF端置0還是置1決定CPU是否響應(yīng)的中斷稱為可屏蔽中斷。IF位置0可通過指令CLI實現(xiàn),稱為關(guān)中斷。IF位置1通過指令STI實現(xiàn),稱為開中斷。由NMI端引入,不受IF位狀態(tài)的控制,只要有中斷申請就必須響應(yīng)的中斷稱為非屏蔽中斷。(2)內(nèi)部中斷內(nèi)部中斷的中斷源在CPU的內(nèi)部。內(nèi)部中斷包括除法錯誤中斷、溢出中斷、單步中斷、斷點中斷和INT n指令中斷等。內(nèi)部中斷是由CPU內(nèi)部事件引發(fā)的中斷。除法錯誤中斷:除法錯誤中斷的中斷類型號為0。當(dāng)CPU執(zhí)行除法操作,除數(shù)為零或商超出計算機可表示的最大數(shù)值范圍時,產(chǎn)生0號,除法錯誤中斷。單步中斷:單步中斷的中斷類型號為1。當(dāng)PSW標(biāo)志寄存器的單步標(biāo)志位TF為1時,每執(zhí)行完一條指令,CPU立即暫停程序的執(zhí)行,產(chǎn)生1號中斷。單步中斷可用于進(jìn)行程序的調(diào)試。 斷點中斷:斷點中斷的中斷類型號為3。為了調(diào)試匯編語言程序經(jīng)常需要設(shè)置斷點,可以在程序中加入INT 3指令。 溢出中斷:溢出中斷的中斷類型號為4,以指令I(lǐng)NTO的形式出現(xiàn)。當(dāng)PSW標(biāo)志寄存器的溢出標(biāo)志OF為1時,且CPU執(zhí)行INTO指令,則產(chǎn)生溢出中斷。 INT n中斷:INT n中斷也稱為軟件中斷,以指令 INT n的形式出現(xiàn),中斷類型號就是n。CPU執(zhí)行INT n指令,產(chǎn)生類型號為n的內(nèi)部中斷。 6.2 8259A芯片引腳和內(nèi)部結(jié)構(gòu)6.2.1項目2:用8259A中斷控制LED燈左循環(huán)亮1項目要求與目的 (1)項目要求:用8086控制8259可編程中斷控制器,實現(xiàn)對外部中斷的響應(yīng)和處理。編寫程序?qū)崿F(xiàn)8086響應(yīng)外部中斷8259的IR0,每按一次脈沖按鈕,結(jié)果用8255的PA口輸出到LED發(fā)光二極管燈左循環(huán)亮。(2)項目目的:了解8259A的芯片引腳及內(nèi)部結(jié)構(gòu)。了解8259的初始化編程。了解8086與8259的連接方法。2項目電路連接與說明(1)項目電路連接:如圖6-9所示的粗線為要接的連線,接線描述如下:8259A的片選連至地址譯碼處的210217插孔;8255A的片選連至地址譯碼處的200207插孔;將8只LED發(fā)光二極管連接至8255A的PA0PA7插孔;將UP脈沖按鈕連接至8259A的IR0插孔。(2)項目說明:8259可外接8個中斷源,本項目只響應(yīng)INT0中斷,8259也可以多級連接,以響應(yīng)多個中斷源。將單脈沖信號接到8259的INT0腳。每按一下UP,8259A就中斷一次,LED發(fā)光二極管燈左循環(huán)亮。在編程時應(yīng)注意: 正確地設(shè)置可編程中斷控制和工作方式。 必須正確地設(shè)置中斷服務(wù)程序地址。3項目電路原理框圖項目電路原理框圖如圖6-9所示。電路由8086CPU、8255A芯片、8259A芯片、8只發(fā)光二極管LED0LED7和脈沖按鈕UP組成。 圖6-9 用8259A中斷控制LED燈左循環(huán)亮電路圖4項目程序設(shè)計(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中斷類型號為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中的中斷請求 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 知識講解1.概述Intel 8259A可編程中斷控制器用于管理PC機中的INTR中斷(外部可屏蔽中斷)。外部設(shè)備可通過中斷控制器8259A的中斷請求線INT把中斷請求信號送往CPU的INTR線,以便提出中斷請求。8259A的主要功能如下所示。(1) 可管理8個中斷源電路的中斷,并能對其進(jìn)行優(yōu)先級管理。 (2) 用9片8259A可組成主從式中斷系統(tǒng),管理64個中斷源電路的中斷,并能對其進(jìn)行優(yōu)先級管理。 (3) 對中斷源有屏蔽或允許申請中斷的操作。 (4) 能自動送出中斷類型號,使CPU迅速找到中斷服務(wù)程序的入口地址。2. 8259A芯片引腳與內(nèi)部結(jié)構(gòu)(1)8259A芯片引腳8259A為28腳雙列直插式芯片,芯片引腳如圖6-11所示,各引腳信號功能如下所示。(1腳):片選信號。輸入,低電平有效。該信號有效時,CPU可對該8259A進(jìn)行讀寫操作。(2腳):寫信號。輸入,低電平有效。該信號有效時,允許CPU把命令字(ICW和OCW)寫入相應(yīng)命令寄存器。(3腳):讀信號。輸入,低電平有效。該信號有效時,允許該8259A將狀態(tài)信息放到數(shù)據(jù)總線上供CPU檢測。 圖6-11 8259A芯片引腳圖D0D7(114腳):雙向數(shù)據(jù)總線。用來傳送控制、狀態(tài)和中斷類型號。IR0IR7(1825腳):外部中斷請求信號。INT(17腳):中斷請求信號。用來向CPU發(fā)送中斷請求信號。(26腳):中斷響應(yīng)信號。CPU同意中斷申請后,發(fā)此信號作為響應(yīng)中斷的回答信號。A0(27腳):地址輸入信號,用于尋址8259A內(nèi)部寄存器,一般與地址總線的A0連接。同、和在PC AT機上的組合操作功能見表6-1表6-1 8259A讀/寫操作與I/O端口地址 CAS0CAS2(12、13、15腳):級聯(lián)信號。雙向引腳,用來控制多片8259A的級聯(lián)使用。對主片來說,CAS0CAS2為輸出;對從片來說,CAS0CAS2為輸入。/(16腳):從片/允許緩沖器信號。此信號線為雙向,作用有二:一是當(dāng)為輸入時,用來決定本片是主片還是從片,當(dāng)=1,該片為主片;當(dāng)=0,該片為從片;二是當(dāng)為輸出時,/可作為啟動數(shù)據(jù)總線驅(qū)動器的啟動信號。(2)8259A芯片內(nèi)部結(jié)構(gòu)8259A的內(nèi)部結(jié)構(gòu)如圖6-12所示。下面介紹各個部分的功能圖6-12 8259A芯片的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器。 這是一個8位的雙向三態(tài)緩沖器,是8259A與CPU之間的數(shù)據(jù)接口,在讀/寫邏輯的控制之下實現(xiàn)CPU與8259A之間的信息交換。讀寫控制電路。讀/寫邏輯電路控制CPU與8259A之間的信息交換。為片選信號線,低電平時選中8259A工作。由片選信號和A0指定內(nèi)部寄存器,CPU可以通過執(zhí)行OUT指令,將初始化命令字和工作命令字寫入相應(yīng)的命令寄存器ICW和OCW中;也可以通過執(zhí)行IN指令,將8259A中的IRR、ISR、IMR等寄存器的內(nèi)容讀入CPU中。級聯(lián)緩沖/比較器。用來實現(xiàn)多個8259A的級聯(lián)及數(shù)據(jù)緩沖方式。級聯(lián)時,一個8259A芯片為主片,最多能帶動8個8259從片,因此最多可以實現(xiàn)對64級中斷的管理。這時,從片的INT腳與主片的一條中斷請求信號線IRi相連,同時將主片的CAS0CAS2與與所有從片的CAS0CAS2相連,構(gòu)成8259A的主從式控制結(jié)構(gòu)。主片引腳接高電平,CAS0CAS2為輸出引腳;從片引腳接低電平,CAS0CAS2為輸入引腳。每個從8259A芯片的中斷請求信號INT接至主8259A芯片的中斷請求輸入端IRi,主8259A的INT連接至CPU的中斷請求輸入端。主、從8259A芯片應(yīng)分別初始化和設(shè)置必要的工作狀態(tài)。 中斷請求寄存器IRR。這是8位寄存器,是8259A與外設(shè)中斷源相接的接口。該寄存器通過IR7IR0的8根線與8個中斷源相接。當(dāng)有某個中斷源申請中斷時,使8位寄存器的相應(yīng)位置1。最多可同時接收8個中斷源的中斷申請。中斷服務(wù)寄存器ISR。這是8位寄存器,用8位寄存器的某位置1記錄CPU當(dāng)前正為哪個中斷源服務(wù),該信號一直保持到CPU處理完該中斷服務(wù)程序為止。當(dāng)該寄存器有多位置1時,表示CPU正在處理低級別中斷源的中斷服務(wù)程序時,發(fā)生級別高的中斷源申請中斷,CPU未處理完低級別中斷服務(wù)程序而轉(zhuǎn)向級別高的中斷服務(wù)程序,形成中斷服務(wù)嵌套。當(dāng)中斷結(jié)束時,由中斷結(jié)束命令EOI或自動將相應(yīng)位ISRi清0。中斷屏蔽寄存器IMR。中斷屏蔽寄存器IMR,8位,屏蔽或允許IRR中的中斷請求。用戶可根據(jù)需要設(shè)IMR,禁止或允許某些中斷(通過設(shè)置OCW1可對來自IRR的一個或多個中斷請求進(jìn)行屏蔽)。 優(yōu)先級判別器PR。優(yōu)先級判別器PR時用來識別各中斷請求的優(yōu)先級別。在多個中斷請求信號同時出現(xiàn)并經(jīng)IMR允許進(jìn)入系統(tǒng)后,先由PR選出其最高優(yōu)先級的中斷請求,由CPU首先響應(yīng)這一級中斷,并在第一個中斷響應(yīng)周期將ISR中的相應(yīng)位置“1”。當(dāng)出現(xiàn)多重中斷時,PR將首先比較ISR中正在服務(wù)的與IRR中斷請求服務(wù)的兩個中斷請求優(yōu)先級的大小,從中決定是否向CPU發(fā)出新的中斷請求來響應(yīng)更高優(yōu)先級的中斷請求服務(wù)。一般的原則是允許高級中斷打斷低級中斷,而不允許低級中斷打斷高級中斷,也不允許同級中斷相互打斷??刂齐娐???刂齐娐酚脕砜刂普麄€芯片內(nèi)部各部件之間協(xié)調(diào)一致地工作??刂齐娐分杏腥缦?個寄存器。ICW1ICW4用來存放初始化程序設(shè)定的工作方式字,管理8259A的工作;OCW1OCW3用來存放操作命令字,對中斷處理過程進(jìn)行動態(tài)控制。操作命令字也是由程序設(shè)定的??刂齐娐返目刂谱饔糜袃蓚€:一是向CPU通過INT線發(fā)中斷申請;二是接收來自CPU輸出的中斷響應(yīng)信號。 3. 8259A的中斷工作過程為了對8259A的工作過程有個系統(tǒng)的層次分明的了解,下面對8259A的中斷工作過程作一個小結(jié)式的說明。(1) 當(dāng)有一個或多個中斷源申請中斷時,通過IR7IR0輸入給8259A,使中斷請求寄存器IRR相應(yīng)位置1。(2) 當(dāng)對中斷源的中斷申請不屏蔽的情況下,向中斷控制器發(fā)中斷申請信號,中斷控制器把該信號轉(zhuǎn)發(fā)給優(yōu)先級判別器PR。(3) 優(yōu)先級判別器PR根據(jù)中斷申請寄存器的內(nèi)容決定處理哪個中斷源申請的中斷,再根據(jù)中斷服務(wù)寄存器ISR的內(nèi)容決定CPU正響應(yīng)哪一級中斷源,經(jīng)過優(yōu)先級判別決定該中斷源是否高于CPU正在服務(wù)的中斷源,若高于,通過控制邏輯的INT線向CPU申請中斷。(4) 若CPU處于開中斷狀態(tài),則在當(dāng)前指令執(zhí)行完后,進(jìn)入中斷服務(wù)程序,并用信號作為響應(yīng)中斷的回答信號。(5) 8259A接收到信號后,使中斷服務(wù)寄存器ISR相應(yīng)位置1,使中斷請求寄存器IRR的相應(yīng)位置0,以避免該中斷源再次發(fā)生中斷申請。(6) CPU啟動另一個中斷響應(yīng)周期,輸出另一個脈沖。這時8259A通過數(shù)據(jù)總線向CPU輸出當(dāng)前級別最高的中斷申請源的中斷類型號,以便CPU很快轉(zhuǎn)入中斷服務(wù)程序。(7) 若8259A工作在AEOI模式(自動結(jié)束方式),在第二個脈沖結(jié)束時,使中斷源在中斷服務(wù)寄存器中的相應(yīng)位置0;否則,直至中斷服務(wù)程序結(jié)束,發(fā)出EOI命令,才使中斷服務(wù)寄存器中的相應(yīng)位復(fù)位。6.3 8259A控制字及編程應(yīng)用6.3.1項目3:外部中斷次數(shù)顯示1項目要求與目的 (1)項目要求:用8086CPU控制8259可編程中斷控制器,實現(xiàn)對外部中斷的響應(yīng)和處理。要求程序中對每次中斷進(jìn)行計數(shù),并將計數(shù)結(jié)果用8255的PA口輸出到LED顯示。(2)項目目的:掌握8259A控制字的設(shè)置。掌握8259A的初始化編程方法。了解8086與8259A的連接方法。了解8259A的工作方式。2項目電路連接與說明(1)項目電路連接:如圖6-13所示的粗線為要接的連線,接線描述如下:8259A的片選連至地址譯碼處的210217插孔;8255A的片選連至地址譯碼處的200207插孔;將8只LED發(fā)光二極管連接至8255A的PA0PA7插孔;將UP脈沖按鈕連接至8259A的IR0插孔。(2)項目說明:8086需要外接中斷控制器才能對外部中斷進(jìn)行處理。8259可外接8個中斷源,本項目只響應(yīng)IR0中斷。將單脈沖信號接到8259的IR0腳。每次中斷時,可以看到LED顯示會加1。在編程時應(yīng)注意: 正確地設(shè)置可編程中斷控制和工作方式。 必須正確地設(shè)置中斷服務(wù)程序地址。 本實驗是LED燈是低電平亮。3項目電路原理框圖項目電路原理框圖如圖6-13所示。電路由8086CPU、8255A芯片、8259A芯片、8只發(fā)光二極管LED0LED7和脈沖按鈕UP組成。 圖6-13 外部中斷次數(shù)顯示電路圖4項目程序設(shè)計(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中斷類型號為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中的中斷請求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; A口輸出,方式0 OUT DX,AL MOV BL,0FFH ;置計數(shù)最大值 STI ; 開中斷 REPEAT :HLT JMP REPEAT ;等待 INT0 PROC NEAR ; 8259中斷程序 DEC BL ; 最大值減1(因為是低電平LED燈亮) 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 知識講解 1.8259A控制字8259A工作開始之前,首先要對8259A進(jìn)行初始化,也就是接收CPU發(fā)出的初始化控制字ICW1ICW4和操作控制字OCW1OCW3,以設(shè)定8259A的工作方式和發(fā)出相應(yīng)的控制命令。初始化命令字(ICW0ICW4)通常是在計算機系統(tǒng)啟動時由初始化程序來設(shè)置,一般在系統(tǒng)的工作過程中不再重新設(shè)置。工作命令字(OCW1OCW3)用于對中斷處理過程進(jìn)行動態(tài)控制,因此操作命令字可以在工作過程中多次設(shè)置。初始化流程圖如圖6-15所示。圖6-158259A初始化流程圖初始化控制字有4個,操作控制字有3個,需寫入8259A7個相應(yīng)的寄存器中,但是8259A只占用了兩個地址,偶地址和奇地址,8259A是通過控制字的標(biāo)識位和奇偶地址來決定控制字應(yīng)寫入到哪個寄存器中。下面討論每個控制字中特別標(biāo)出A0位,若A01,控制字應(yīng)寫在奇地址端口中,若A00,控制字應(yīng)寫在偶地址端口中。下面分別對初始化控制字和操作控制字各位定義進(jìn)行介紹。(1)初始化命令字ICW初始化命令字 是用來設(shè)定8259A的基本工作方式。它有四個初始化命令字寄存器ICW1ICW4。各初始化命令字的格式如下所示。 初始化命令字ICW1 ICW1的端口為偶(A0=0)地址,A0=0、D4=1為ICW1的特征位。ICW1是必須寫入的第一個初始化命令字,各位定義如圖6-16所示。D0位:表示后面是否設(shè)置ICW4命令字,D0=1,寫ICW4;D0=0,不寫ICW4。對于8086/8088系統(tǒng)必須設(shè)置ICW4命令字,D0位為1。D1位:表示有一片8259A工作還是有多片8259A工作,D1=1,單片使用;D1=0,多片使用,當(dāng)有多片8259A工作時,他們組成級連方式。 圖6-16 ICW1的格式D2位:該位對8086/8088系統(tǒng)不起作用。對8080/8085及8098單片機系統(tǒng),D2位為1還是為0,決定中斷源中每兩個相鄰的中斷處理程序的入口地址之間的距離間隔值。D3位:該位設(shè)定IR0IR7端中斷請求觸發(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的特征位,它是必須寫入的第二個初始化命令字。此控制字為設(shè)置中斷類型號的初始化控制字,格式如圖6-17所示。CPU響應(yīng)中斷,發(fā)出第二個中斷響應(yīng)信號后,8259A將中斷類型寄存器中的內(nèi)容ICW2送到數(shù)據(jù)總線上。 圖6-17 ICW2的格式D0 D2位:為中斷類型碼的低三位,決定中斷源掛在8259A IRi 哪一個引腳上。例:根據(jù)中斷矢量表,1A0H1FFH單元8086系統(tǒng)未用,可向用戶開放。設(shè)用戶設(shè)備中斷矢量放入中斷矢量表1AAH開始的單元,那么1AAH/46AH,該設(shè)備中斷類型為6AH,這樣ICW2的值設(shè)置為6AH,高5位是01101,低3位值010,用戶設(shè)備的中斷申請線連接到8259A的IR2端。D3D7位:由用戶決定。中斷類型號的高5位,如上例高5位是01101。初始化命令字ICW3 ICW3的端口為奇(A0=1)地址。ICW3控制字僅用于級連方式,只有在一個系統(tǒng)中包含多片8259A時,ICW3才有意義。系統(tǒng)中是否有多片8259A,是由ICW1的D1位決定的。當(dāng)ICW1的D1=0時,初始化時才需要有ICW3控制字。ICW3的格式對于主片8259A和從片8259A是不一樣的,主、從片ICW3的各位格式如圖6-18所示。 例如:圖6-19所示是80x86 系列PC機中8259A級聯(lián)的實際連接電路框圖,根據(jù)主、從片ICW3的各位定義進(jìn)行填寫,其中從片ICW3就應(yīng)設(shè)置為00000010B,主片ICW3應(yīng)設(shè)置為00000100B。 圖6-19 80x86 系列PC機中8259A級聯(lián)圖初始化命令字ICW4ICW4的端口為奇(A0=1)地址,只有當(dāng)ICW1的D0位為1時才需寫入控制字ICW4。ICW4控制字的寫入決定8259A是工作在緩沖方式還是非緩沖方式,是一般全嵌套方式還是特殊全嵌套方式,中斷結(jié)束方式是自動還是正常。ICW4初始化命令字的各位格式如圖6-20所示。 圖6-20 ICW4字格式D0位:系統(tǒng)選擇位。選擇8259A當(dāng)前工作在哪類CPU系統(tǒng)中,8086CPU該位為1。D1位:中斷結(jié)束方式位。選擇結(jié)束中斷的方式。就是使中斷服務(wù)寄存器的相應(yīng)位置0,有自動結(jié)束和正常結(jié)束兩種方式。D2位:主從選擇位。此位僅在緩沖工作方式時有效。在D3位為1時,D2位有效;D3位為0時,D2位無效。D3位:用來設(shè)定是否選用緩沖方式,與D2配合用。D4位:嵌套方式選擇位。在級連方式下,主片8259A一般設(shè)置為特殊全嵌套工作方式,從片8259A設(shè)置為普通全嵌套工作方式。D7D5位:特征位。當(dāng)這三位為000時,表示現(xiàn)在送出的控制字是ICW4。(2)操作命令字OCW寫完初始化命令字ICW之后,8259A就作好了接收從IRR輸入中斷請求的準(zhǔn)備。在8259A工作期間可以隨時寫入操作命令字OCW,設(shè)置8259A的各種工作方式。操作命令字OCW1OCW1的端口為奇(A0=1)地址。OCW1是中斷屏蔽操作控制字,設(shè)置OCW1實際上是在設(shè)置8259A的中斷屏蔽寄存器IMR。通過設(shè)置OCW1可對來自IRR的一個或多個中斷請求進(jìn)行屏蔽,在執(zhí)行某段程序時,如果不希望某些中斷源在該時刻申請中斷,可對其進(jìn)行屏蔽,當(dāng)允許時,再取消屏蔽操作。因而該控制字可根據(jù)用戶的意愿,隨時對某些中斷源進(jìn)行屏蔽或不屏蔽操作。OCW1操作命令字的各位格式如圖6-21所示。圖6-21 OCW1操作命令字格式D0D7位:將OCW1中的某位Di置1時,IMR中的相應(yīng)位也為1,從而屏蔽相應(yīng)的IRi中斷請求信號。操作命令字OCW2OCW2的端口為偶(A0=0)地址。OCW2又兩個作用:一是設(shè)置中斷優(yōu)先級方式;二是發(fā)送中斷結(jié)束命令。中斷結(jié)束命令用于清除ISR中保存著的當(dāng)前正在被服務(wù)的中斷源的置位信息,如果該位不被復(fù)位為0,則后續(xù)的同級和較低級的中斷請求將不會被響應(yīng)。操作命令字OCW2的格式如圖6-22所示。圖6-22 OCW2字格式D0D2位:這三位的編碼000111一一對應(yīng)IR0IR7。對于中斷結(jié)束方式,控制字OCW2的SL、EOI、L2、L1、L0各位用來確定中斷結(jié)束方式。當(dāng)EOI1,且SL0,發(fā)中斷結(jié)束命令,L2L0位無效,使中斷服務(wù)寄存器當(dāng)前級別最高的為1位清零,此方法稱為一般中斷結(jié)束方式;當(dāng)EOI1,且SL1,發(fā)中斷結(jié)束命令,使中斷服務(wù)寄存器的某位置0,置0位由L2L0指明,此種方式為特殊中斷結(jié)束方式。例如,要使IR3在中斷服務(wù)寄存器的相應(yīng)位置0,OCW2控制字應(yīng)為01100011。對于優(yōu)先級循環(huán)方式,OCW2控制字的R、SL、L2、L1、L0各位確定優(yōu)先級控制方式。當(dāng)R=0,為固定的優(yōu)先級方式,IR0中斷級別最高,IR7中斷級別最低,SL、L2、L1、L0各位無意義;當(dāng)R=1,且SL=0時,為優(yōu)先級自動循環(huán)方式,剛剛被服務(wù)過的中斷源降為級別最低,L2、L1、L0各位無意義;當(dāng)R=1且SL=1時,為優(yōu)先級特殊循環(huán)方式,此時的L2、L1、L0三位用來指定級別最低的中斷源IRi。例如OCW2命令字為11000011,指明IR3中斷源的級別最低。操作命令字OCW3OCW3的端口為偶(A0=0)地址。OCW3有三種作用:第一,讀中斷請求寄存器IRR或讀中斷服務(wù)寄存器ISR中的內(nèi)容;第二,設(shè)置使用中斷查詢方式或不使用中斷查詢方式;第三,設(shè)置使用特殊屏蔽方式或不使用特殊屏蔽方式。OCW3的各位格式如圖6-23所示。 D0D1位:讀命令。D0D1=11,讀中斷服務(wù)寄存器ISR中的內(nèi)容;D0D1=01,讀中斷申請寄存器IRR的內(nèi)容;D1=1,D0無意義。注意:8259A的屏蔽寄存器IMR的內(nèi)容可通過IN輸入指令直接讀出,不用發(fā)讀出命令。D4、D3:特征位。OCW2和OCW3都是寫入8259A的偶地址端口,當(dāng)D4=0、D3=0時,8259A識別為OCW2,會把送來的控制字送入OCW2寄存器中;當(dāng)D4=0、D3=1時,8259A識別為O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商務(wù)英語中的資產(chǎn)管理與風(fēng)險控制試題及答案
- 2025年大學(xué)物理考試的旋轉(zhuǎn)體題目及答案
- 反應(yīng)物與產(chǎn)物關(guān)系研究題目及答案
- 2025年大學(xué)物理難易對比試題及答案
- 2025年家具行業(yè)設(shè)計的數(shù)字化轉(zhuǎn)型試題及答案
- 2025年注冊土木工程師考試的試題及答案獲取技巧
- 2025年樂理視聽分析試題及答案
- 2025年農(nóng)業(yè)電商網(wǎng)絡(luò)營銷策略試題及答案
- 口腔科簡答試題及答案
- 單招柳鐵試題及答案
- 醫(yī)務(wù)人員技術(shù)檔案
- JBT 7387-2014 工業(yè)過程控制系統(tǒng)用電動控制閥
- 18文言文二則《囊螢夜讀》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- (正式版)JBT 106-2024 閥門的標(biāo)志和涂裝
- 期中測試卷(1-5單元)(試題)-2023-2024學(xué)年二年級下冊數(shù)學(xué)人教版
- 2022高考數(shù)學(xué)全國1卷(原卷版)
- 陜西方言研究報告
- 土地永久性租賃合同
- 武漢商用車展電驅(qū)橋匯總
- 中國石油非油管理述職報告
- 建筑工程總承包與分包界面劃分大全(4種)
評論
0/150
提交評論