接口_第5章中斷技術(shù)_第1頁
接口_第5章中斷技術(shù)_第2頁
接口_第5章中斷技術(shù)_第3頁
接口_第5章中斷技術(shù)_第4頁
接口_第5章中斷技術(shù)_第5頁
已閱讀5頁,還剩58頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第5 5章章 中斷技術(shù)中斷技術(shù)5.1 中斷是指CPU在正常運行程序時,由于內(nèi)部/外部事件或由程序,而轉(zhuǎn)到為中斷事件服務的程序中去,服務完畢再返回執(zhí)行原程序,這一過程稱為中斷。硬件中斷: 由外部硬件產(chǎn)生的中斷。軟件中斷: 由程序預先安排的中斷。中斷的特征:具有隨機性。5.2 中斷的類型 分為硬件中斷(外部中斷)和軟件中斷。1、硬件中斷l(xiāng) 可屏蔽中斷INTR 通過中斷控制器向微處理器申請而產(chǎn)生的中斷,它可以用指令屏蔽與開放。l 不可屏蔽中斷NMI 通過中斷請求線NMI向微處理器申請而產(chǎn)生的中斷,它可以用指令屏蔽與開放。2、軟件中斷 軟中斷由用戶在程序里發(fā)出中斷指令I(lǐng)NT nH產(chǎn)生的,指令中的操作

2、數(shù)n稱為軟中斷號。lDOS功能調(diào)用 例如:INT 21H調(diào)用。lBIOS功能調(diào)用l軟中斷的應用 由軟件中斷指令引起的中斷,無中斷響應周期,中斷號由指令中給出,該中斷無法被屏蔽。5.3 中斷號1、中斷號 系統(tǒng)給每個中斷與異常分配了一個中斷號,以便識別與處理。微機支持256個中斷號,并對硬件中斷和軟件中斷統(tǒng)一編號在0-255號內(nèi)。在向量中斷中,CPU可通過它找到中斷服務程序的入口地址,實現(xiàn)程序的轉(zhuǎn)移。2、PC微機系統(tǒng)的中斷號分配PC微機系統(tǒng)的中斷號分配表5.4 中斷觸發(fā)方式與中斷排隊1、中斷觸發(fā)方式 指外部設(shè)備以什么邏輯信號去向中斷控制器申請中斷,一般有邊沿觸發(fā)和電平觸發(fā)兩種。2、中斷排隊方式l按

3、優(yōu)先級排隊 按任務的輕重緩急確定響應優(yōu)先級,實際應用較多。l循環(huán)輪流排隊 具有相同的優(yōu)先級。3、中斷嵌套 當CPU正處理某個中斷時,出現(xiàn)更高級中斷源的申請,CPU必須暫停該中斷服務,轉(zhuǎn)而去處理更高級中斷的服務,待處理完后,再返回到被中斷的服務程序繼續(xù)執(zhí)行。 高級中斷可中斷低級中斷響應1響應2中斷服務返回返回主程序中斷服務5.5 中斷向量與中斷向量表1、中斷向量 CPU響應中斷后,中斷源提供地址信息,由此地址信息對程序的執(zhí)行進行導向,引導到中斷服務程序中去執(zhí)行,所以把這個地址稱為中斷向量。 中斷向量包括中斷服務程序的段基址CS,偏址地址IP共4個字節(jié)。 2、中斷向量表 所有的中斷向量集中存放到存

4、儲器的某一區(qū)域,這一區(qū)域稱之為中斷向量表。 PC微機系統(tǒng)規(guī)定: 存儲器的000H-03FFH作為中斷向量存儲區(qū)(共1024個字節(jié)),每個中斷向量包含4個字節(jié),可容納256個中斷向量,即可處理256個中斷服務程序。中斷向量表每個中斷服務程序的入口地址占4個字節(jié)3、中斷向量的填寫 對于沒有填寫中斷向量表的系統(tǒng),需由用戶自己填寫中斷向量。例:用MOV指令填寫中斷類型號為60H的中斷向量CLICLD ;內(nèi)存地址加MOV AX,0MOV ES,AXMOV DI,4*60H ;中斷向量指針DIMOV AX,OFFSET INTR60 ;中斷服務程序的偏移地址AXSTOSW ;AXDIDI+1中,然后DI+

5、2MOV AX,SEG INTR60 ;中斷服務程序的段基址AX STOSW ;AXDI+1DI+2STI5.6 中斷處理過程1、可屏蔽中斷的處理過程它包括4個階段:l 中斷申請與響應握手l 標志位的處理與斷點保存l 向中斷服務程序轉(zhuǎn)移并執(zhí)行中斷服務程序l 返回斷點中斷控制器8259A中斷類型號為60H的設(shè)備IR0INTRINTACPU開中斷,接收INTR請求CPU發(fā)INTA響應,在第二個INTA周 期中,外部中斷控制器送中斷類型號OLDFLAG STACKOLDCS STACK(60H*4+2)=(182H)=1240H CSOLDIP STACK (60H*4)=0200H=(180H)

6、IP執(zhí)行在CS=1240H,IP=0200H處的中 斷服務程序執(zhí)行IRET中斷返回指令 OLDIP退棧 OLDCS退棧 OLDFLAG退棧繼續(xù)執(zhí)行當前程序中的下一條指令CPU外設(shè)RAMCS1240HIP0200H類型為60H的中斷服務程序0200H1240H0180H0182HOLDIPOLDCSOLDFLAGSS3000HSP0100HCSOLDCSIPOLDIPINTR當前程序堆棧中斷服務程序中斷向量表可屏蔽中斷的處理過程2、不可屏蔽中斷和軟中斷的處理過程也包括4個階段l 中斷申請與響應握手 必須立即響應,但不發(fā)中斷響應信號。l 標志位的處理與斷點保存 與可屏蔽中斷類似。l 向中斷服務程序

7、轉(zhuǎn)移并執(zhí)行中斷服務程序 NMI中斷向量的兩個字放在0008H和000AH處。l 返回斷點5.7 中斷控制器1、82C59A外部特性和內(nèi)部寄存器l外部特性面向CPU的信號面向外設(shè)的8根中斷請求線面向同類芯片的中斷請求級聯(lián)線82C59A的內(nèi)部結(jié)構(gòu)圖5.3 82C59A的外部引腳與內(nèi)部寄存器數(shù)據(jù)總線緩沖器讀/寫邏輯級聯(lián)緩沖/比較器控制邏輯正在服務寄存器ISR優(yōu)先級分析器PR中斷請求寄存器IRR中斷屏蔽寄存器 IMRIR0IR1IR2IR3IR4IR5IR6IR7D0D7INTA0CAS0CAS1CAS2SP/ENCSWRRDINTAl內(nèi)部寄存器 中斷請求寄存器(IRR) 它存放IR線上提出了中斷請求

8、的中斷源,該寄存器8位(D0D7)對應于連接在IR0IR7線上的外設(shè)所產(chǎn)生的中斷請求。哪 一根輸入線有請求,哪位就置“1”。 中斷屏蔽寄存器(IMR) 是對中斷請求IRi起屏蔽作用,即對中斷請求IRi是屏蔽還是允許,寄存器8位對應8級中斷屏蔽。哪一級中斷被屏蔽,哪位就寫“1”,即禁止IRi提出中斷請求。Di=0 開中斷1 關(guān)中斷 正在服務寄存器ISR 在中斷響應之后,第一個獲準中斷請求的中斷級在相應的ISR中置位(如IR3獲準,ISR中的IS3置位,表明IR3正處于服務)。因此,ISR被用來存放正在被服務的所有中斷級,包括尚沒服務完而中途被別的中斷所打斷了的中斷級。 在非自動中斷結(jié)束方式下,I

9、SR的復位,要有中斷結(jié)束命令EOI來執(zhí)行。 優(yōu)先權(quán)分析器(PR) 優(yōu)先排隊當在IRi輸入端有中斷產(chǎn)生時,送到PR,PR檢查進來的中斷請求的優(yōu)先級并和“正在服務中的中斷”進行比較,確定是否讓這個中斷請求送給處理器。 2、82C59A的工作方式l 中斷觸發(fā)方式確定中斷請求的啟動方式邊沿觸發(fā)方式。IR0-IR7線上出現(xiàn)由低到高的跳變,表示有中斷請求。電平觸發(fā)方式。 IR0-IR7線上出現(xiàn)高電平時變,表示有中斷請求。l 中斷級聯(lián)方式 82C59可以單片使用,也可以多片使用,級聯(lián)方式應用時有主片和從片的問題。82C59在PC微機上的級聯(lián)l 中斷優(yōu)先級排對方式 完全嵌套方式 只能高優(yōu)先級中斷低優(yōu)先級的中斷

10、。 特殊完全嵌套方式 同級優(yōu)先級的中斷可以相互中斷。 優(yōu)先級輪換方式 被服務完的中斷源優(yōu)先級將自動變?yōu)樽畹停浜蟮闹袛嘣吹膬?yōu)先級將變?yōu)樽罡?。?yōu)先級輪換方式有兩種 優(yōu)先級自動輪換方式:當一個中斷被服務后,自動降為最低,初始順序是:IR0,IR1, 優(yōu)先級指定輪換方式:與的差別是,初始輪換的優(yōu)先級可以由程序指定。l 中斷結(jié)束方式 自動結(jié)束方式 在中斷響應周期,就自動清零了該中斷源的ISR寄存器中被置1的位。這常用于沒有中斷嵌套的系統(tǒng)。 非自動結(jié)束方式 在中斷服務程序后,必須使用中斷結(jié)束命令EOI才能清除ISR中的相應位。這是最常用的中斷結(jié)束方式。它有兩種形式: 指定結(jié)束命令:即要指定結(jié)束中斷請求

11、線IRi的編號。 常規(guī)結(jié)束命令:不指定IRi的編號。3、82C59A的編程命令中斷操作功能: 請求 屏蔽 排隊 結(jié)束 級聯(lián) 中斷類型號 查詢 下面討論為實現(xiàn)這些功能的各個命令字的含義,為編程使用82C59A提供一些思路。l初始化命令字( ICW1 ICW4 ) 必須在對82C59A初始化時完成。需要按順序發(fā)送ICW1 ICW4 中斷請求觸發(fā)方式的設(shè)定(ICW1)功能:設(shè)定中斷請求的觸發(fā)方式(電平觸發(fā)或邊沿觸發(fā))、級聯(lián)和CPU的特性。 ICW10A00001LTIMADISNGLIC416位機無效特征位 電平觸發(fā) 無效單片使用需要ICW4D7D6D5D4D3D2D1D0ICW1的格式:A0:最低

12、位地址線,A0 =0即為偶地址。例.若8259A采用電平觸發(fā),單片使用,需要 ICW4(對16位機以上,D0=1),則: MOV AL,00011011B ;ICW1的內(nèi)容 OUT 20H,AL ;寫入ICW1端口 ;(A0=0) 微機主片的端口(地址A0=0) 中斷類型號的設(shè)定(ICW2) 功能:提供給CPU的中斷類型號ICW21A0T7T6T5T4T3000中斷類型號的高5位16位機無效D7D6D5D4D3D2D1D0設(shè):硬盤中斷號:0DH 即 00001101 00001000注意:向ICW2寫入中斷類型號只寫高5位,低3位寫0,即08H。 MOV AL,08H ;中斷類型號的高5位 O

13、UT 21H,AL ;寫入ICW2的端口(A0=1)接到IR5上高5位中斷類型號產(chǎn)生的示意圖:ICW2CPU8259AIR0IR1IR2IR3IR4IR5IR6IR7編碼000001010011100101110111由硬件完成由軟件完成中斷類型號 中斷級聯(lián)方式的設(shè)定(ICW3)(1)級聯(lián)的結(jié)構(gòu)形式ICW3的格式: a.主片ICW3主片ICW31S7S6S5S4S3S2S1S0A0D7D6D5D4D3D2D1D0表示主片的哪個IRi上接有從片的中斷請求INTb.從片ICW3從片ICW3A0D7D6D5D4D3D2D1D01ID2ID1ID0從片標志碼 ID2ID0有8種編碼,表示從片的INT接

14、到 主片的哪一個IRi位。以下圖連接為例(82C59在PC微機上的級聯(lián))PC機的82C59采用級聯(lián)方式,且從片的INT接到主片的IRQ2上。程序設(shè)計為(從片的請求線INT連到主片的IRQ2):主片的ICW3=00000100B=04HMOV AL,04H;主片的ICW3OUT 21H,AL 從片的ICW3=00000010B=02H MOV AL,02H ;從片的ICW3 OUT 0A1H,AL;從片的地址由譯碼決定(0A1H為從片的端口地址) 優(yōu)先級:IR0,1,8-15,3,4,5,6,7 中斷優(yōu)先級和中斷結(jié)束設(shè)定(ICW4)A0=1lD5-D7高3位為0lD4(SFNM)=1 主片為特定

15、完全嵌套方式 =0 一般完全嵌套方式lD3(BUF) =1 為緩沖方式 ,SP/EN 作輸出 線,用于控制緩沖器的方向 =0 為非緩沖方式,SP/EN作輸入線ICW41000SFNMBUFM/S AEOI PMA0D7D6D5D4D3D2D1D0lD2(M/S)= 1 為緩沖方式下作主片 = 0 為緩沖方式下作從片 注:非緩沖方式(BUF=0時),則M/S無意義, 此時主/從由SP端決定。lD1(AEOI)=1 自動結(jié)束方式,ISR有自動 復位(清0)功能 =0 為非自動結(jié)束方式,要發(fā)EOI命令lD0(uPM)=1 用于16位以上微機 =0 用于8位微機例1. 某計算機的CPU為80286,而

16、8259A與系統(tǒng)總線之間采用緩沖器連接,非自動結(jié)束方式,只用1片8259A,正常完全嵌套。則:ICW4=00001101B=0DH相應的初始化程序段:MOV AL,0DH OUT 21H,AL初始化命令字的設(shè)置順序: 在系統(tǒng)運行之前,系統(tǒng)中的每個8259A必須按先后次序接收CPU的2-4個ICW初始化命令字進行初始化。初始化命令字必須按規(guī)定的順序?qū)懭搿?對PC微機,且多片,則主片與從片的ICW3要分別寫。l 操作命令字( OCW1-OCW3 ) 初始化后,即在程序執(zhí)行中,使用OCW命令對中斷控制器進行動態(tài)控制。 不需要按順序發(fā)送,在程序中任意安排。 中斷屏蔽操作(OCW1) 格式為:OCW11

17、M7M6M5M4M3M2M1M0A0D7D6D5D4D3D2D1D01=屏蔽 0=開放 例1. 要使中斷源IR3開放,其余被屏蔽。則:OCW1=11110111B=F7H相應的程序段: MOV AL,0F7H OUT 21H,AL ;OCW1內(nèi)容送端口此程序的最大問題是影響了其它中斷屏蔽為如果不影響其它中斷,應該寫成下列程序段: IN AL,21H ;回讀21H端口的內(nèi)容 AND AL,11110111BOUT 21H,ALOCW20A0RSLEOI00L2L1L0指定中斷等級特征位中斷結(jié)束D7D6D5D4D3D2D1D0優(yōu)先級輪換中斷等級編號 中斷結(jié)束控制和中斷優(yōu)先級排隊控制操作(OCW2)

18、其命令格式:中斷結(jié)束控制(OCW2格式中的D5) 當在初始化命令I(lǐng)CW4選用非自動結(jié)束方式時(即AEOI=0),就利用OCW2來控制中斷結(jié)束。當EOI=1,且: SL(D6)=0 不指定中斷結(jié)束(清最高優(yōu)先級) L2-L0=000,OCW2=00100000B SL(D6)=1,指定中斷結(jié)束(特殊屏蔽) L2-L0編碼是被指定的中斷等級 即:OCW2=01100L2L1L0例:指定IR5的中斷結(jié)束,則: OCW2=01100101B=65H作中斷優(yōu)先級排隊控制(OCW2格式中的D7)D7(R)1:需要輪換優(yōu)先權(quán),分二種 SL=0:優(yōu)先級固定方式,則為完全嵌套方式=1:優(yōu)先權(quán) 指定輪換=0:自動

19、輪換注意:中斷結(jié)束方式和中斷排隊方式都用OCW2命令來實現(xiàn),因此它的某些位功能相互交叉顯然比較復雜,但其作用只有兩個:l控制中斷結(jié)束方式l控制中斷優(yōu)先權(quán)輪換方式OCW2的組合功能:l 不指定EOI命令,全嵌套方式:00100000l 指定EOI命令,全嵌套方式: 01100L2L1L0l 不指定EOI方式,優(yōu)先級自動輪換:10100000l 自動EOI方式,優(yōu)先級自動輪換:10000000l 自動EOI方式,取消優(yōu)先級自動輪換:00000000l 指定EOI方式,優(yōu)先級特殊輪換:11100L2L1L0l 優(yōu)先級特殊輪換:11000L2L1L0lOCW3的功能 用來設(shè)置查詢中斷方式 設(shè)置特定屏蔽

20、方式 讀取8259A的IRR,ISR寄存器的內(nèi)容OCW3的格式:D7D6D5D4D3D2D1D0OCW30A0XESMMSMM01PRIS特定屏蔽允許特征位查詢方式讀ISR讀寄存器允許RR特定屏蔽設(shè)置不用讀狀態(tài)操作(OCW3格式中的D1 D0 ) 8259A內(nèi)部有3個寄存器IRR,ISR,IMR可供CPU讀出當前的內(nèi)容。(1)讀IRR和ISR的方法 CPU先指定讀哪個寄存器,然后再發(fā)IN指令,才能讀取ISR和IRR中的內(nèi)容。當8259A初始化后,自動指向讀IRR寄存器。(2)讀IMR的方法 不需要先發(fā)指定命令,只要讀奇地址端口。例:讀ISR寄存器的內(nèi)容分兩步: 通過OCW3指定被讀的寄存器 O

21、CW3為00001011B,表示下個RD要讀ISR 用IN指令讀出ISR寄存器的內(nèi)容程序段如下: MOV AL,0BH ;OCW3表示讀ISR OUT 20H,AL ;20H為OCW3的口地址 IN AL,20H ;讀ISR寄存器 8259A的編程命令的使用 8259A有兩類編程命令,初始化命令字ICW和操作命令字OCW。ICW: 在初始化里完成,必須按一定的順序。 在PC機中已有系統(tǒng)軟件完成,不需要 也不允許由用戶自己去設(shè)置。 一般只對于沒有配置完善操作系統(tǒng)的 單板微機上進行。OCW: 沒有一定的順序,一般也不安排在程 序的開頭。 在初始化后的任何時候進行動態(tài)控制。5.9 用戶對系統(tǒng)中斷資源

22、的使用1、修改中斷向量當使用PC機的某個中斷號時,需分三步修改: 用35H號功能,獲取原中斷向量。 用25H號功能,設(shè)置新中斷向量,取代原中斷向量。 新服務程序執(zhí)行完畢后,利用25H號功能恢復原中斷向量。MOV AH,35H;取原中斷向量MOV AL,60H;60H為原中斷號INT 21HMOV AX,ESMOV OLD_SEG,AX ;保存原中斷向量MOV OLD_OFF,BX例:修改中斷號為60H的中斷向量。 第步:獲取原中斷向量第步:置入新的中斷向量MOV DX,SEG INTRnew ;INTRn是新中斷程序的入口地址MOV DS,DX ;DS指向新中斷程序段地址MOV DX,OFFS

23、ET INTRnew ;DX指向新中斷程序偏移地址MOV AL,60H ;中斷號MOV AH,25H ;設(shè)置新中斷向量INT 21H第步:置入原來的中斷向量MOV DX,OLD_SEGMOV DS,DX ;DS指向舊中斷程序段址MOV DX,OLD_OFF ;DX指向舊中斷程序偏移地址MOV AH,25H ;恢復舊的中斷向量MOV AL,60H ;中斷號INT 21H例:在PC機環(huán)境下,中斷向量的修改方法。l 在數(shù)據(jù)段中定義DATA SEGMENT OLD_SEGDW?;原中斷服務程序的段地址 OLD_OFFDW?;原中斷服務程序的偏移地址DATA ENDSl在代碼段寫程序CODE SEGME

24、NT MOV AH,35H ;取原中斷向量 MOV AL,60H ;60H為原中斷號 INT 21H MOV OLD_SEG,ES ;保存原中斷向量 MOV OLD_OFF,BX MOV AH,25H ;設(shè)置新中斷向量 MOV AL,60H ;中斷號 MOV DX,SEG INTRn ;INTRn是新中斷程序的入口 MOV DS,DX ;DS指向新中斷程序段地址 MOV DX,OFFSET INTRn ;DX指向新中斷程序偏移地址 INT 21H ;程序主體 MOV AH,25H ;恢復舊的中斷向量 MOV AL,60H ;中斷號 MOV DX,OLD_SEG MOV DS,DX ;DS指向舊

25、中斷程序段址 MOV DX,OLD_OFF ;DX指向舊中斷程序偏移地址 INT 21H MOV AH,4CH INT 21HINTRn PROC PUSHAX ;中斷服務程序的主體 POP AX IRET CODE ENDS 2、中斷的屏蔽與開放開放IRQ2中斷的方法: IN AL,21H ;讀IMR寄存器 AND AL,0FBH ;對應IRQ2的位置0 OUT 21H,AL關(guān)閉IRQ2中斷的方法: IN AL,21H ;讀IMR寄存器 OR AL,04H ;對應IRQ2的位置1 OUT 21H,AL3、編寫中斷服務程序中斷程序編寫應注意下列格式INT-P PROC FARPUSH ;保護寄存器的內(nèi)容 PUSH STI ;中斷服務程序體 MOV AL,20H ;不指定中斷結(jié)束方式 OUT 20H,AL ;發(fā)EOI命令,對微機 POP ;恢復寄存器的內(nèi)容 POP IRETINT-P ENDP例:中斷用于數(shù)據(jù)采集系統(tǒng) 電

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論