




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
浙江工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1內(nèi)容回顧DMA傳輸基本概念DMA的傳送過程、傳送方式和操作類型。DMA控制器8237A8237A的內(nèi)部結(jié)構(gòu)和外部引腳。8237A的內(nèi)部寄存器(10種)及其地址分配。8237A的編程步驟和工作時(shí)序。PC中的DMA應(yīng)用DMA系統(tǒng)的組成。單片DMA系統(tǒng)和雙片DMA系統(tǒng)。DMA系統(tǒng)的應(yīng)用實(shí)例。23第五章中斷技術(shù)8259A的應(yīng)用舉例48086/8088微機(jī)中斷系統(tǒng)28259A可編程中斷控制器3PC機(jī)中的中斷應(yīng)用5中斷技術(shù)概述1中斷方式下,CPU無需完全服務(wù)于某個(gè)外設(shè),效率高。當(dāng)出現(xiàn)某些異?;蚰惩庠O(shè)有請(qǐng)求時(shí),CPU暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行某一特定的程序,執(zhí)行完后再返回原來的程序處繼續(xù)執(zhí)行。
5.1中斷技術(shù)概述4中斷指CPU正在執(zhí)行某程序的過程中,由于出現(xiàn)了某些異?;蛲庠O(shè)提出了某種請(qǐng)求,CPU暫停當(dāng)前程序,轉(zhuǎn)去處理異?;蛲庠O(shè)請(qǐng)求的程序,執(zhí)行完后再返回原來被終止的程序處繼續(xù)執(zhí)行。該過程稱為中斷。主程序未發(fā)生中斷時(shí),CPU正在執(zhí)行的程序稱為主程序。5
(1)中斷的常用術(shù)語中斷服務(wù)程序ISR處理中斷事件的程序,又稱中斷子程序。不同的中斷對(duì)應(yīng)不同的ISR。斷點(diǎn)中斷時(shí),主程序中被終止指令的下一條指令的地址。CPU轉(zhuǎn)去執(zhí)行ISR時(shí),斷點(diǎn)被壓入棧中進(jìn)行保護(hù);ISR執(zhí)行完畢后,CPU通過出棧操作從棧頂獲得中斷斷點(diǎn),確保能返回到主程序處繼續(xù)執(zhí)行。6中斷源引起中斷的事件或設(shè)備。內(nèi)部中斷:在CPU的內(nèi)部產(chǎn)生。例:CPU執(zhí)行程序時(shí)遇到的特殊情況,如:除法錯(cuò)。外部中斷:在CPU的外部產(chǎn)生。例:外設(shè)提出的中斷,如電源故障。中斷類型號(hào)微機(jī)系統(tǒng)中有多個(gè)中斷源。為便于區(qū)分,為每個(gè)中斷源分配一個(gè)編號(hào),即中斷類型號(hào)。7中斷接口當(dāng)中斷源向CPU發(fā)中斷請(qǐng)求時(shí),需由一個(gè)電路來進(jìn)行管理,如:接收中斷請(qǐng)求、屏蔽/打開中斷請(qǐng)求、中斷優(yōu)先級(jí)排隊(duì)、中斷嵌套和中斷結(jié)束等。實(shí)現(xiàn)中斷管理的邏輯電路稱為中斷接口。本章使用8259A可編程中斷控制器對(duì)系統(tǒng)的中斷進(jìn)行管理。8中斷識(shí)別指CPU確定哪一個(gè)中斷源發(fā)出中斷請(qǐng)求的過程。目的:最終形成該中斷源所對(duì)應(yīng)的中斷服務(wù)程序的入口地址,實(shí)現(xiàn)程序的轉(zhuǎn)移。中斷識(shí)別的2種方法:查詢法:采用軟件或硬件查詢技術(shù)來確定發(fā)出中斷請(qǐng)求的中斷源。硬件法:由可編程中斷控制器來提供中斷類型號(hào)。9中斷向量和中斷向量表中斷向量:指中斷服務(wù)程序的入口地址。每個(gè)ISR都有一個(gè)確定的入口地址。入口地址=段基址CS:
偏移地址IP,共4個(gè)字節(jié)。中斷向量表:將系統(tǒng)中所有的中斷向量集中起來,按中斷類型號(hào)從小到大的順序存放在內(nèi)存某區(qū)域。該存儲(chǔ)區(qū)域稱為中斷向量表。PC機(jī)中共有256個(gè)中斷(0~255),每個(gè)中斷向量占4個(gè)字節(jié),共占1KB的存儲(chǔ)區(qū)域。用0000~03FFH的內(nèi)存單元存儲(chǔ)中斷向量表。1011
從中斷源請(qǐng)求中斷到完成ISR后返回主程序的過程,稱為中斷過程。包含4個(gè)階段。中斷源請(qǐng)求中斷外設(shè)發(fā)出中斷請(qǐng)求時(shí),中斷接口電路需設(shè)置中斷請(qǐng)求觸發(fā)器,保持外設(shè)的中斷請(qǐng)求信號(hào),直到CPU響應(yīng)該中斷后才清除它。中斷接口電路應(yīng)設(shè)置中斷屏蔽寄存器,CPU可通過對(duì)其進(jìn)行設(shè)置,使得某些中斷源的中斷請(qǐng)求不能提交到CPU。12
(2)中斷過程中斷判優(yōu)由于同一時(shí)刻可能會(huì)有多個(gè)中斷源同時(shí)請(qǐng)求中斷服務(wù),因此接口電路需對(duì)這些中斷源進(jìn)行優(yōu)先級(jí)判別和優(yōu)先級(jí)排隊(duì)。這個(gè)過程稱為中斷判優(yōu)。CPU按照優(yōu)先級(jí)的高低順序來響應(yīng)中斷。13中斷響應(yīng)收到中斷請(qǐng)求后,若CPU滿足響應(yīng)條件,則進(jìn)入中斷響應(yīng)周期。CPU響應(yīng)中斷的條件:CPU當(dāng)前指令執(zhí)行結(jié)束。沒有更高級(jí)的中斷請(qǐng)求在執(zhí)行。CPU處于開中斷狀態(tài)(IF=1)。可用指令改變IF的狀態(tài):STI開中斷;CLI關(guān)中斷。1415中斷響應(yīng)及處理過程示意圖中斷響應(yīng)周期需完成的操作(CPU硬件自動(dòng)完成)清IF和TF單步陷阱標(biāo)志,以免在響應(yīng)過程中被新的中斷源中斷,破壞了當(dāng)前中斷處理的現(xiàn)場(chǎng)。將標(biāo)志寄存器FLGAS和中斷斷點(diǎn)(CS:IP)壓棧保存。查找中斷向量表,獲得ISR的入口地址,轉(zhuǎn)去執(zhí)行ISR。中斷服務(wù)CPU轉(zhuǎn)入ISR后,需做以下幾件事情:保護(hù)現(xiàn)場(chǎng):ISR將要用到的寄存器壓棧,以免其數(shù)據(jù)破壞。開中斷:以便在執(zhí)行ISR時(shí),能響應(yīng)更高級(jí)的中斷請(qǐng)求。中斷處理:處理中斷請(qǐng)求所要求的操作。關(guān)中斷:保證在恢復(fù)現(xiàn)場(chǎng)時(shí)不被新的中斷打斷?;謴?fù)現(xiàn)場(chǎng):在ISR結(jié)束前,執(zhí)行出棧操作,恢復(fù)各寄存器的內(nèi)容,以便主程序正確執(zhí)行。開中斷:保證返回主程序后仍能響應(yīng)中斷。中斷返回:ISR的最后一條指令為IRET,它將IP、CS和FLAGS的內(nèi)容依次彈出,以便恢復(fù)到主程序的斷點(diǎn)處。16中斷管理包括中斷源識(shí)別、優(yōu)先級(jí)排隊(duì)和中斷嵌套。中斷源識(shí)別PC機(jī)內(nèi)有多個(gè)中斷源,CPU收到中斷請(qǐng)求后,需識(shí)別是哪一個(gè)中斷源發(fā)出了中斷請(qǐng)求信號(hào),以便執(zhí)行相應(yīng)的中斷服務(wù)程序。中斷源識(shí)別的兩種方法:軟件查詢:CPU逐個(gè)查詢各中斷源的狀態(tài),從而確定是哪個(gè)設(shè)備發(fā)出了中斷請(qǐng)求。硬件處理:中斷接口電路將要響應(yīng)的中斷類型號(hào)送給CPU。17
(3)中斷管理2.中斷的優(yōu)先級(jí)排隊(duì)當(dāng)有多個(gè)中斷源同時(shí)請(qǐng)求中斷時(shí),由于CPU在同一時(shí)刻只能響應(yīng)并處理一個(gè)中斷請(qǐng)求,因此,需根據(jù)中斷的性質(zhì)及輕重緩急對(duì)中斷源進(jìn)行優(yōu)先級(jí)排隊(duì)。CPU先響應(yīng)優(yōu)先級(jí)高的中斷請(qǐng)求。高優(yōu)先級(jí)的中斷請(qǐng)求可中斷低優(yōu)先級(jí)的中斷服務(wù)。優(yōu)先級(jí)排隊(duì)的方法:軟件查詢法硬件菊花鏈排隊(duì)法可編程中斷控制器排隊(duì)法18軟件查詢法19軟件查詢法的實(shí)現(xiàn):屏蔽法20INAL,20H;讀取中斷請(qǐng)求觸發(fā)器的內(nèi)容TESTAL,80H
JNEA_ISP;外設(shè)A有請(qǐng)求,則轉(zhuǎn)入A的服務(wù)程序TESTAL,40H
JNEB_ISP ;外設(shè)B有請(qǐng)求,則轉(zhuǎn)入B的服務(wù)程序TESTAL,20HJNEC_ISP ;外設(shè)C有請(qǐng)求,則轉(zhuǎn)入C的服務(wù)程序……移位法21INAL,20HSHLAL,1JCA_ISP ;外設(shè)A有請(qǐng)求,則轉(zhuǎn)至A的服務(wù)程序SHLAL,1JCB_ISP ;外設(shè)B有請(qǐng)求,則轉(zhuǎn)至B的服務(wù)程序SHLAL,1JCC_ISP ;外設(shè)C有請(qǐng)求,則轉(zhuǎn)至C的服務(wù)程序……軟件查詢法的優(yōu)缺點(diǎn):優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,節(jié)省硬件。缺點(diǎn):中斷源較多時(shí),查詢程序較長(zhǎng),由查詢轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序入口需要的時(shí)間較長(zhǎng)。查詢的先后順序決定了中斷的優(yōu)先級(jí)順序:先被查詢的中斷,優(yōu)先級(jí)最高。22硬件菊花鏈法在每個(gè)外設(shè)的接口上接一個(gè)邏輯電路,這些電路構(gòu)成一個(gè)鏈來實(shí)現(xiàn)中斷應(yīng)答信號(hào)的控制,稱為菊花鏈。23(a)菊花鏈
(b)菊花鏈邏輯電路
菊花鏈工作原理中斷請(qǐng)求:設(shè)備A、B、C通過接口發(fā)出中斷請(qǐng)求:1有請(qǐng)求,0無請(qǐng)求。只要有一個(gè)設(shè)備發(fā)出請(qǐng)求,則INTR=1。中斷響應(yīng):若CPU允許中斷,則發(fā)INTA中斷響應(yīng)信號(hào)。該信號(hào)先送給外設(shè)A的菊花鏈電路。若A沒有請(qǐng)求,則它輸出的INTA仍為0,繼續(xù)往下傳。若A有中斷請(qǐng)求,則經(jīng)過或門時(shí),由于其中斷請(qǐng)求為1,故輸出的INTA為1,使得后繼的中斷得不到響應(yīng)。24特點(diǎn):越靠近CPU的外設(shè),優(yōu)先級(jí)越高??删幊炭刂破髋抨?duì)法早期的PC多采用軟件查詢或菊花鏈法。目前的PC一般采用專用的可編程控制器芯片來完成中斷優(yōu)先級(jí)的排隊(duì)管理,如8259A。253.中斷嵌套CPU正在處理某個(gè)中斷的過程中,若出現(xiàn)了更高級(jí)的中斷請(qǐng)求,則CPU停止執(zhí)行級(jí)別低的ISR,而轉(zhuǎn)去處理級(jí)別更高的中斷。等高級(jí)別的中斷處理完后,再返回原來的低級(jí)中斷繼續(xù)執(zhí)行,依次類推,直到返回主程序。這種方式稱為多重中斷或中斷嵌套。2627內(nèi)容概要8259A的應(yīng)用舉例48086/8088微機(jī)中斷系統(tǒng)28259A可編程中斷控制器3PC機(jī)中的中斷應(yīng)用5中斷技術(shù)概述1中斷的常用術(shù)語:9個(gè)基本概念中斷過程:申請(qǐng)、判優(yōu)、響應(yīng)、服務(wù)中斷管理:判優(yōu)、優(yōu)先級(jí)、嵌套8086/8088用8位二進(jìn)制數(shù)表示一個(gè)中斷類型號(hào),可區(qū)分256個(gè)中斷源。8086/8088中斷系統(tǒng)的結(jié)構(gòu)28
(1)中斷的類型外部中斷
由CPU外的硬件產(chǎn)生,又稱硬件中斷。有以下2種:
①NMI(不可屏蔽中斷)觸發(fā),不受IF標(biāo)志位控制。只要有NMI,CPU在當(dāng)前指令結(jié)束后,立刻響應(yīng)該中斷。中斷類型號(hào)為2,CPU無需發(fā)中斷應(yīng)答即可立即執(zhí)行2號(hào)中斷的ISR。外部中斷中,NMI的優(yōu)先級(jí)最高,用于電源掉電、時(shí)鐘錯(cuò)誤等緊急情況,一般用戶不能使用。29②INTR(可屏蔽中斷)高電平觸發(fā),必須保持到當(dāng)前指令結(jié)束。受IF標(biāo)志位控制。STI:允許中斷;CLI:禁止中斷。中斷類型號(hào)為08~0FH和070H~077H。當(dāng)中斷允許時(shí),CPU發(fā)出中斷應(yīng)答信號(hào)INTA,并從8259A獲得中斷源的中斷類型碼。中斷響應(yīng)的條件:有中斷請(qǐng)求系統(tǒng)處于開中斷狀態(tài)(IF=1)30內(nèi)部中斷
由CPU執(zhí)行指令產(chǎn)生的中斷,又稱軟件中斷。
①除法錯(cuò)當(dāng)除數(shù)為0,或?qū)Х?hào)數(shù)進(jìn)行除法運(yùn)算時(shí)所得結(jié)果超出規(guī)定的范圍,則CPU自動(dòng)產(chǎn)生該中斷。中斷類型號(hào)為0。31②單步中斷調(diào)試程序時(shí)用。CPU每執(zhí)行一條指令,就進(jìn)入一次中斷。功能:顯示出CPU內(nèi)部各寄存器的內(nèi)容。受TF標(biāo)志位控制。TF=1時(shí),CPU自動(dòng)產(chǎn)生單步中斷。中斷類型號(hào)為1。32③斷點(diǎn)中斷INT單字節(jié)中斷指令,類型號(hào)為3。調(diào)試時(shí)可在程序關(guān)鍵處設(shè)置斷點(diǎn)。當(dāng)程序執(zhí)行到該指令處,轉(zhuǎn)去執(zhí)行一個(gè)斷點(diǎn)中斷。功能:顯示CPU內(nèi)部各寄存器的內(nèi)容,并給出一些提示信息。33④溢出中斷INTO單字節(jié)中斷指令。類型號(hào)為4。該指令常跟在帶符號(hào)數(shù)加、減法運(yùn)算指令之后。若標(biāo)志寄存器的OF=1,則執(zhí)行溢出中斷,其中斷服務(wù)程序給出出錯(cuò)信息。⑤用戶定義的軟件中斷雙字節(jié)中斷指令I(lǐng)NTn,由用戶定義,類型號(hào)為n。不可被屏蔽。CPU不發(fā)響應(yīng)信號(hào),中斷控制器不提供中斷類型號(hào)。34內(nèi)、外中斷的優(yōu)先級(jí)次序8086/8088系統(tǒng)中,除單步中斷外,所有內(nèi)部中斷的優(yōu)先級(jí)均高于外部中斷。除單步中斷外,所有內(nèi)部中斷都不能被屏蔽。
35中斷名中斷類型號(hào)優(yōu)先級(jí)除法出錯(cuò)類型0高↑低INTn類型nINTO類型4NMI類型2INTR外設(shè)送入單步類型18086/8088系統(tǒng)支持256個(gè)中斷源,各個(gè)中斷源用不同的中斷類型號(hào)標(biāo)識(shí),即:0~255。每個(gè)中斷源都有相應(yīng)的ISR,每個(gè)ISR都有不同的入口地址(又稱中斷向量)。每個(gè)入口地址由4個(gè)字節(jié)標(biāo)識(shí):低2個(gè)字節(jié):存放中斷入口的偏移地址(IP)。高2個(gè)字節(jié):存放中斷入口的段基址(CS)。系統(tǒng)各個(gè)中斷入口地址的集合形成中斷向量表。共占1KB空間,地址范圍0000H~03FFH(DS=0)。36
(2)中斷向量表37由于0~255號(hào)中斷的入口地址依次連續(xù)排列,故:已知某中斷的類型號(hào)為n,則其對(duì)應(yīng)的ISR入口地址在中斷向量表中的存儲(chǔ)位置為4n。依次從4n處取出4個(gè)字節(jié)的內(nèi)容,低2個(gè)字節(jié)送入偏移地址IP,高2個(gè)字節(jié)送入段地址CS,即:(IP)←(4n+1,4n)。(CS)←(4n+3,4n+2)。獲得了中斷的入口地址,即可轉(zhuǎn)入相應(yīng)的ISR執(zhí)行中斷處理過程。38【例5-1】已知類型號(hào)為15H的中斷,其ISR存放在內(nèi)存的5678H:0100H~5678H:0123H單元。畫出該中斷的中斷向量在中斷向量表中的位置和內(nèi)容。解:ISR的入口地址為5678H:0100H,其中IP=0100H,CS=為5678H。已知中斷類型號(hào)n=15H,n×4=15H×4=0054H,故0054H和0055H單元存放偏移地址0100H。0056H和0057H單元存放段地址5678H。由此可畫出中斷向量在中斷向量表中的位置和內(nèi)容。3940中斷向量表建立中斷類型號(hào)與中斷向量間的關(guān)系。中斷類型號(hào)固定不變,但其對(duì)應(yīng)的中斷向量(即存儲(chǔ)的內(nèi)容)可以修改和變化。(系統(tǒng)中的專用中斷不允許修改)設(shè)置或修改中斷向量前,要關(guān)閉中斷,避免在設(shè)置或修改過程中被中斷。設(shè)置中斷向量的2種方法:直接寫入法利用DOS功能調(diào)用41
(3)中斷向量的設(shè)置與修改①直接寫入法
直接使用MOV指令把中斷向量寫入向量表對(duì)應(yīng)的單元。方法:設(shè)中斷類型號(hào)為n,對(duì)應(yīng)的中斷服務(wù)程序名為P1,則將P1程序的偏移地址放到內(nèi)存0000數(shù)據(jù)段的[4n+1]、[4n]單元中;將其段地址放到[4n+3]、[4n+2]單元中。4243CLI ;關(guān)中斷MOV AX,0MOV DS,AX ;中斷向量表段基址為0MOV BX,n*4 ;中斷類型號(hào)為nMOV AX,OFFSETP1 MOV DS:[BX],AX ;偏移地址放入4n,4n+1單元MOV AX,SEGP1 MOV DS:[BX+2],AX ;段地址寫入4n+2,4n+3單元STI ;開中斷【例5-2】某外設(shè)的中斷服務(wù)程序名為P1,中斷類型號(hào)為5。請(qǐng)使用直接寫入法設(shè)置其中斷向量。44CLI ;關(guān)中斷MOV AX,0MOV DS,AX ;中斷向量表段基址為0MOV AX,OFFSETP1MOV DS:[0014H],AX ;
4*5=0014HMOV AX,SEGP1 MOV DS:[0016H],AX ;段地址寫入0016H,0017HSTI ;開中斷②DOS功能調(diào)用寫入法
使用INT21H中斷的25H號(hào)功能調(diào)用,設(shè)置中斷向量。
功能號(hào):AH=25H
入口參數(shù):DS=中斷服務(wù)程序入口地址的段基址DX=中斷服務(wù)程序入口地址的偏移量AL=中斷類型號(hào)45【例5-3】某外設(shè)的中斷服務(wù)程序名為P1,中斷類型號(hào)為5。請(qǐng)使用DOS功能調(diào)用法設(shè)置其中斷向量。46PUSHDS ;原DS入棧MOV AX,SEGP1;段基址存入DS中MOV DS,AX MOV AX,OFFSETP1 MOV DX,AX ;偏移地址存入DX中MOVAL,5
;中斷類型號(hào)在AL中MOVAH,25H;DOS調(diào)用功能號(hào)INT21HPOPDS
;DS出棧中斷向量的修改
中斷類型號(hào)不變,但是其指向的中斷服務(wù)程序(入口地址)改變,即中斷向量改變。
修改中斷向量的步驟:利用35H號(hào)功能,獲取原中斷向量,并保存。利用25H號(hào)功能,設(shè)置新的中斷向量。新的中斷服務(wù)程序服務(wù)完畢,利用25H號(hào)功能恢復(fù)原中斷向量。4735H號(hào)功能——讀取中斷向量
入口參數(shù):AH=35H,AL=中斷號(hào)
出口參數(shù):ES=中斷服務(wù)程序入口地址的段基址
BX=中斷服務(wù)程序入口地址的偏移地址25H號(hào)功能——設(shè)置新的中斷向量
入口參數(shù):AH=25H,AL=中斷號(hào)
DS=中斷服務(wù)程序入口地址的段基址
DX=中斷服務(wù)程序入口地址的偏移地址
出口參數(shù):無48【例5-4】修改類型號(hào)為n的中斷向量,使得新中斷服務(wù)程序入口地址的段基址為SEG_INTR,偏移地址為OFFSET_INTR。對(duì)應(yīng)的程序段為:49MOV AH,35H;獲取原中斷向量MOV AL,n INT21H
;保存在ES:BX中MOV OLD_OFF,BX
;保存原中斷向量的偏移量
MOV BX,ESMOVOLD_SEG,BX;保存原中斷向量的段基址
50MOV AH,25H;設(shè)置新的中斷向量MOV AL,nMOVDX,SEG_INTR
MOVDS,DX
;DS=段基址MOVDX,OFFSET_INTR
;DX=偏移地址INT21H……MOV AH,25H;恢復(fù)原中斷向量MOV AL,nMOVDX,OLD_SEG
MOVDS,DX
;DS=段基址MOVDX,OLD_OFF
;DX=偏移地址INT21H51內(nèi)容概要8259A的應(yīng)用舉例48086/8088微機(jī)中斷系統(tǒng)28259A可編程中斷控制器3PC機(jī)中的中斷應(yīng)用5中斷技術(shù)概述1中斷的類型:外部中斷與內(nèi)部中斷中斷向量表:中斷入口地址的排列中斷向量表的設(shè)置與修改Intel8259A是一種可編程中斷控制器,可協(xié)助CPU進(jìn)行中斷管理。其功能:接受和擴(kuò)充外設(shè)的中斷請(qǐng)求中斷優(yōu)先級(jí)排隊(duì)提供中斷類型號(hào)屏蔽或打開中斷接受CPU命令或返回當(dāng)前工作狀態(tài)一片8259A可直接管理8級(jí)中斷,通過級(jí)聯(lián)可擴(kuò)展至64級(jí)中斷。通過對(duì)8259A進(jìn)行編程,可設(shè)置多種工作方式,以滿足不同中斷系統(tǒng)的需要。52
5.38259A可編程中斷控制器53
(1)8259A的內(nèi)部結(jié)構(gòu)1.數(shù)據(jù)總線緩沖器8位的雙向三態(tài)緩沖器,連接8259A與系統(tǒng)數(shù)據(jù)總線。用于在CPU與8259A間傳送數(shù)據(jù)、命令和狀態(tài)信息。2.讀/寫控制邏輯接收CPU命令,完成對(duì)8259A內(nèi)部端口的讀寫操作。具體操作內(nèi)容由CS、RD、WR和A0
信號(hào)來決定。543.級(jí)聯(lián)緩沖/比較器CAS0~CAS2用于多塊8259A的級(jí)聯(lián)。4.中斷請(qǐng)求寄存器(IRR)8位寄存器,通過引腳IR0
~IR7與8個(gè)中斷源相連。若IRi=1,表明對(duì)應(yīng)的中斷源有中斷請(qǐng)求,則IRR寄存器相應(yīng)的第i位置1。5.中斷屏蔽寄存器(IMR)8位寄存器,第i位為1,表示屏蔽IRi的請(qǐng)求。其值可通過軟件設(shè)置或改變。556.中斷優(yōu)先權(quán)判別電路PR對(duì)已進(jìn)入IRR且未被IMR屏蔽的中斷請(qǐng)求進(jìn)行優(yōu)先權(quán)判別,確定優(yōu)先級(jí)最高的中斷,向CPU發(fā)送中斷請(qǐng)求信號(hào)INT。若8259A正在為某一中斷服務(wù)時(shí),又出現(xiàn)了新的中斷請(qǐng)求,則PR判斷新的中斷請(qǐng)求優(yōu)先級(jí)是否更高。若是,則進(jìn)入中斷嵌套。567.中斷服務(wù)寄存器(ISR)8位,用來記錄CPU當(dāng)前正在為哪些中斷源服務(wù)。當(dāng)CPU響應(yīng)IRi請(qǐng)求時(shí),ISR中相應(yīng)的位置1。當(dāng)ISR中有多個(gè)1時(shí),表明CPU處于中斷嵌套
中。當(dāng)某個(gè)中斷處理完畢,ISR相應(yīng)的位復(fù)位。578.控制邏輯作用:根據(jù)IRR、IMR和PR的狀態(tài),通過INT信號(hào)向CPU發(fā)送中斷請(qǐng)求。接受CPU的中斷響應(yīng)信號(hào)INTA,置ISR相應(yīng)的位,且使IRR相應(yīng)的位清0,避免該中斷源的一次請(qǐng)求產(chǎn)生多次中斷。內(nèi)部包含7個(gè)寄存器:ICW1~ICW4
存放初始化命令字,用來設(shè)置8259A的工作方式和工作條件等。OCW1~OCW3存放操作命令字,用來對(duì)中斷處理過程進(jìn)行動(dòng)態(tài)控制。58幾個(gè)縮寫字母的含義IRR:中斷請(qǐng)求寄存器(InterruptRequestRegister)IMR:中斷屏蔽寄存器(InterruptMaskRegister)ISR:中斷服務(wù)寄存器(InServiceRegister)PR:優(yōu)先級(jí)裁決器(PriorityResolver)ICW:初始化命令字(InitializationCommandWord)OCW:操作命令字(OperationCommandWord)5960
(2)8259A外部引腳61D7~D0:雙向三態(tài)數(shù)據(jù)線,與系統(tǒng)數(shù)據(jù)總線相連,在8259A與CPU間傳送數(shù)據(jù)、命令和狀態(tài)信息。A0:選擇8259A內(nèi)寄存器的端口地址。2種端口地址:A0=0的端口為偶端口,A0=1的端口為奇端口。WR、RD、CS:寫、讀、片選信號(hào)。IR7~IR0:中斷請(qǐng)求信號(hào),高電平或上升沿有效。INT:中斷請(qǐng)求信號(hào),高有效。向CPU發(fā)中斷請(qǐng)求。INTA:中斷響應(yīng)信號(hào),為2個(gè)負(fù)脈沖。CAS2~CAS0:級(jí)聯(lián)信號(hào)線,雙向。主片8259A的CAS2~CAS0為輸出。從片8259A的CAS2~CAS0為輸入。SP/EN:主從片設(shè)定/允許緩沖信號(hào),雙向雙功能。緩沖方式下,為輸出信號(hào),EN信號(hào)控制緩沖器。非緩沖方式下,作為輸入信號(hào),表示8259A是主片(SP=1)還是從片(SP=0)。621.8259A的工作過程單片8259A工作時(shí),每次中斷處理過程如下:當(dāng)IR7~IR0上有中斷請(qǐng)求,則IRR相應(yīng)的位置1。對(duì)于已進(jìn)入IRR且未被IMR屏蔽的中斷請(qǐng)求,PR電路進(jìn)行優(yōu)先級(jí)判定,得到最高級(jí)的中斷請(qǐng)求。控制邏輯接收中斷請(qǐng)求,向CPU發(fā)INT信號(hào)。若CPU允許中斷,則在當(dāng)前指令結(jié)束后連續(xù)發(fā)出2個(gè)中斷應(yīng)答信號(hào)INTA,進(jìn)行中斷響應(yīng)。每個(gè)信號(hào)持續(xù)2個(gè)時(shí)鐘周期。63
(3)8259A工作方式CPU發(fā)第一個(gè)INTA時(shí),輸出總線鎖定信號(hào)LOCK,防止其它處理器或DMA控制器占用總線。8259A收到第一個(gè)負(fù)脈沖后,將優(yōu)先級(jí)最高的中斷ISR相應(yīng)位置1,同時(shí)使IRR相應(yīng)位清0。64CPU發(fā)第二個(gè)INTA時(shí),撤銷總線鎖存信號(hào)LOCK,地址允許信號(hào)ALE無效,允許數(shù)據(jù)線工作。8259A收到第二個(gè)負(fù)脈沖后,將相應(yīng)中斷的類型號(hào)送到數(shù)據(jù)線上。CPU讀取中斷類型號(hào),查找中斷向量表得到中斷向量,轉(zhuǎn)而進(jìn)入中斷服務(wù)程序。若系統(tǒng)為自動(dòng)結(jié)束中斷方式(AEOI),則8259A會(huì)在第2個(gè)脈沖結(jié)束時(shí),自動(dòng)將ISR的相應(yīng)位復(fù)位;
若為非自動(dòng)結(jié)束中斷方式(EOI),則ISR相應(yīng)位的“1”一直保持,直到CPU發(fā)EOI(中斷結(jié)束)命令時(shí)才將其復(fù)位。652.8259A的級(jí)聯(lián)方式單片8259A最多可管理8級(jí)中斷。當(dāng)中斷源多于8個(gè)時(shí),需將多個(gè)8259A芯片級(jí)聯(lián)構(gòu)成主從模式。系統(tǒng)最多支持8個(gè)8259A芯片級(jí)聯(lián),即:最多可支持64個(gè)中斷源。每個(gè)從片的IR7~IR0可直接與8個(gè)中斷源相連,經(jīng)過優(yōu)先級(jí)判優(yōu)后主片發(fā)送INT信號(hào)。主片對(duì)所有從片發(fā)來的INT進(jìn)行判優(yōu)后,最終向CPU發(fā)INT信號(hào)。6667SP/EN引腳用于區(qū)分8259A是主片還是從片。高電平為主片,低電平為從片。主/從片通過CAS2~CAS0互連。主片的CAS2~CAS0為輸出,從片的CAS2~CAS0為輸入。CPU發(fā)出第一個(gè)INTA時(shí),主片使ISR相應(yīng)的位置1,使IRR的相應(yīng)位清0;并通過CAS2~CAS0輸出一組從片的編碼
ID2~ID0。從片收到該編碼后,與自身ICW3中的D2~D0編碼進(jìn)行比較。若相同,則在第二個(gè)INTA信號(hào)將從片的中斷類型號(hào)送到數(shù)據(jù)總線。683.中斷觸發(fā)方式電平觸發(fā):IRi端出現(xiàn)高電平時(shí),有中斷請(qǐng)求。
邊沿觸發(fā):IRi端出現(xiàn)上升沿時(shí),有中斷請(qǐng)求。
69注意:當(dāng)該中斷請(qǐng)求得到響應(yīng)后(ISR相應(yīng)位置1),必須及時(shí)撤銷其高電平,否則可能會(huì)再次觸發(fā)中斷。優(yōu)點(diǎn):IRi端可一直保持高電平,而不會(huì)被誤判為又一次中斷請(qǐng)求。4.中斷屏蔽方式普通屏蔽方式中斷屏蔽寄存器IMR的某位為1,則禁止相應(yīng)的中斷請(qǐng)求;為0,則允許。這種方式下,由于優(yōu)先權(quán)判別器PR的作用(查ISR的狀態(tài)),只有級(jí)別高的中斷源才允許中斷。若CPU不希望某些中斷源申請(qǐng)中斷,或在處理某中斷時(shí)不希望比該中斷級(jí)別低的中斷源申請(qǐng)中斷,可采用該方法。70特殊屏蔽方式在處理某中斷時(shí),若想開放級(jí)別較低的中斷請(qǐng)求,則:(1)將IMR中本級(jí)中斷的相應(yīng)位置1,屏蔽本級(jí)中斷,為開放級(jí)別較低的中斷提供可能。(2)將本級(jí)中斷ISR的相應(yīng)位復(fù)位,才能真正開放級(jí)別較低的中斷。71與普通屏蔽的區(qū)別:特殊屏蔽方式除了在IMR中屏蔽本級(jí)中斷源外,還需使當(dāng)前ISR的相應(yīng)位復(fù)位。5.中斷優(yōu)先權(quán)管理方式①固定優(yōu)先級(jí)--IR0優(yōu)先級(jí)最高,IR7最低。②循環(huán)優(yōu)先級(jí)--某中斷被服務(wù)后,其優(yōu)先權(quán)自動(dòng)降為最低,而相鄰中斷源的優(yōu)先級(jí)升為最高。優(yōu)先權(quán)自動(dòng)循環(huán)方式初始時(shí),IR0優(yōu)先級(jí)最高,IR7優(yōu)先級(jí)最低。優(yōu)先權(quán)特殊循環(huán)方式用戶編程來指定初始時(shí)哪個(gè)中斷源的優(yōu)先級(jí)最低。例:初始時(shí)規(guī)定IR5最低,則優(yōu)先級(jí)順序?yàn)椋篒R6
>IR7>IR0>
…>IR4>IR5。726.中斷嵌套方式普通全嵌套方式簡(jiǎn)稱全嵌套方式,是最基本、最常用的方式。某中斷被響應(yīng)時(shí),只有更高級(jí)的中斷請(qǐng)求才會(huì)響應(yīng)。特殊全嵌套方式用于級(jí)聯(lián)場(chǎng)合??身憫?yīng)高級(jí)別和同級(jí)別中斷。級(jí)聯(lián)時(shí)從片的INT端連接主片IRi端。從片上不同級(jí)別的中斷請(qǐng)求,主片視之為同一級(jí)別。普通全嵌套無法響應(yīng)第二次高級(jí)別中斷。而特殊全嵌套方式可正常響應(yīng)。73單片8259A時(shí),通常采用普通全嵌套方式。多片級(jí)聯(lián)時(shí),從片采用普通全嵌套方式,而主片必須采用特殊全嵌套。7.中斷結(jié)束方式當(dāng)某個(gè)中斷請(qǐng)求得到響應(yīng)時(shí),其ISR的相應(yīng)位置1。當(dāng)其中斷服務(wù)結(jié)束時(shí),其ISR中的相應(yīng)位必須清0。中斷結(jié)束方式是指使ISR相應(yīng)位復(fù)位的方式。8259A有2種中斷結(jié)束方式自動(dòng)結(jié)束方式(AEOI)非自動(dòng)結(jié)束方式(EOI)74自動(dòng)結(jié)束方式(AEOI)ISR相應(yīng)位的復(fù)位由8259A硬件自動(dòng)完成。當(dāng)CPU響應(yīng)某中斷時(shí),第二個(gè)INTA信號(hào)的下降沿
自動(dòng)將ISR相應(yīng)位的復(fù)位。該方式只適用于單片8259A、無中斷嵌套的場(chǎng)合。75非自動(dòng)結(jié)束方式(EOI)該方式下,由CPU發(fā)EOI命令來使ISR的相應(yīng)位復(fù)位。普通中斷結(jié)束方式CPU向8259A發(fā)送EOI命令,使當(dāng)前ISR中級(jí)別最高的位復(fù)位。特殊中斷結(jié)束方式CPU向8259A發(fā)送EOI命令,該命令字指定了要結(jié)束哪一級(jí)中斷源,從而使ISR相應(yīng)的位復(fù)位。768.連接系統(tǒng)總線的方式緩沖方式多片8259A級(jí)聯(lián)時(shí),8259A通過總線驅(qū)動(dòng)器與數(shù)據(jù)總線相連。此時(shí)8259A的SP/EN
端輸出一個(gè)低電平(EN=0)作為總線驅(qū)動(dòng)器的啟動(dòng)信號(hào)。即:SP/EN信號(hào)與總線驅(qū)動(dòng)器的允許端相連。7778輸出信號(hào)緩沖器非緩沖方式當(dāng)系統(tǒng)中只有單片或少數(shù)幾片8259A時(shí),8259A可直接與數(shù)據(jù)總線相連。此時(shí),8259A的SP/EN端作為輸入信號(hào)。單片8259A時(shí),SP=1。多片8259A級(jí)聯(lián)時(shí),主片的SP=1,從片的SP=0。798081
(4)8259A編程CPU向8259A發(fā)送的命令字分為以下2種:初始化命令字ICW包含ICW1~ICW4四個(gè)命令字,在系統(tǒng)啟動(dòng)時(shí)由初始化程序設(shè)置。一旦設(shè)定后,在系統(tǒng)工作過程中一般不再改變。操作命令字OCW包含OCW1~OCW3,由應(yīng)用程序設(shè)定,用來對(duì)中斷處理過程進(jìn)行動(dòng)態(tài)控制,如:中斷屏蔽、中斷結(jié)束、優(yōu)先權(quán)設(shè)定等。可多次設(shè)置。828259A只有一根輸入地址線A0,如何區(qū)分7個(gè)寄存器?ICW1:
20H A0=0,D4=1ICW2:21H A0=1ICW3:21H A0=1,ICW1中的SNGL(D1)=0ICW4:21H A0=1,ICW1中的IC4(D0)=1OCW1:21H A0=1OCW2:20H A0=0,D3D4=00OCW3:20H A0=0,D3D4=1083采用讀寫分時(shí)法、順序法及特征位法解決端口沖突。1.ICW1:設(shè)置觸發(fā)方式、是否級(jí)聯(lián)和需ICW4等。84(一)初始化命令字ICW未用表ICW1要寫入偶端口特征位×××1LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0IRi中斷觸發(fā)方式1:電平觸發(fā)0:邊沿觸發(fā)8086/8088中不用是否級(jí)聯(lián)1:?jiǎn)纹?:級(jí)聯(lián)1:需要ICW40:不需要85D0(ICW4)的設(shè)置:8086/8088系統(tǒng)必須設(shè)置D0=1,即:需要ICW4。寫入ICW1后,8259A內(nèi)部有一個(gè)初始化過程,相當(dāng)于Reset功能,其作用:指示8259A順序邏輯復(fù)位,即:它準(zhǔn)備按ICW2、ICW3、ICW4的順序接受其余初始化命令字。清除IMR、ISR。指定優(yōu)先級(jí)方式為普通全嵌套方式、普通屏蔽方式、非自動(dòng)中斷結(jié)束方式。86【例5-5】若8259A采用電平觸發(fā),單片使用,需要ICW4,請(qǐng)寫出ICW1的初始化程序段?!痢痢?LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0MOV AL,1BH ;ICW1=00011011OUT 20H,AL ;偶端口2.ICW2:設(shè)置類型碼。87高5位由用戶編程設(shè)定表ICW2要寫入奇端口T7T6T5T4T3D7D6D5D4D3D2D1D01A0低3位由IR7~IR0自動(dòng)生成中斷類型號(hào)=ICW2高5位+低3位(IRi的編碼)。ICW2緊隨ICW1之后。CPU響應(yīng)中斷發(fā)第2個(gè)INTA時(shí),8259A將ICW2的內(nèi)容(中斷類型號(hào))送到數(shù)據(jù)總線。88【例5-6】PC機(jī)中斷系統(tǒng)的中斷類型號(hào)范圍為08~0FH,某中斷請(qǐng)求線連接到8259A的IR5上,請(qǐng)寫出設(shè)置ICW2
的程序段。MOV AL,08H ;高5位OUT 21H,AL ;奇端口
CPU響應(yīng)硬盤中斷后,8259A把IR5的編碼101作為低3位,與ICW2中設(shè)置的高5位合一起,構(gòu)成完整的8位中斷類型號(hào)0DH,經(jīng)數(shù)據(jù)總線提供給CPU。T7T6T5T4T3D7D6D5D4D3D2D1D01A03.ICW3:設(shè)置級(jí)聯(lián)方式。僅當(dāng)級(jí)聯(lián)模式下(即ICW1
的SNGL=0時(shí))才需設(shè)置ICW3。這時(shí)需分別對(duì)主片和從片進(jìn)行設(shè)置。主片ICW3:說明主片IR7~IR0的哪些引腳上連有從片。89S7S6S5S4S3S2S1S0D7D6D5D4D3D2D1D01A01:IRi
上接有從片0:IRi
上未接從片表ICW3要寫入奇端口從片ICW3:ID2~ID0的編碼值說明該從片的INT信號(hào)連接至主片IR7~IR0的哪個(gè)引腳。90×××××ID2ID1ID0D7D6D5D4D3D2D1D01A0任意表ICW3要寫入奇端口000:連至主片的IR0……111:連至主片的IR7例:從片的INT連接至主片的IR5,則ID2~ID0
=101。4.ICW4:設(shè)置緩沖方式、中斷結(jié)束方式等。當(dāng)ICW1
的D0=1時(shí),需設(shè)置ICW4。91000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0表ICW4要寫入奇端口1:緩沖方式0:非緩沖方式1:特殊全嵌套0:普通全嵌套1:主片0:從片1:AEOI0:EOI1:8086/80880:8080/8085特征位僅當(dāng)buf=1時(shí)M/S位才起作用92【例5-7】PC機(jī)中,單片8259A與系統(tǒng)總線之間采用緩沖器連接,非自動(dòng)結(jié)束方式,正常完全嵌套。請(qǐng)寫出設(shè)置ICW4
的程序段。MOV AL,0DH ;00001101BOUT 21H,AL ;奇端口000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0要使中斷系統(tǒng)正常工作,CPU必須對(duì)系統(tǒng)中的每片8259A進(jìn)行初始化編程,即:順序?qū)CW1~ICW4寫入各個(gè)8259A芯片。單片8259A時(shí),需依次寫入ICW1、ICW2和ICW4。多片8259A時(shí),需依次寫入ICW1、ICW2、ICW3和ICW4。93(二)8259A初始化編程9495【例5-8】IBMPC/XT機(jī)中,僅用單片8259A,中斷請(qǐng)求采用邊沿觸發(fā),中斷類型號(hào)為08H~0FH,普通全嵌套,緩沖方式,非自動(dòng)中斷結(jié)束方式。8259A的端口地址為20H和21H。請(qǐng)按上述要求對(duì)8259A進(jìn)行初始化編程。MOVAL,00010011B;ICW1:邊沿觸發(fā),單片,需ICW4OUT20H,ALMOVAL,00001000B;ICW2:08H~0FH的高5位OUT21H,ALMOVAL,00001101B;ICW4:全嵌套,緩沖,EOI方式OUT21H,AL96【例5-9】IBMPC/AT機(jī)中,使用兩片8259A構(gòu)成主從中斷系統(tǒng)。從片的INT與主片的IRQ2相連。主片的中斷類型號(hào)為08H~0FH,端口地址為20H和21H。從片的中斷類型號(hào)為70H~77H,端口地址為0A0H和0A1H。主片、從片均采用邊沿觸發(fā)、緩沖、非自動(dòng)中斷結(jié)束方式。請(qǐng)按照上述要求對(duì)8259A進(jìn)行初始化編程。97主片編程:MOVAL,00010001B;ICW1:邊沿觸發(fā)、級(jí)聯(lián)、需ICW4OUT20H,ALMOVAL,00001000B;ICW2:08H~0FH的高5位OUT21H,ALMOVAL,00000100B;ICW3:主片IRQ2接有從片OUT21H,ALMOVAL,00011101B;ICW4:特殊全嵌套、緩沖方式、OUT21H,AL ;主片、EOI方式98從片編程:MOVAL,00010001B;ICW1:邊沿觸發(fā)、級(jí)聯(lián)、需ICW4OUT0A0H,ALMOVAL,01110000B;ICW2:70H~77H的高5位OUT0A1H,ALMOVAL,00000010B;ICW3:從片接主片的IRQ2OUT0A1H,ALMOVAL,00001001B;ICW4:普通全嵌套、緩沖方式、OUT0A1H,AL ;從片、EOI方式對(duì)8259A進(jìn)行初始化后(寫入初始化命令字),8259A進(jìn)入工作狀態(tài),可接收IRi的中斷請(qǐng)求,并按系統(tǒng)設(shè)定的方式來響應(yīng)和管理中斷。在8259A工作期間,可通過寫入操作命令字OCW,對(duì)其中斷管理方式進(jìn)行動(dòng)態(tài)設(shè)置和修改。操作命令字有3個(gè):OCW1~OCW3。99(三)操作命令字OCW1.OCW1:設(shè)置中斷屏蔽字直接對(duì)IMR
相應(yīng)的位進(jìn)行設(shè)置。100M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D01A01:屏蔽中斷0:允許中斷OCW1要寫入奇端口101【例5-10】已知8259A的端口地址為20H、21H。若要屏蔽IR5、IR4和IR1引腳上的中斷請(qǐng)求,而不改變其余中斷源原來的屏蔽情況。試給出對(duì)應(yīng)的程序段。INAL,21H ;讀取IMR的當(dāng)前值ORAL,00110010B;IRQ5、IRQ4、IRQ1OUT21H,AL ;寫入OCW12.OCW2:設(shè)置/修改優(yōu)先級(jí)模式、發(fā)送EOI命令等102指出優(yōu)先級(jí)最低的IRi,或要清除的ISR的相應(yīng)位。OCW2要寫入偶端口特征位RSLEOI00L2L1L0D7D6D5D4D3D2D1D00A00:固定優(yōu)先級(jí)1:循環(huán)優(yōu)先級(jí)0:普通1:特殊0:不發(fā)1:發(fā)EOI命令D7(R):0為固定優(yōu)先級(jí);1為循環(huán)優(yōu)先級(jí)。D6(SL):0為“普通”;1為“特殊”。這2位決定優(yōu)先級(jí)方式:
R=0,SL=× :固定優(yōu)先級(jí)(L2~L0無效)
R=1,SL=0 :優(yōu)先級(jí)自動(dòng)循環(huán)(L2~L0無效)
R=1,SL=1 :優(yōu)先級(jí)特殊循環(huán)(L2~L0有效)此時(shí)L2~L0指明循環(huán)開始時(shí)哪個(gè)IRi的優(yōu)先級(jí)最低。
103D5(EOI):1時(shí)發(fā)EOI命令;0時(shí)不發(fā)EOI命令。
在非自動(dòng)中斷結(jié)束方式下,可通過發(fā)EOI命令來使ISR相應(yīng)的位復(fù)位。(非硬件復(fù)位)
EOI位可和SL位配合使用。EOI=0,SL=×:不發(fā)EOI命令。EOI=1,SL=0:普通中斷結(jié)束。此時(shí)EOI命令將ISR中優(yōu)先級(jí)最高的中斷對(duì)應(yīng)的位清0。(L2~L0無效)EOI=1,SL=1:特殊中斷結(jié)束。此時(shí)EOI命令將ISR中L2~L0所指定的中斷對(duì)應(yīng)位清0。(L2~L0有效)104R、SL、EOI三位的組合含義
105RSLEOI功能說明001普通EOI命令,全嵌套方式011特殊EOI命令,全嵌套方式,L2~L0指定的ISR位清0101普通EOI命令,優(yōu)先級(jí)自動(dòng)循環(huán)111特殊EOI命令,優(yōu)先級(jí)特殊循環(huán),L2~L0指定的ISR位清0,且L2~L0指定的IR位為最低優(yōu)先級(jí)100自動(dòng)EOI時(shí),優(yōu)先級(jí)自動(dòng)循環(huán)000自動(dòng)EOI時(shí),取消優(yōu)先級(jí)自動(dòng)循環(huán)110優(yōu)先級(jí)特殊循環(huán),L2~L0指定優(yōu)先級(jí)最低的IR位010無操作106MOVAL,00100000B;OCW2:EOI=1,SL=0OUT20H,AL ;寫入OCW2IRET ;中斷返回,回到主程序【例5-11】已知8259A的端口地址為20H、21H。8259A設(shè)置為非自動(dòng)中斷結(jié)束的普通中斷結(jié)束方式。在中斷子程序中,CPU向8259A發(fā)送一個(gè)中斷結(jié)束命令后返回主程序。試給出對(duì)應(yīng)的程序段。3.OCW3:設(shè)置中斷屏蔽方式;設(shè)置中斷查詢方式;發(fā)送讀內(nèi)部寄存器的命令10710:讀IRR11:讀ISR0×:無效
OCW3要寫入偶端口特征位0ESMMSMM01PIRRISRD7D6D5D4D3D2D1D00A0未用11:設(shè)置特殊屏蔽10:取消特殊屏蔽0×:保持原方式
1:發(fā)查詢命令0:不發(fā)查詢命令ESMM/SMM:設(shè)置/取消特殊屏蔽方式11:設(shè)置特殊屏蔽方式。屏蔽正在服務(wù)的同級(jí)中斷,而允許優(yōu)先級(jí)較低的中斷請(qǐng)求。10:取消特殊屏蔽方式。0×:保持原來的屏蔽方式。SMM無效。108D2(P):查詢命令位。P=1,CPU向8259A發(fā)查詢命令。P=0不發(fā)。當(dāng)CPU處于關(guān)中斷時(shí)(IF=0),INTR引腳發(fā)送的中斷不被處理。此時(shí),CPU可向8259發(fā)查詢命令(偶端口),然后從偶端口讀取查詢字,以獲知當(dāng)前是否有中斷請(qǐng)求及正在申請(qǐng)的中斷源中優(yōu)先級(jí)最高的中斷源編碼。109有中斷請(qǐng)求時(shí),當(dāng)前中斷請(qǐng)求中優(yōu)先級(jí)最高的中斷源編號(hào)偶端口I××××W2W1W0D7D6D5D4D3D2D1D00A01:有中斷請(qǐng)求0:無中斷請(qǐng)求未用110CLI ;關(guān)中斷L1:MOVAL,00001100B;OCW3:D4D3=01,P=1OUT0A0H,AL ;發(fā)查詢命令字
INAL,0A0H;讀查詢字TESTAL,10000000B;判斷是否有中斷請(qǐng)求JNZNEXT ;有中斷請(qǐng)求時(shí)轉(zhuǎn)入NEXTJMPL1NEXT:……【例5-12】已知8259A的端口地址為0A0H~0A1H,處于關(guān)中斷狀態(tài)。將8259A設(shè)置為中斷查詢方式,判斷當(dāng)前是否有中斷請(qǐng)求。若有,則轉(zhuǎn)向NEXT處執(zhí)行;若無,則重復(fù)查詢。試編寫程序段實(shí)現(xiàn)之。111讀IMR:直接讀OCW1(奇端口)INAL,21H
【例5-13】已知8259A的端口地址為20H、21H。試寫程序段,讀取其IMR、IRR、ISR三個(gè)寄存器的值。讀IRR:必須發(fā)讀IRR寄存器的命令才能讀?。∣CW3)MOVAL,00001010B;發(fā)讀IRR的OCW3命令字OUT20H,ALINAL,20H;讀IRR的內(nèi)容
讀ISR:必須發(fā)讀ISR寄存器的命令才能讀取(OCW3)MOVAL,00001011B;發(fā)讀ISR的OCW3命令字OUT20H,ALINAL,20H;讀ISR的內(nèi)容
112內(nèi)容概要8259A的應(yīng)用舉例48086/8088微機(jī)中斷系統(tǒng)28259A可編程中斷控制器3PC機(jī)中的中斷應(yīng)用5中斷技術(shù)概述1內(nèi)部結(jié)構(gòu)、外部引腳工作方式(7個(gè):工作過程、級(jí)聯(lián)方式、觸發(fā)方式、屏蔽方式、優(yōu)先級(jí)方式、中斷結(jié)束方式、系統(tǒng)連線方式)8259A編程:ICW、OCW、初始化編程(1)中斷程序設(shè)計(jì)若要以中斷方式實(shí)現(xiàn)CPU與外設(shè)間的數(shù)據(jù)交換,用戶需完成主程序和中斷服務(wù)子程序的設(shè)計(jì)。主程序:對(duì)中斷系統(tǒng)的軟硬件進(jìn)行初始化。如:設(shè)置中斷向量、設(shè)置8259A的工作方式等。中斷服務(wù)程序:實(shí)現(xiàn)數(shù)據(jù)輸入輸出及相關(guān)控制。113
5.48259A應(yīng)用舉例主程序設(shè)計(jì)CPU初始化:設(shè)置中斷向量表、設(shè)置中斷標(biāo)志(使IF=1開中斷)。8259A初始化:寫ICW1~ICW4初始化命令字,設(shè)置工作方式、優(yōu)先級(jí)、結(jié)束方式等。中斷源接口初始化:如:使中斷源允許中斷等。中斷服務(wù)程序初始化:進(jìn)入ISR前,要設(shè)置ISR使用的緩沖區(qū)指針和狀態(tài)位等。114中斷服務(wù)程序設(shè)計(jì)(ISR)保護(hù)現(xiàn)場(chǎng):把ISR中要使用的寄存器入棧。開中斷:運(yùn)行當(dāng)前ISR程序時(shí),要能響應(yīng)更高級(jí)的中斷。數(shù)據(jù)輸入輸出:與外設(shè)間進(jìn)行數(shù)據(jù)傳輸。數(shù)據(jù)的處理比較費(fèi)時(shí),一般交由主程序完成。關(guān)中斷:ISR結(jié)束時(shí),關(guān)中斷以避免不必要的中斷嵌套?;謴?fù)現(xiàn)場(chǎng):將堆棧中保存的各寄存器值出棧,以便返回主程序后可以正確使用原數(shù)據(jù)。中斷結(jié)束命令:8259A采用非自動(dòng)中斷結(jié)束方式時(shí),發(fā)EOI命令使ISR的相應(yīng)位清0。中斷返回:用IRET指令返回主程序。115116
(2)中斷應(yīng)用實(shí)例【例5-14】已知某輸入設(shè)備接口內(nèi)有一個(gè)8位的數(shù)據(jù)端口(地址200H)和一個(gè)8位的狀態(tài)端口(地址201H)。當(dāng)狀態(tài)端口的最高位為1時(shí),數(shù)據(jù)端口中的數(shù)據(jù)有效,并且此時(shí)在STB引腳上出現(xiàn)一個(gè)脈沖信號(hào)。請(qǐng)?jiān)O(shè)計(jì)一個(gè)微機(jī)系統(tǒng),讀取該接口內(nèi)的有效數(shù)據(jù),并將之存入內(nèi)存的BUFFER單元中。117方法一:查詢法硬件電路設(shè)計(jì)軟件流程圖設(shè)計(jì)118MOVDX,201H ;讀取狀態(tài)端口L1:INAL,DXTESTAL,10000000B;測(cè)試其最高位JZL1 ;無有效數(shù)據(jù)MOVDX,200H ;有有效數(shù)據(jù),讀數(shù)據(jù)端口INAL,DXMOVBUFFER,AL ;保存數(shù)據(jù)到BUFFER
119方法二:中斷法當(dāng)接口中的數(shù)據(jù)有效時(shí),會(huì)產(chǎn)生STB脈沖信號(hào),該信號(hào)可作為中斷請(qǐng)求信號(hào),通過8259A向CPU發(fā)送中斷請(qǐng)求。一旦有數(shù)據(jù)到來,觸發(fā)中斷,進(jìn)入中斷服務(wù)程序ISR。CPU在ISR中讀取數(shù)據(jù)端口的內(nèi)容。當(dāng)沒有數(shù)據(jù)到來時(shí)(STB信號(hào)不觸發(fā)中斷),CPU可運(yùn)行其它程序。120假設(shè)條件:STB信號(hào)連接到8259A的IR3端。8259A的端口地址為20H~21H,其IR0~IR7中斷類型號(hào)為08H~0FH。中斷服務(wù)子程序名為P1。未發(fā)生中斷時(shí),CPU執(zhí)行其它程序。其它程序假設(shè)用CX+1的來模擬。121硬件電路設(shè)計(jì)122軟件程序設(shè)計(jì)關(guān)中斷開中斷123DATASEGMENT;定義數(shù)據(jù)段就是數(shù)據(jù)存放的地方 BUFFERDB?DATAENDSCODESEGMENT;定義代碼段當(dāng)然就是要執(zhí)行的程序代碼了 ASSUMECS:CODE,DS:DATA;assumeds:data這是指明了ds(數(shù)據(jù)段寄存器)和data段的對(duì)應(yīng)關(guān)系START:
MOV AX,DATA ;數(shù)據(jù)段段地址MOV DS,AX
PUSHDSCLI ;關(guān)中斷MOVAL,00010011B;ICW1:邊沿觸發(fā),單片,要ICW4OUT20H,ALMOVAL,08H ;ICW2:中斷類型號(hào)前5位OUT21H,AL主程序設(shè)計(jì)124MOVAL,00000001B ;ICW4:普通全嵌套,非緩沖OUT21H,AL ;非自動(dòng)中斷結(jié)束
MOVAX,0 ;設(shè)置中斷向量表段基址為0MOVDS,AXMOVAX,OFFSETP1 MOV[002CH],AX ;IR3中斷類型號(hào)為0BH,2CH?MOVAX,SEGP1 MOV[002EH],AX POPDSSTI ;開中斷L1:INCCXJMPL1125P1PROC ;中斷服務(wù)子程序PUSHCX ;保護(hù)現(xiàn)場(chǎng)STI ;開中斷MOVDX,200H ;讀數(shù)據(jù)端口IN AL,DXMOVBUFFER,AL ;保存數(shù)據(jù)CLI ;關(guān)中斷
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 外貿(mào)英語函電接受課件
- 探索工業(yè)機(jī)械行業(yè)
- 山西職業(yè)技術(shù)學(xué)院《互聯(lián)網(wǎng)中醫(yī)藥CDO實(shí)踐(二)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西南民族大學(xué)《動(dòng)物學(xué)(非生物類)》2023-2024學(xué)年第二學(xué)期期末試卷
- 蒲江縣2025屆四年級(jí)數(shù)學(xué)第二學(xué)期期末達(dá)標(biāo)測(cè)試試題含解析
- 錫林郭勒職業(yè)學(xué)院《景觀效果圖表現(xiàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 南通師范高等專科學(xué)?!痘瘜W(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東司法警官職業(yè)學(xué)院《水文學(xué)與水文地質(zhì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安文理學(xué)院《大型活動(dòng)組織與管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年職業(yè)安全與健康專業(yè)考試試卷及答案
- 天一大聯(lián)考2024-2025學(xué)年(下)高三第二次四省聯(lián)考★物理+答案
- 2025天津東疆綜合保稅區(qū)管理委員會(huì)招聘10人筆試參考題庫附帶答案詳解
- 法院書記員招聘2023年筆試考試必做題有答案
- 2024年北京大興國(guó)際機(jī)場(chǎng)臨空經(jīng)濟(jì)區(qū)幼兒園招聘教師考試真題
- 《刑法學(xué)課件 》課件各章節(jié)內(nèi)容-第十章 共同犯罪
- 雅禮新苗杯試題及答案
- 2025神農(nóng)科技集團(tuán)有限公司第一批校園招聘17人(山西)筆試參考題庫附帶答案詳解
- 醫(yī)院地震安全培訓(xùn)
- 2025-2030中國(guó)低壓電器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2025上海海事大學(xué)輔導(dǎo)員考試題庫
- 食堂7s管理標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論