版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
浙江工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1內(nèi)容回顧DMA傳輸基本概念DMA的傳送過程、傳送方式和操作類型。DMA控制器8237A8237A的內(nèi)部結(jié)構(gòu)和外部引腳。8237A的內(nèi)部寄存器(10種)及其地址分配。8237A的編程步驟和工作時序。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ù)于某個外設(shè),效率高。當(dāng)出現(xiàn)某些異?;蚰惩庠O(shè)有請求時,CPU暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行某一特定的程序,執(zhí)行完后再返回原來的程序處繼續(xù)執(zhí)行。
5.1中斷技術(shù)概述4中斷指CPU正在執(zhí)行某程序的過程中,由于出現(xiàn)了某些異?;蛲庠O(shè)提出了某種請求,CPU暫停當(dāng)前程序,轉(zhuǎn)去處理異常或外設(shè)請求的程序,執(zhí)行完后再返回原來被終止的程序處繼續(xù)執(zhí)行。該過程稱為中斷。主程序未發(fā)生中斷時,CPU正在執(zhí)行的程序稱為主程序。5
(1)中斷的常用術(shù)語中斷服務(wù)程序ISR處理中斷事件的程序,又稱中斷子程序。不同的中斷對應(yīng)不同的ISR。斷點(diǎn)中斷時,主程序中被終止指令的下一條指令的地址。CPU轉(zhuǎn)去執(zhí)行ISR時,斷點(diǎn)被壓入棧中進(jìn)行保護(hù);ISR執(zhí)行完畢后,CPU通過出棧操作從棧頂獲得中斷斷點(diǎn),確保能返回到主程序處繼續(xù)執(zhí)行。6中斷源引起中斷的事件或設(shè)備。內(nèi)部中斷:在CPU的內(nèi)部產(chǎn)生。例:CPU執(zhí)行程序時遇到的特殊情況,如:除法錯。外部中斷:在CPU的外部產(chǎn)生。例:外設(shè)提出的中斷,如電源故障。中斷類型號微機(jī)系統(tǒng)中有多個中斷源。為便于區(qū)分,為每個中斷源分配一個編號,即中斷類型號。7中斷接口當(dāng)中斷源向CPU發(fā)中斷請求時,需由一個電路來進(jìn)行管理,如:接收中斷請求、屏蔽/打開中斷請求、中斷優(yōu)先級排隊(duì)、中斷嵌套和中斷結(jié)束等。實(shí)現(xiàn)中斷管理的邏輯電路稱為中斷接口。本章使用8259A可編程中斷控制器對系統(tǒng)的中斷進(jìn)行管理。8中斷識別指CPU確定哪一個中斷源發(fā)出中斷請求的過程。目的:最終形成該中斷源所對應(yīng)的中斷服務(wù)程序的入口地址,實(shí)現(xiàn)程序的轉(zhuǎn)移。中斷識別的2種方法:查詢法:采用軟件或硬件查詢技術(shù)來確定發(fā)出中斷請求的中斷源。硬件法:由可編程中斷控制器來提供中斷類型號。9中斷向量和中斷向量表中斷向量:指中斷服務(wù)程序的入口地址。每個ISR都有一個確定的入口地址。入口地址=段基址CS:
偏移地址IP,共4個字節(jié)。中斷向量表:將系統(tǒng)中所有的中斷向量集中起來,按中斷類型號從小到大的順序存放在內(nèi)存某區(qū)域。該存儲區(qū)域稱為中斷向量表。PC機(jī)中共有256個中斷(0~255),每個中斷向量占4個字節(jié),共占1KB的存儲區(qū)域。用0000~03FFH的內(nèi)存單元存儲中斷向量表。1011
從中斷源請求中斷到完成ISR后返回主程序的過程,稱為中斷過程。包含4個階段。中斷源請求中斷外設(shè)發(fā)出中斷請求時,中斷接口電路需設(shè)置中斷請求觸發(fā)器,保持外設(shè)的中斷請求信號,直到CPU響應(yīng)該中斷后才清除它。中斷接口電路應(yīng)設(shè)置中斷屏蔽寄存器,CPU可通過對其進(jìn)行設(shè)置,使得某些中斷源的中斷請求不能提交到CPU。12
(2)中斷過程中斷判優(yōu)由于同一時刻可能會有多個中斷源同時請求中斷服務(wù),因此接口電路需對這些中斷源進(jìn)行優(yōu)先級判別和優(yōu)先級排隊(duì)。這個過程稱為中斷判優(yōu)。CPU按照優(yōu)先級的高低順序來響應(yīng)中斷。13中斷響應(yīng)收到中斷請求后,若CPU滿足響應(yīng)條件,則進(jìn)入中斷響應(yīng)周期。CPU響應(yīng)中斷的條件:CPU當(dāng)前指令執(zhí)行結(jié)束。沒有更高級的中斷請求在執(zhí)行。CPU處于開中斷狀態(tài)(IF=1)??捎弥噶罡淖僆F的狀態(tài):STI開中斷;CLI關(guān)中斷。1415中斷響應(yīng)及處理過程示意圖中斷響應(yīng)周期需完成的操作(CPU硬件自動完成)清IF和TF單步陷阱標(biāo)志,以免在響應(yīng)過程中被新的中斷源中斷,破壞了當(dāng)前中斷處理的現(xiàn)場。將標(biāo)志寄存器FLGAS和中斷斷點(diǎn)(CS:IP)壓棧保存。查找中斷向量表,獲得ISR的入口地址,轉(zhuǎn)去執(zhí)行ISR。中斷服務(wù)CPU轉(zhuǎn)入ISR后,需做以下幾件事情:保護(hù)現(xiàn)場:ISR將要用到的寄存器壓棧,以免其數(shù)據(jù)破壞。開中斷:以便在執(zhí)行ISR時,能響應(yīng)更高級的中斷請求。中斷處理:處理中斷請求所要求的操作。關(guān)中斷:保證在恢復(fù)現(xiàn)場時不被新的中斷打斷。恢復(fù)現(xiàn)場:在ISR結(jié)束前,執(zhí)行出棧操作,恢復(fù)各寄存器的內(nèi)容,以便主程序正確執(zhí)行。開中斷:保證返回主程序后仍能響應(yīng)中斷。中斷返回:ISR的最后一條指令為IRET,它將IP、CS和FLAGS的內(nèi)容依次彈出,以便恢復(fù)到主程序的斷點(diǎn)處。16中斷管理包括中斷源識別、優(yōu)先級排隊(duì)和中斷嵌套。中斷源識別PC機(jī)內(nèi)有多個中斷源,CPU收到中斷請求后,需識別是哪一個中斷源發(fā)出了中斷請求信號,以便執(zhí)行相應(yīng)的中斷服務(wù)程序。中斷源識別的兩種方法:軟件查詢:CPU逐個查詢各中斷源的狀態(tài),從而確定是哪個設(shè)備發(fā)出了中斷請求。硬件處理:中斷接口電路將要響應(yīng)的中斷類型號送給CPU。17
(3)中斷管理2.中斷的優(yōu)先級排隊(duì)當(dāng)有多個中斷源同時請求中斷時,由于CPU在同一時刻只能響應(yīng)并處理一個中斷請求,因此,需根據(jù)中斷的性質(zhì)及輕重緩急對中斷源進(jìn)行優(yōu)先級排隊(duì)。CPU先響應(yīng)優(yōu)先級高的中斷請求。高優(yōu)先級的中斷請求可中斷低優(yōu)先級的中斷服務(wù)。優(yōu)先級排隊(duì)的方法:軟件查詢法硬件菊花鏈排隊(duì)法可編程中斷控制器排隊(duì)法18軟件查詢法19軟件查詢法的實(shí)現(xiàn):屏蔽法20INAL,20H;讀取中斷請求觸發(fā)器的內(nèi)容TESTAL,80H
JNEA_ISP;外設(shè)A有請求,則轉(zhuǎn)入A的服務(wù)程序TESTAL,40H
JNEB_ISP ;外設(shè)B有請求,則轉(zhuǎn)入B的服務(wù)程序TESTAL,20HJNEC_ISP ;外設(shè)C有請求,則轉(zhuǎn)入C的服務(wù)程序……移位法21INAL,20HSHLAL,1JCA_ISP ;外設(shè)A有請求,則轉(zhuǎn)至A的服務(wù)程序SHLAL,1JCB_ISP ;外設(shè)B有請求,則轉(zhuǎn)至B的服務(wù)程序SHLAL,1JCC_ISP ;外設(shè)C有請求,則轉(zhuǎn)至C的服務(wù)程序……軟件查詢法的優(yōu)缺點(diǎn):優(yōu)點(diǎn):實(shí)現(xiàn)簡單,節(jié)省硬件。缺點(diǎn):中斷源較多時,查詢程序較長,由查詢轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序入口需要的時間較長。查詢的先后順序決定了中斷的優(yōu)先級順序:先被查詢的中斷,優(yōu)先級最高。22硬件菊花鏈法在每個外設(shè)的接口上接一個邏輯電路,這些電路構(gòu)成一個鏈來實(shí)現(xiàn)中斷應(yīng)答信號的控制,稱為菊花鏈。23(a)菊花鏈
(b)菊花鏈邏輯電路
菊花鏈工作原理中斷請求:設(shè)備A、B、C通過接口發(fā)出中斷請求:1有請求,0無請求。只要有一個設(shè)備發(fā)出請求,則INTR=1。中斷響應(yīng):若CPU允許中斷,則發(fā)INTA中斷響應(yīng)信號。該信號先送給外設(shè)A的菊花鏈電路。若A沒有請求,則它輸出的INTA仍為0,繼續(xù)往下傳。若A有中斷請求,則經(jīng)過或門時,由于其中斷請求為1,故輸出的INTA為1,使得后繼的中斷得不到響應(yīng)。24特點(diǎn):越靠近CPU的外設(shè),優(yōu)先級越高??删幊炭刂破髋抨?duì)法早期的PC多采用軟件查詢或菊花鏈法。目前的PC一般采用專用的可編程控制器芯片來完成中斷優(yōu)先級的排隊(duì)管理,如8259A。253.中斷嵌套CPU正在處理某個中斷的過程中,若出現(xiàn)了更高級的中斷請求,則CPU停止執(zhí)行級別低的ISR,而轉(zhuǎn)去處理級別更高的中斷。等高級別的中斷處理完后,再返回原來的低級中斷繼續(xù)執(zhí)行,依次類推,直到返回主程序。這種方式稱為多重中斷或中斷嵌套。2627內(nèi)容概要8259A的應(yīng)用舉例48086/8088微機(jī)中斷系統(tǒng)28259A可編程中斷控制器3PC機(jī)中的中斷應(yīng)用5中斷技術(shù)概述1中斷的常用術(shù)語:9個基本概念中斷過程:申請、判優(yōu)、響應(yīng)、服務(wù)中斷管理:判優(yōu)、優(yōu)先級、嵌套8086/8088用8位二進(jìn)制數(shù)表示一個中斷類型號,可區(qū)分256個中斷源。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)該中斷。中斷類型號為2,CPU無需發(fā)中斷應(yīng)答即可立即執(zhí)行2號中斷的ISR。外部中斷中,NMI的優(yōu)先級最高,用于電源掉電、時鐘錯誤等緊急情況,一般用戶不能使用。29②INTR(可屏蔽中斷)高電平觸發(fā),必須保持到當(dāng)前指令結(jié)束。受IF標(biāo)志位控制。STI:允許中斷;CLI:禁止中斷。中斷類型號為08~0FH和070H~077H。當(dāng)中斷允許時,CPU發(fā)出中斷應(yīng)答信號INTA,并從8259A獲得中斷源的中斷類型碼。中斷響應(yīng)的條件:有中斷請求系統(tǒng)處于開中斷狀態(tài)(IF=1)30內(nèi)部中斷
由CPU執(zhí)行指令產(chǎn)生的中斷,又稱軟件中斷。
①除法錯當(dāng)除數(shù)為0,或?qū)Х枖?shù)進(jìn)行除法運(yùn)算時所得結(jié)果超出規(guī)定的范圍,則CPU自動產(chǎn)生該中斷。中斷類型號為0。31②單步中斷調(diào)試程序時用。CPU每執(zhí)行一條指令,就進(jìn)入一次中斷。功能:顯示出CPU內(nèi)部各寄存器的內(nèi)容。受TF標(biāo)志位控制。TF=1時,CPU自動產(chǎn)生單步中斷。中斷類型號為1。32③斷點(diǎn)中斷INT單字節(jié)中斷指令,類型號為3。調(diào)試時可在程序關(guān)鍵處設(shè)置斷點(diǎn)。當(dāng)程序執(zhí)行到該指令處,轉(zhuǎn)去執(zhí)行一個斷點(diǎn)中斷。功能:顯示CPU內(nèi)部各寄存器的內(nèi)容,并給出一些提示信息。33④溢出中斷INTO單字節(jié)中斷指令。類型號為4。該指令常跟在帶符號數(shù)加、減法運(yùn)算指令之后。若標(biāo)志寄存器的OF=1,則執(zhí)行溢出中斷,其中斷服務(wù)程序給出出錯信息。⑤用戶定義的軟件中斷雙字節(jié)中斷指令I(lǐng)NTn,由用戶定義,類型號為n。不可被屏蔽。CPU不發(fā)響應(yīng)信號,中斷控制器不提供中斷類型號。34內(nèi)、外中斷的優(yōu)先級次序8086/8088系統(tǒng)中,除單步中斷外,所有內(nèi)部中斷的優(yōu)先級均高于外部中斷。除單步中斷外,所有內(nèi)部中斷都不能被屏蔽。
35中斷名中斷類型號優(yōu)先級除法出錯類型0高↑低INTn類型nINTO類型4NMI類型2INTR外設(shè)送入單步類型18086/8088系統(tǒng)支持256個中斷源,各個中斷源用不同的中斷類型號標(biāo)識,即:0~255。每個中斷源都有相應(yīng)的ISR,每個ISR都有不同的入口地址(又稱中斷向量)。每個入口地址由4個字節(jié)標(biāo)識:低2個字節(jié):存放中斷入口的偏移地址(IP)。高2個字節(jié):存放中斷入口的段基址(CS)。系統(tǒng)各個中斷入口地址的集合形成中斷向量表。共占1KB空間,地址范圍0000H~03FFH(DS=0)。36
(2)中斷向量表37由于0~255號中斷的入口地址依次連續(xù)排列,故:已知某中斷的類型號為n,則其對應(yīng)的ISR入口地址在中斷向量表中的存儲位置為4n。依次從4n處取出4個字節(jié)的內(nèi)容,低2個字節(jié)送入偏移地址IP,高2個字節(jié)送入段地址CS,即:(IP)←(4n+1,4n)。(CS)←(4n+3,4n+2)。獲得了中斷的入口地址,即可轉(zhuǎn)入相應(yīng)的ISR執(zhí)行中斷處理過程。38【例5-1】已知類型號為15H的中斷,其ISR存放在內(nèi)存的5678H:0100H~5678H:0123H單元。畫出該中斷的中斷向量在中斷向量表中的位置和內(nèi)容。解:ISR的入口地址為5678H:0100H,其中IP=0100H,CS=為5678H。已知中斷類型號n=15H,n×4=15H×4=0054H,故0054H和0055H單元存放偏移地址0100H。0056H和0057H單元存放段地址5678H。由此可畫出中斷向量在中斷向量表中的位置和內(nèi)容。3940中斷向量表建立中斷類型號與中斷向量間的關(guān)系。中斷類型號固定不變,但其對應(yīng)的中斷向量(即存儲的內(nèi)容)可以修改和變化。(系統(tǒng)中的專用中斷不允許修改)設(shè)置或修改中斷向量前,要關(guān)閉中斷,避免在設(shè)置或修改過程中被中斷。設(shè)置中斷向量的2種方法:直接寫入法利用DOS功能調(diào)用41
(3)中斷向量的設(shè)置與修改①直接寫入法
直接使用MOV指令把中斷向量寫入向量表對應(yīng)的單元。方法:設(shè)中斷類型號為n,對應(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 ;中斷類型號為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,中斷類型號為5。請使用直接寫入法設(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號功能調(diào)用,設(shè)置中斷向量。
功能號:AH=25H
入口參數(shù):DS=中斷服務(wù)程序入口地址的段基址DX=中斷服務(wù)程序入口地址的偏移量AL=中斷類型號45【例5-3】某外設(shè)的中斷服務(wù)程序名為P1,中斷類型號為5。請使用DOS功能調(diào)用法設(shè)置其中斷向量。46PUSHDS ;原DS入棧MOV AX,SEGP1;段基址存入DS中MOV DS,AX MOV AX,OFFSETP1 MOV DX,AX ;偏移地址存入DX中MOVAL,5
;中斷類型號在AL中MOVAH,25H;DOS調(diào)用功能號INT21HPOPDS
;DS出棧中斷向量的修改
中斷類型號不變,但是其指向的中斷服務(wù)程序(入口地址)改變,即中斷向量改變。
修改中斷向量的步驟:利用35H號功能,獲取原中斷向量,并保存。利用25H號功能,設(shè)置新的中斷向量。新的中斷服務(wù)程序服務(wù)完畢,利用25H號功能恢復(fù)原中斷向量。4735H號功能——讀取中斷向量
入口參數(shù):AH=35H,AL=中斷號
出口參數(shù):ES=中斷服務(wù)程序入口地址的段基址
BX=中斷服務(wù)程序入口地址的偏移地址25H號功能——設(shè)置新的中斷向量
入口參數(shù):AH=25H,AL=中斷號
DS=中斷服務(wù)程序入口地址的段基址
DX=中斷服務(wù)程序入口地址的偏移地址
出口參數(shù):無48【例5-4】修改類型號為n的中斷向量,使得新中斷服務(wù)程序入口地址的段基址為SEG_INTR,偏移地址為OFFSET_INTR。對應(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è)的中斷請求中斷優(yōu)先級排隊(duì)提供中斷類型號屏蔽或打開中斷接受CPU命令或返回當(dāng)前工作狀態(tài)一片8259A可直接管理8級中斷,通過級聯(lián)可擴(kuò)展至64級中斷。通過對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命令,完成對8259A內(nèi)部端口的讀寫操作。具體操作內(nèi)容由CS、RD、WR和A0
信號來決定。543.級聯(lián)緩沖/比較器CAS0~CAS2用于多塊8259A的級聯(lián)。4.中斷請求寄存器(IRR)8位寄存器,通過引腳IR0
~IR7與8個中斷源相連。若IRi=1,表明對應(yīng)的中斷源有中斷請求,則IRR寄存器相應(yīng)的第i位置1。5.中斷屏蔽寄存器(IMR)8位寄存器,第i位為1,表示屏蔽IRi的請求。其值可通過軟件設(shè)置或改變。556.中斷優(yōu)先權(quán)判別電路PR對已進(jìn)入IRR且未被IMR屏蔽的中斷請求進(jìn)行優(yōu)先權(quán)判別,確定優(yōu)先級最高的中斷,向CPU發(fā)送中斷請求信號INT。若8259A正在為某一中斷服務(wù)時,又出現(xiàn)了新的中斷請求,則PR判斷新的中斷請求優(yōu)先級是否更高。若是,則進(jìn)入中斷嵌套。567.中斷服務(wù)寄存器(ISR)8位,用來記錄CPU當(dāng)前正在為哪些中斷源服務(wù)。當(dāng)CPU響應(yīng)IRi請求時,ISR中相應(yīng)的位置1。當(dāng)ISR中有多個1時,表明CPU處于中斷嵌套
中。當(dāng)某個中斷處理完畢,ISR相應(yīng)的位復(fù)位。578.控制邏輯作用:根據(jù)IRR、IMR和PR的狀態(tài),通過INT信號向CPU發(fā)送中斷請求。接受CPU的中斷響應(yīng)信號INTA,置ISR相應(yīng)的位,且使IRR相應(yīng)的位清0,避免該中斷源的一次請求產(chǎn)生多次中斷。內(nèi)部包含7個寄存器:ICW1~ICW4
存放初始化命令字,用來設(shè)置8259A的工作方式和工作條件等。OCW1~OCW3存放操作命令字,用來對中斷處理過程進(jìn)行動態(tài)控制。58幾個縮寫字母的含義IRR:中斷請求寄存器(InterruptRequestRegister)IMR:中斷屏蔽寄存器(InterruptMaskRegister)ISR:中斷服務(wù)寄存器(InServiceRegister)PR:優(yōu)先級裁決器(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:寫、讀、片選信號。IR7~IR0:中斷請求信號,高電平或上升沿有效。INT:中斷請求信號,高有效。向CPU發(fā)中斷請求。INTA:中斷響應(yīng)信號,為2個負(fù)脈沖。CAS2~CAS0:級聯(lián)信號線,雙向。主片8259A的CAS2~CAS0為輸出。從片8259A的CAS2~CAS0為輸入。SP/EN:主從片設(shè)定/允許緩沖信號,雙向雙功能。緩沖方式下,為輸出信號,EN信號控制緩沖器。非緩沖方式下,作為輸入信號,表示8259A是主片(SP=1)還是從片(SP=0)。621.8259A的工作過程單片8259A工作時,每次中斷處理過程如下:當(dāng)IR7~IR0上有中斷請求,則IRR相應(yīng)的位置1。對于已進(jìn)入IRR且未被IMR屏蔽的中斷請求,PR電路進(jìn)行優(yōu)先級判定,得到最高級的中斷請求??刂七壿嫿邮罩袛嗾埱螅駽PU發(fā)INT信號。若CPU允許中斷,則在當(dāng)前指令結(jié)束后連續(xù)發(fā)出2個中斷應(yīng)答信號INTA,進(jìn)行中斷響應(yīng)。每個信號持續(xù)2個時鐘周期。63
(3)8259A工作方式CPU發(fā)第一個INTA時,輸出總線鎖定信號LOCK,防止其它處理器或DMA控制器占用總線。8259A收到第一個負(fù)脈沖后,將優(yōu)先級最高的中斷ISR相應(yīng)位置1,同時使IRR相應(yīng)位清0。64CPU發(fā)第二個INTA時,撤銷總線鎖存信號LOCK,地址允許信號ALE無效,允許數(shù)據(jù)線工作。8259A收到第二個負(fù)脈沖后,將相應(yīng)中斷的類型號送到數(shù)據(jù)線上。CPU讀取中斷類型號,查找中斷向量表得到中斷向量,轉(zhuǎn)而進(jìn)入中斷服務(wù)程序。若系統(tǒng)為自動結(jié)束中斷方式(AEOI),則8259A會在第2個脈沖結(jié)束時,自動將ISR的相應(yīng)位復(fù)位;
若為非自動結(jié)束中斷方式(EOI),則ISR相應(yīng)位的“1”一直保持,直到CPU發(fā)EOI(中斷結(jié)束)命令時才將其復(fù)位。652.8259A的級聯(lián)方式單片8259A最多可管理8級中斷。當(dāng)中斷源多于8個時,需將多個8259A芯片級聯(lián)構(gòu)成主從模式。系統(tǒng)最多支持8個8259A芯片級聯(lián),即:最多可支持64個中斷源。每個從片的IR7~IR0可直接與8個中斷源相連,經(jīng)過優(yōu)先級判優(yōu)后主片發(fā)送INT信號。主片對所有從片發(fā)來的INT進(jìn)行判優(yōu)后,最終向CPU發(fā)INT信號。6667SP/EN引腳用于區(qū)分8259A是主片還是從片。高電平為主片,低電平為從片。主/從片通過CAS2~CAS0互連。主片的CAS2~CAS0為輸出,從片的CAS2~CAS0為輸入。CPU發(fā)出第一個INTA時,主片使ISR相應(yīng)的位置1,使IRR的相應(yīng)位清0;并通過CAS2~CAS0輸出一組從片的編碼
ID2~ID0。從片收到該編碼后,與自身ICW3中的D2~D0編碼進(jìn)行比較。若相同,則在第二個INTA信號將從片的中斷類型號送到數(shù)據(jù)總線。683.中斷觸發(fā)方式電平觸發(fā):IRi端出現(xiàn)高電平時,有中斷請求。
邊沿觸發(fā):IRi端出現(xiàn)上升沿時,有中斷請求。
69注意:當(dāng)該中斷請求得到響應(yīng)后(ISR相應(yīng)位置1),必須及時撤銷其高電平,否則可能會再次觸發(fā)中斷。優(yōu)點(diǎn):IRi端可一直保持高電平,而不會被誤判為又一次中斷請求。4.中斷屏蔽方式普通屏蔽方式中斷屏蔽寄存器IMR的某位為1,則禁止相應(yīng)的中斷請求;為0,則允許。這種方式下,由于優(yōu)先權(quán)判別器PR的作用(查ISR的狀態(tài)),只有級別高的中斷源才允許中斷。若CPU不希望某些中斷源申請中斷,或在處理某中斷時不希望比該中斷級別低的中斷源申請中斷,可采用該方法。70特殊屏蔽方式在處理某中斷時,若想開放級別較低的中斷請求,則:(1)將IMR中本級中斷的相應(yīng)位置1,屏蔽本級中斷,為開放級別較低的中斷提供可能。(2)將本級中斷ISR的相應(yīng)位復(fù)位,才能真正開放級別較低的中斷。71與普通屏蔽的區(qū)別:特殊屏蔽方式除了在IMR中屏蔽本級中斷源外,還需使當(dāng)前ISR的相應(yīng)位復(fù)位。5.中斷優(yōu)先權(quán)管理方式①固定優(yōu)先級--IR0優(yōu)先級最高,IR7最低。②循環(huán)優(yōu)先級--某中斷被服務(wù)后,其優(yōu)先權(quán)自動降為最低,而相鄰中斷源的優(yōu)先級升為最高。優(yōu)先權(quán)自動循環(huán)方式初始時,IR0優(yōu)先級最高,IR7優(yōu)先級最低。優(yōu)先權(quán)特殊循環(huán)方式用戶編程來指定初始時哪個中斷源的優(yōu)先級最低。例:初始時規(guī)定IR5最低,則優(yōu)先級順序?yàn)椋篒R6
>IR7>IR0>
…>IR4>IR5。726.中斷嵌套方式普通全嵌套方式簡稱全嵌套方式,是最基本、最常用的方式。某中斷被響應(yīng)時,只有更高級的中斷請求才會響應(yīng)。特殊全嵌套方式用于級聯(lián)場合??身憫?yīng)高級別和同級別中斷。級聯(lián)時從片的INT端連接主片IRi端。從片上不同級別的中斷請求,主片視之為同一級別。普通全嵌套無法響應(yīng)第二次高級別中斷。而特殊全嵌套方式可正常響應(yīng)。73單片8259A時,通常采用普通全嵌套方式。多片級聯(lián)時,從片采用普通全嵌套方式,而主片必須采用特殊全嵌套。7.中斷結(jié)束方式當(dāng)某個中斷請求得到響應(yīng)時,其ISR的相應(yīng)位置1。當(dāng)其中斷服務(wù)結(jié)束時,其ISR中的相應(yīng)位必須清0。中斷結(jié)束方式是指使ISR相應(yīng)位復(fù)位的方式。8259A有2種中斷結(jié)束方式自動結(jié)束方式(AEOI)非自動結(jié)束方式(EOI)74自動結(jié)束方式(AEOI)ISR相應(yīng)位的復(fù)位由8259A硬件自動完成。當(dāng)CPU響應(yīng)某中斷時,第二個INTA信號的下降沿
自動將ISR相應(yīng)位的復(fù)位。該方式只適用于單片8259A、無中斷嵌套的場合。75非自動結(jié)束方式(EOI)該方式下,由CPU發(fā)EOI命令來使ISR的相應(yīng)位復(fù)位。普通中斷結(jié)束方式CPU向8259A發(fā)送EOI命令,使當(dāng)前ISR中級別最高的位復(fù)位。特殊中斷結(jié)束方式CPU向8259A發(fā)送EOI命令,該命令字指定了要結(jié)束哪一級中斷源,從而使ISR相應(yīng)的位復(fù)位。768.連接系統(tǒng)總線的方式緩沖方式多片8259A級聯(lián)時,8259A通過總線驅(qū)動器與數(shù)據(jù)總線相連。此時8259A的SP/EN
端輸出一個低電平(EN=0)作為總線驅(qū)動器的啟動信號。即:SP/EN信號與總線驅(qū)動器的允許端相連。7778輸出信號緩沖器非緩沖方式當(dāng)系統(tǒng)中只有單片或少數(shù)幾片8259A時,8259A可直接與數(shù)據(jù)總線相連。此時,8259A的SP/EN端作為輸入信號。單片8259A時,SP=1。多片8259A級聯(lián)時,主片的SP=1,從片的SP=0。798081
(4)8259A編程CPU向8259A發(fā)送的命令字分為以下2種:初始化命令字ICW包含ICW1~ICW4四個命令字,在系統(tǒng)啟動時由初始化程序設(shè)置。一旦設(shè)定后,在系統(tǒng)工作過程中一般不再改變。操作命令字OCW包含OCW1~OCW3,由應(yīng)用程序設(shè)定,用來對中斷處理過程進(jìn)行動態(tài)控制,如:中斷屏蔽、中斷結(jié)束、優(yōu)先權(quán)設(shè)定等??啥啻卧O(shè)置。828259A只有一根輸入地址線A0,如何區(qū)分7個寄存器?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采用讀寫分時法、順序法及特征位法解決端口沖突。1.ICW1:設(shè)置觸發(fā)方式、是否級聯(lián)和需ICW4等。84(一)初始化命令字ICW未用表ICW1要寫入偶端口特征位×××1LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0IRi中斷觸發(fā)方式1:電平觸發(fā)0:邊沿觸發(fā)8086/8088中不用是否級聯(lián)1:單片0:級聯(lián)1:需要ICW40:不需要85D0(ICW4)的設(shè)置:8086/8088系統(tǒng)必須設(shè)置D0=1,即:需要ICW4。寫入ICW1后,8259A內(nèi)部有一個初始化過程,相當(dāng)于Reset功能,其作用:指示8259A順序邏輯復(fù)位,即:它準(zhǔn)備按ICW2、ICW3、ICW4的順序接受其余初始化命令字。清除IMR、ISR。指定優(yōu)先級方式為普通全嵌套方式、普通屏蔽方式、非自動中斷結(jié)束方式。86【例5-5】若8259A采用電平觸發(fā),單片使用,需要ICW4,請寫出ICW1的初始化程序段。×××1LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0MOV AL,1BH ;ICW1=00011011OUT 20H,AL ;偶端口2.ICW2:設(shè)置類型碼。87高5位由用戶編程設(shè)定表ICW2要寫入奇端口T7T6T5T4T3D7D6D5D4D3D2D1D01A0低3位由IR7~IR0自動生成中斷類型號=ICW2高5位+低3位(IRi的編碼)。ICW2緊隨ICW1之后。CPU響應(yīng)中斷發(fā)第2個INTA時,8259A將ICW2的內(nèi)容(中斷類型號)送到數(shù)據(jù)總線。88【例5-6】PC機(jī)中斷系統(tǒng)的中斷類型號范圍為08~0FH,某中斷請求線連接到8259A的IR5上,請寫出設(shè)置ICW2
的程序段。MOV AL,08H ;高5位OUT 21H,AL ;奇端口
CPU響應(yīng)硬盤中斷后,8259A把IR5的編碼101作為低3位,與ICW2中設(shè)置的高5位合一起,構(gòu)成完整的8位中斷類型號0DH,經(jīng)數(shù)據(jù)總線提供給CPU。T7T6T5T4T3D7D6D5D4D3D2D1D01A03.ICW3:設(shè)置級聯(lián)方式。僅當(dāng)級聯(lián)模式下(即ICW1
的SNGL=0時)才需設(shè)置ICW3。這時需分別對主片和從片進(jìn)行設(shè)置。主片ICW3:說明主片IR7~IR0的哪些引腳上連有從片。89S7S6S5S4S3S2S1S0D7D6D5D4D3D2D1D01A01:IRi
上接有從片0:IRi
上未接從片表ICW3要寫入奇端口從片ICW3:ID2~ID0的編碼值說明該從片的INT信號連接至主片IR7~IR0的哪個引腳。90×××××ID2ID1ID0D7D6D5D4D3D2D1D01A0任意表ICW3要寫入奇端口000:連至主片的IR0……111:連至主片的IR7例:從片的INT連接至主片的IR5,則ID2~ID0
=101。4.ICW4:設(shè)置緩沖方式、中斷結(jié)束方式等。當(dāng)ICW1
的D0=1時,需設(shè)置ICW4。91000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0表ICW4要寫入奇端口1:緩沖方式0:非緩沖方式1:特殊全嵌套0:普通全嵌套1:主片0:從片1:AEOI0:EOI1:8086/80880:8080/8085特征位僅當(dāng)buf=1時M/S位才起作用92【例5-7】PC機(jī)中,單片8259A與系統(tǒng)總線之間采用緩沖器連接,非自動結(jié)束方式,正常完全嵌套。請寫出設(shè)置ICW4
的程序段。MOV AL,0DH ;00001101BOUT 21H,AL ;奇端口000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0要使中斷系統(tǒng)正常工作,CPU必須對系統(tǒng)中的每片8259A進(jìn)行初始化編程,即:順序?qū)CW1~ICW4寫入各個8259A芯片。單片8259A時,需依次寫入ICW1、ICW2和ICW4。多片8259A時,需依次寫入ICW1、ICW2、ICW3和ICW4。93(二)8259A初始化編程9495【例5-8】IBMPC/XT機(jī)中,僅用單片8259A,中斷請求采用邊沿觸發(fā),中斷類型號為08H~0FH,普通全嵌套,緩沖方式,非自動中斷結(jié)束方式。8259A的端口地址為20H和21H。請按上述要求對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相連。主片的中斷類型號為08H~0FH,端口地址為20H和21H。從片的中斷類型號為70H~77H,端口地址為0A0H和0A1H。主片、從片均采用邊沿觸發(fā)、緩沖、非自動中斷結(jié)束方式。請按照上述要求對8259A進(jìn)行初始化編程。97主片編程:MOVAL,00010001B;ICW1:邊沿觸發(fā)、級聯(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ā)、級聯(lián)、需ICW4OUT0A0H,ALMOVAL,01110000B;ICW2:70H~77H的高5位OUT0A1H,ALMOVAL,00000010B;ICW3:從片接主片的IRQ2OUT0A1H,ALMOVAL,00001001B;ICW4:普通全嵌套、緩沖方式、OUT0A1H,AL ;從片、EOI方式對8259A進(jìn)行初始化后(寫入初始化命令字),8259A進(jìn)入工作狀態(tài),可接收IRi的中斷請求,并按系統(tǒng)設(shè)定的方式來響應(yīng)和管理中斷。在8259A工作期間,可通過寫入操作命令字OCW,對其中斷管理方式進(jìn)行動態(tài)設(shè)置和修改。操作命令字有3個:OCW1~OCW3。99(三)操作命令字OCW1.OCW1:設(shè)置中斷屏蔽字直接對IMR
相應(yīng)的位進(jìn)行設(shè)置。100M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D01A01:屏蔽中斷0:允許中斷OCW1要寫入奇端口101【例5-10】已知8259A的端口地址為20H、21H。若要屏蔽IR5、IR4和IR1引腳上的中斷請求,而不改變其余中斷源原來的屏蔽情況。試給出對應(yīng)的程序段。INAL,21H ;讀取IMR的當(dāng)前值ORAL,00110010B;IRQ5、IRQ4、IRQ1OUT21H,AL ;寫入OCW12.OCW2:設(shè)置/修改優(yōu)先級模式、發(fā)送EOI命令等102指出優(yōu)先級最低的IRi,或要清除的ISR的相應(yīng)位。OCW2要寫入偶端口特征位RSLEOI00L2L1L0D7D6D5D4D3D2D1D00A00:固定優(yōu)先級1:循環(huán)優(yōu)先級0:普通1:特殊0:不發(fā)1:發(fā)EOI命令D7(R):0為固定優(yōu)先級;1為循環(huán)優(yōu)先級。D6(SL):0為“普通”;1為“特殊”。這2位決定優(yōu)先級方式:
R=0,SL=× :固定優(yōu)先級(L2~L0無效)
R=1,SL=0 :優(yōu)先級自動循環(huán)(L2~L0無效)
R=1,SL=1 :優(yōu)先級特殊循環(huán)(L2~L0有效)此時L2~L0指明循環(huán)開始時哪個IRi的優(yōu)先級最低。
103D5(EOI):1時發(fā)EOI命令;0時不發(fā)EOI命令。
在非自動中斷結(jié)束方式下,可通過發(fā)EOI命令來使ISR相應(yīng)的位復(fù)位。(非硬件復(fù)位)
EOI位可和SL位配合使用。EOI=0,SL=×:不發(fā)EOI命令。EOI=1,SL=0:普通中斷結(jié)束。此時EOI命令將ISR中優(yōu)先級最高的中斷對應(yīng)的位清0。(L2~L0無效)EOI=1,SL=1:特殊中斷結(jié)束。此時EOI命令將ISR中L2~L0所指定的中斷對應(yīng)位清0。(L2~L0有效)104R、SL、EOI三位的組合含義
105RSLEOI功能說明001普通EOI命令,全嵌套方式011特殊EOI命令,全嵌套方式,L2~L0指定的ISR位清0101普通EOI命令,優(yōu)先級自動循環(huán)111特殊EOI命令,優(yōu)先級特殊循環(huán),L2~L0指定的ISR位清0,且L2~L0指定的IR位為最低優(yōu)先級100自動EOI時,優(yōu)先級自動循環(huán)000自動EOI時,取消優(yōu)先級自動循環(huán)110優(yōu)先級特殊循環(huán),L2~L0指定優(yōu)先級最低的IR位010無操作106MOVAL,00100000B;OCW2:EOI=1,SL=0OUT20H,AL ;寫入OCW2IRET ;中斷返回,回到主程序【例5-11】已知8259A的端口地址為20H、21H。8259A設(shè)置為非自動中斷結(jié)束的普通中斷結(jié)束方式。在中斷子程序中,CPU向8259A發(fā)送一個中斷結(jié)束命令后返回主程序。試給出對應(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ù)的同級中斷,而允許優(yōu)先級較低的中斷請求。10:取消特殊屏蔽方式。0×:保持原來的屏蔽方式。SMM無效。108D2(P):查詢命令位。P=1,CPU向8259A發(fā)查詢命令。P=0不發(fā)。當(dāng)CPU處于關(guān)中斷時(IF=0),INTR引腳發(fā)送的中斷不被處理。此時,CPU可向8259發(fā)查詢命令(偶端口),然后從偶端口讀取查詢字,以獲知當(dāng)前是否有中斷請求及正在申請的中斷源中優(yōu)先級最高的中斷源編碼。109有中斷請求時,當(dāng)前中斷請求中優(yōu)先級最高的中斷源編號偶端口I××××W2W1W0D7D6D5D4D3D2D1D00A01:有中斷請求0:無中斷請求未用110CLI ;關(guān)中斷L1:MOVAL,00001100B;OCW3:D4D3=01,P=1OUT0A0H,AL ;發(fā)查詢命令字
INAL,0A0H;讀查詢字TESTAL,10000000B;判斷是否有中斷請求JNZNEXT ;有中斷請求時轉(zhuǎn)入NEXTJMPL1NEXT:……【例5-12】已知8259A的端口地址為0A0H~0A1H,處于關(guān)中斷狀態(tài)。將8259A設(shè)置為中斷查詢方式,判斷當(dāng)前是否有中斷請求。若有,則轉(zhuǎn)向NEXT處執(zhí)行;若無,則重復(fù)查詢。試編寫程序段實(shí)現(xiàn)之。111讀IMR:直接讀OCW1(奇端口)INAL,21H
【例5-13】已知8259A的端口地址為20H、21H。試寫程序段,讀取其IMR、IRR、ISR三個寄存器的值。讀IRR:必須發(fā)讀IRR寄存器的命令才能讀取(OCW3)MOVAL,00001010B;發(fā)讀IRR的OCW3命令字OUT20H,ALINAL,20H;讀IRR的內(nèi)容
讀ISR:必須發(fā)讀ISR寄存器的命令才能讀?。∣CW3)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個:工作過程、級聯(lián)方式、觸發(fā)方式、屏蔽方式、優(yōu)先級方式、中斷結(jié)束方式、系統(tǒng)連線方式)8259A編程:ICW、OCW、初始化編程(1)中斷程序設(shè)計(jì)若要以中斷方式實(shí)現(xiàn)CPU與外設(shè)間的數(shù)據(jù)交換,用戶需完成主程序和中斷服務(wù)子程序的設(shè)計(jì)。主程序:對中斷系統(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)先級、結(jié)束方式等。中斷源接口初始化:如:使中斷源允許中斷等。中斷服務(wù)程序初始化:進(jìn)入ISR前,要設(shè)置ISR使用的緩沖區(qū)指針和狀態(tài)位等。114中斷服務(wù)程序設(shè)計(jì)(ISR)保護(hù)現(xiàn)場:把ISR中要使用的寄存器入棧。開中斷:運(yùn)行當(dāng)前ISR程序時,要能響應(yīng)更高級的中斷。數(shù)據(jù)輸入輸出:與外設(shè)間進(jìn)行數(shù)據(jù)傳輸。數(shù)據(jù)的處理比較費(fèi)時,一般交由主程序完成。關(guān)中斷:ISR結(jié)束時,關(guān)中斷以避免不必要的中斷嵌套?;謴?fù)現(xiàn)場:將堆棧中保存的各寄存器值出棧,以便返回主程序后可以正確使用原數(shù)據(jù)。中斷結(jié)束命令:8259A采用非自動中斷結(jié)束方式時,發(fā)EOI命令使ISR的相應(yīng)位清0。中斷返回:用IRET指令返回主程序。115116
(2)中斷應(yīng)用實(shí)例【例5-14】已知某輸入設(shè)備接口內(nèi)有一個8位的數(shù)據(jù)端口(地址200H)和一個8位的狀態(tài)端口(地址201H)。當(dāng)狀態(tài)端口的最高位為1時,數(shù)據(jù)端口中的數(shù)據(jù)有效,并且此時在STB引腳上出現(xiàn)一個脈沖信號。請?jiān)O(shè)計(jì)一個微機(jī)系統(tǒng),讀取該接口內(nèi)的有效數(shù)據(jù),并將之存入內(nèi)存的BUFFER單元中。117方法一:查詢法硬件電路設(shè)計(jì)軟件流程圖設(shè)計(jì)118MOVDX,201H ;讀取狀態(tài)端口L1:INAL,DXTESTAL,10000000B;測試其最高位JZL1 ;無有效數(shù)據(jù)MOVDX,200H ;有有效數(shù)據(jù),讀數(shù)據(jù)端口INAL,DXMOVBUFFER,AL ;保存數(shù)據(jù)到BUFFER
119方法二:中斷法當(dāng)接口中的數(shù)據(jù)有效時,會產(chǎn)生STB脈沖信號,該信號可作為中斷請求信號,通過8259A向CPU發(fā)送中斷請求。一旦有數(shù)據(jù)到來,觸發(fā)中斷,進(jìn)入中斷服務(wù)程序ISR。CPU在ISR中讀取數(shù)據(jù)端口的內(nèi)容。當(dāng)沒有數(shù)據(jù)到來時(STB信號不觸發(fā)中斷),CPU可運(yùn)行其它程序。120假設(shè)條件:STB信號連接到8259A的IR3端。8259A的端口地址為20H~21H,其IR0~IR7中斷類型號為08H~0FH。中斷服務(wù)子程序名為P1。未發(fā)生中斷時,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段的對應(yīng)關(guān)系START:
MOV AX,DATA ;數(shù)據(jù)段段地址MOV DS,AX
PUSHDSCLI ;關(guān)中斷MOVAL,00010011B;ICW1:邊沿觸發(fā),單片,要ICW4OUT20H,ALMOVAL,08H ;ICW2:中斷類型號前5位OUT21H,AL主程序設(shè)計(jì)124MOVAL,00000001B ;ICW4:普通全嵌套,非緩沖OUT21H,AL ;非自動中斷結(jié)束
MOVAX,0 ;設(shè)置中斷向量表段基址為0MOVDS,AXMOVAX,OFFSETP1 MOV[002CH],AX ;IR3中斷類型號為0BH,2CH?MOVAX,SEGP1 MOV[002EH],AX POPDSSTI ;開中斷L1:INCCXJMPL1125P1PROC ;中斷服務(wù)子程序PUSHCX ;保護(hù)現(xiàn)場STI ;開中斷MOVDX,200H ;讀數(shù)據(jù)端口IN AL,DXMOVBUFFER,AL ;保存數(shù)據(jù)CLI ;關(guān)中斷
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44876-2024外科植入物骨科植入物的清潔度通用要求
- 亞運(yùn)會應(yīng)急預(yù)案
- 肺性腦病的業(yè)務(wù)學(xué)習(xí)
- 移動設(shè)備管理與安全
- 銀行述職報(bào)告2024年
- 皮膚科護(hù)士述職報(bào)告
- 高中生物人類遺傳病試題
- 機(jī)器人安全培訓(xùn)
- 糖尿病飲食資料
- 社交渠道規(guī)劃
- 藍(lán)色簡約風(fēng)中國空軍成立75周年紀(jì)念日
- 2024年全國企業(yè)員工全面質(zhì)量管理知識競賽題庫(含答案)(共132題)
- 知識創(chuàng)業(yè)思維與方法智慧樹知到答案2024年湖南師范大學(xué)
- 無人機(jī)全行業(yè)保險(xiǎn)
- 2023年廣東省建筑設(shè)計(jì)研究院校園招聘筆試參考題庫附帶答案詳解
- 野生動物管理學(xué)智慧樹知到答案章節(jié)測試2023年東北林業(yè)大學(xué)
- 拌混凝土拌合站管理辦法
- 文明如廁講衛(wèi)生PPT課件
- 證券公司年度營業(yè)部經(jīng)營管理業(yè)績考核辦法
- 電子工程師必備基礎(chǔ)知識
- 網(wǎng)站建設(shè)與運(yùn)營課程標(biāo)準(zhǔn)
評論
0/150
提交評論