微機(jī)原理與單片機(jī)應(yīng)用課件:第6章 中斷系統(tǒng)_第1頁(yè)
微機(jī)原理與單片機(jī)應(yīng)用課件:第6章 中斷系統(tǒng)_第2頁(yè)
微機(jī)原理與單片機(jī)應(yīng)用課件:第6章 中斷系統(tǒng)_第3頁(yè)
微機(jī)原理與單片機(jī)應(yīng)用課件:第6章 中斷系統(tǒng)_第4頁(yè)
微機(jī)原理與單片機(jī)應(yīng)用課件:第6章 中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩92頁(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)介

1、(微型計(jì)算機(jī)中斷系統(tǒng))4.4.3 中斷操作1 概述 一、中斷概念 中斷就是CPU暫停執(zhí)行現(xiàn)行的程序,轉(zhuǎn)而處理隨機(jī)事件,處理完畢后再回到被中斷的程序繼續(xù)執(zhí)行,這一過(guò)程稱為中斷。中斷系統(tǒng)具有以下基本功能: 為了加強(qiáng)中斷系統(tǒng)的靈活性,對(duì)于各種中斷請(qǐng)求,應(yīng)該具有屏蔽和開(kāi)放的功能,使得程序員可以靈活控制。 具有“中斷優(yōu)先級(jí)別”的判斷和控制功能,即能實(shí)現(xiàn)中斷源排隊(duì)。當(dāng)有多個(gè)中斷源申請(qǐng)中斷時(shí),能根據(jù)事先的中斷優(yōu)先級(jí)別設(shè)定及時(shí)響應(yīng)中斷。 能實(shí)現(xiàn)中斷嵌套,即高優(yōu)先級(jí)別的中斷能中斷較低優(yōu)先級(jí)別的中斷。 系統(tǒng)響應(yīng)中斷后,能自動(dòng)進(jìn)行中斷處理。當(dāng)中斷處理完后能自動(dòng)返回。中斷主要解決的問(wèn)題1實(shí)現(xiàn)分時(shí)操作,解決CPU與外部

2、設(shè)備速度上的差異,提高計(jì)算機(jī)系統(tǒng)的工作效率,達(dá)到并行處理的目的。2處理隨機(jī)的異常事件,如運(yùn)算結(jié)果溢出、機(jī)器故障等。3實(shí)現(xiàn)實(shí)時(shí)操作,在控制系統(tǒng)中許多信號(hào)是隨機(jī)產(chǎn)生的,只有通過(guò)中斷系統(tǒng)才能實(shí)時(shí)的對(duì)它們進(jìn)行處理,避免信息的丟失。8086中斷系統(tǒng)8086的中斷系統(tǒng)采用向量中斷機(jī)制能夠處理256個(gè)中斷用中斷類型號(hào)0255區(qū)別可屏蔽中斷還需要借助專用中斷控制器Intel 8259A實(shí)現(xiàn)優(yōu)先權(quán)管理中斷源:引發(fā)CPU中斷的來(lái)源稱為中斷源 中斷響應(yīng):接受中斷請(qǐng)求中斷向量表:存放中斷服務(wù)子程序入口地址的內(nèi)存區(qū)域(00000H003FFH)中斷優(yōu)先權(quán):有多個(gè)中斷源請(qǐng)求中斷時(shí), 系統(tǒng)響應(yīng)中斷申請(qǐng)的優(yōu)先級(jí)別中斷屏蔽 :

3、由軟件設(shè)置,可使中斷請(qǐng)求不被響應(yīng),稱為中斷屏蔽。二、中斷分類非屏蔽中斷源中斷邏輯INTO指令單步中斷除法錯(cuò)誤INT n指令CPUINTRNMI可屏蔽中斷源8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7外設(shè)中斷源 INTA8086中斷源內(nèi)部中斷外部中斷1. 外部中斷 外部中斷是由于CPU外部提出中斷請(qǐng)求引起的程序中斷,也稱為硬件中斷。非屏蔽中斷(不可屏蔽中斷):類型號(hào)為2外部通過(guò)非屏蔽中斷NMI請(qǐng)求,必須響應(yīng)非屏蔽中斷主要用于處理系統(tǒng)的意外或故障可屏蔽中斷:類型號(hào)來(lái)自中斷控制器外部通過(guò)可屏蔽中斷INTR請(qǐng)求,由IF控制是否響應(yīng);CPU響應(yīng)時(shí)產(chǎn)生INTA信號(hào)可屏蔽中斷主要用于

4、CPU與外設(shè)交換數(shù)據(jù)中斷標(biāo)志位IF(在FR寄存器內(nèi))的狀態(tài)IF0:可屏蔽中斷不會(huì)被響應(yīng)關(guān)中斷、禁止中斷、中斷屏蔽系統(tǒng)復(fù)位,使IF0任何一個(gè)中斷被響應(yīng)后,首先應(yīng)使IF0執(zhí)行指令CLI,使IF0IF1:可屏蔽中斷會(huì)被響應(yīng)開(kāi)中斷、允許中斷、中斷開(kāi)放執(zhí)行指令STI,使IF1執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)2、 內(nèi)部中斷 內(nèi)部中斷是由于CPU內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷,所以又稱軟件中斷。內(nèi)部中斷的中斷類型號(hào)已定(內(nèi)部中斷是不可屏蔽的)除法錯(cuò)中斷:類型號(hào)為0指令中斷:類型號(hào)為n斷點(diǎn)中斷:類型號(hào)為3溢出中斷:類型號(hào)為4單步中斷:類型號(hào)為1軟件中斷由中斷指令I(lǐng)NT引起的中斷由CPU運(yùn)算錯(cuò)誤引起的中斷由D

5、ebug設(shè)置的中斷2 中斷處理過(guò)程可屏蔽中斷處理流程中斷過(guò)程申請(qǐng)響應(yīng)處理中斷申請(qǐng) 當(dāng)需要CPU中斷以處理一些緊急事件,向CPU發(fā)出的請(qǐng)求。引發(fā)CPU中斷的來(lái)源稱為中斷源 。中斷響應(yīng) 為了及時(shí)處理中斷,中斷系統(tǒng)(或中斷裝置)定時(shí)查詢有無(wú)中斷申請(qǐng),若有且未屏蔽,則引出處理中斷的程序稱為該中斷被響應(yīng)。中斷處理 執(zhí)行相應(yīng)的中斷處理程序(例行中斷服務(wù)子程序)。一、CPU響應(yīng)中斷過(guò)程 CPU響應(yīng)I/O中斷的三個(gè)條件: (1)外設(shè)提出中斷申請(qǐng) (2)本中斷位未被屏蔽 (3)中斷允許(IF=1)NMIN內(nèi)部中斷INTRTF=1中斷響應(yīng)周期讀中斷類型號(hào)下條指令現(xiàn)行指令I(lǐng)F1NNNNYYYYY中斷響應(yīng)過(guò)程(P10

6、3)Y還有NMITEMP1標(biāo)志寄存器入棧TEMPTF,IFTF0CS:IP入棧獲取中斷向量執(zhí)行服務(wù)程序彈出CS:IP彈出標(biāo)志寄存器返回被中斷程序NNY中斷響應(yīng)過(guò)程二、 8086的中斷向量表確定中斷源:查詢中斷矢量中斷要解決的問(wèn)題確定中斷源找到對(duì)應(yīng)中斷處理程序的入口地址1.8086的中斷向量表中斷向量:中斷服務(wù)程序的入口地址(首地址)邏輯地址含有段地址CS和偏移地址IP(32位)每個(gè)中斷向量的低字是偏移地址、高字是段地址,需占用4個(gè)字節(jié)8086微處理器從物理地址00000H開(kāi)始,依次安排各個(gè)中斷向量。256個(gè)中斷占用1KB區(qū)域,就形成中斷向量表類型號(hào)為N的中斷向量的物理地址N48086的中斷向量

7、表中斷向量在中斷向量表中的首地址中斷類型號(hào)4除數(shù)為0中斷單步中斷非屏蔽中斷斷點(diǎn)中斷溢出中斷NMI、INTR、單步和除法錯(cuò)中斷同時(shí)產(chǎn)生時(shí)的中斷處理過(guò)程19C類型67H中斷向量1A050201A200A01A4類型69H中斷向量CLIPUSH DS : :POP DSSTIIRET中斷處理程序A000:2050。INT 68HMOV AX,0。向量地址68H41A0HIPCS2050A000指令中斷操作過(guò)程例子2.中斷向量(中斷入口地址)的設(shè)置設(shè)置中斷向量 AL=中斷類型號(hào) DS:DX=中斷服務(wù)程序入口地址 AH=25H ;系統(tǒng)功能號(hào),設(shè)置中斷向量 INT 21H ;DOS系統(tǒng)功能調(diào)用取中斷向量

8、AL=中斷類型號(hào) AH=35H ;系統(tǒng)功能號(hào),取中斷向量 INT 21H ;DOS系統(tǒng)功能調(diào)用返回:ES:BX=中斷服務(wù)程序入口地址方法一:MOV AX,SEG INTRAD ;設(shè)置中斷向量DS:DXMOV DS,AXMOV DX,OFFSET INTRADMOV AL,N ;AL=中斷號(hào)MOV AH,25H;系統(tǒng)功能號(hào)INT 21H;系統(tǒng)功能調(diào)用:INTRAD PROC FAR: IRETINTRAD ENDP MOV AX,0 MOV ES,AX ;中斷向量的段基址ES=0 MOV DI,N*4 ;找到中斷向量地址,N是中斷號(hào) MOV AX,OFFSET INTRAD;求中斷子程序的段內(nèi)偏

9、移地址 CLD;向上(地址增大的方向)依次寫操作 STOSW ;寫入偏移量(ES:DI),DI-(AX) MOV AX,SEG INTRAD ;求中斷子程序的段基址 STOSW ;寫入段基址, DI+2-(AX) STI ;(IF)=1,開(kāi)中斷 :INTRAD PROC FAR ;中斷子程序(過(guò)程),可段間調(diào)用 : IRET ;中斷返回(可段間返回)INTRAD ENDP方法二:3.中斷類型號(hào)(確定中斷源)的獲取對(duì)除法錯(cuò)、單步中斷、NMI、斷點(diǎn)中斷、溢出中斷,CPU自動(dòng)提供中斷類型號(hào)04。對(duì)INT n,中斷類型號(hào)由n確定。對(duì)I/O中斷(由INTR引腳引入),通過(guò)中斷控制器8259A獲得中斷類型

10、號(hào)。處理中斷的主程序的編寫方法1主程序中的初始化 (1)設(shè)置中斷向量。 (2)設(shè)置8259A的中斷屏蔽寄存器的中斷屏蔽位。 (3)設(shè)置CPU中斷允許位標(biāo)志IF(開(kāi)中斷STl)。2硬件(外設(shè)接口)和CPU自動(dòng)完成中斷響應(yīng) (1)外設(shè)接口向CPU的INTR端發(fā)中斷請(qǐng)求。 (2)當(dāng)前指令執(zhí)行完后,CPU發(fā)兩個(gè)中斷響應(yīng)脈沖信號(hào)INTA給外設(shè)接口。 (3)CPU取中斷類型號(hào)n。 (4)CPU自動(dòng)將當(dāng)前FR、CS、IP內(nèi)容入棧保護(hù)。 (5)清除IF、TF(禁止外部中斷和單步中斷)。 (6)從中斷向量表中取(4n)地址中內(nèi)容IP,取(4n2)地址中內(nèi)容CS。 (7)轉(zhuǎn)向中斷服務(wù)子程序。 注意: (1)對(duì)重復(fù)

11、前綴的指令(如REP MOVSB)作為一條指令處理。執(zhí)行一次重復(fù)前綴和串指令即可響應(yīng)中斷,而不是把串操作全部執(zhí)行完。 (2)遇到開(kāi)中斷指令STI和中斷返回指令I(lǐng)RET,要在這兩條指令執(zhí)行完后,再執(zhí)行一條指令才能響應(yīng)中斷。 (3)CPU自動(dòng)清除IF及TF位,使CPU進(jìn)入中斷服務(wù)程序后,默認(rèn)不允許再響應(yīng)新的外部中斷;如果在中斷服務(wù)程序中還允許外部中斷進(jìn)入,則在中斷服務(wù)程序中必須再開(kāi)中斷。三、中斷服務(wù)子程序中斷服務(wù)子程序的結(jié)構(gòu)形式:1.保護(hù)現(xiàn)場(chǎng)2.開(kāi)中斷,IF=1,允許中斷嵌套3.執(zhí)行中斷處理程序4.關(guān)中斷,IF=0,禁止其他中斷請(qǐng)求進(jìn)入5.發(fā)中斷結(jié)束命令EOI6.恢復(fù)現(xiàn)場(chǎng)7.中斷返回IRET內(nèi)部中

12、斷服務(wù)程序編寫內(nèi)部中斷服務(wù)程序與編寫子程序類似利用過(guò)程定義偽指令PROC/ENDP保護(hù)完現(xiàn)場(chǎng)后要用開(kāi)中斷指令STI置IF=1恢復(fù)現(xiàn)場(chǎng)前要用關(guān)中斷指令CLI置IF=0最后用中斷返回指令I(lǐng)RET通常采用寄存器傳遞參數(shù)主程序需要調(diào)用中斷服務(wù)程序調(diào)用前,需要設(shè)置中斷向量利用INT n指令調(diào)用中斷服務(wù)程序例:內(nèi)部中斷服務(wù)程序編寫80H號(hào)指令中斷服務(wù)程序功能:顯示以“0”結(jié)尾字符串的功能利用顯示器功能需調(diào)用INT 21H的2號(hào)功能模塊字符串緩沖區(qū)首地址為入口參數(shù)DS:DX(段地址:偏移地址)傳遞參數(shù)intoff dw ? ;保留一個(gè)字的內(nèi)存intseg dw ? ;保留一個(gè)字的內(nèi)存intmsg db A

13、Instruction Interrupt ! db 0dh,0ah,0 : : mov al,80h ;保存原有中斷向量至(ES:BX) mov ah,35h ;其中斷類型號(hào)為80H int 21h ;系統(tǒng)功能(35H)調(diào)用 mov intoff,bx ;保存偏移地址 mov intseg,es;保存段基地址 push ds ;設(shè)置中斷類型號(hào)為80H的中斷向量 mov dx,offset new80h mov ax,seg new80h mov ds,ax ;中斷入口地址保存至(DS:DX) mov ax,2580h;(AH)=25H,(AL)=80H int 21h pop dsmov d

14、x,offset intmsg int 80h ;調(diào)用中斷服務(wù)程序mov dx,intoffmov ax,intsegmov ds,axmov ax,2580hint 21hmov ax,4c00hint 21h : : 恢復(fù)原來(lái)的中斷向量New80h proc far push ax ;保護(hù)寄存器 push si sti ;開(kāi)中斷 mov si,dxnew1: mov al,si cmp al,0 jz new2 mov dl,al mov ah,02h 顯示單個(gè)字符 int 21h inc si jmp new1new2: cli ;關(guān)中斷 pop si ; 恢復(fù)寄存器 pop ax ir

15、et; 中斷返回New80h endpintoff dw ?intseg dw ?intmsg db A Instruction Interrupt ! db 0dh,0ah,0 A Instruction Interrupt !DXsiD0D7第一個(gè)INTA周期T1 T2 T3 T4ALECLK 第二個(gè)INTA周期T1 T2 T3 T4 INTALOCKn中斷響應(yīng)總線周期時(shí)序圖中斷類型號(hào)四、中斷響應(yīng)時(shí)序執(zhí)行一條指令中斷?關(guān)中斷保護(hù)現(xiàn)場(chǎng)屏蔽本級(jí)和低級(jí)中斷開(kāi)中斷中斷服務(wù)程序關(guān)中斷恢復(fù)現(xiàn)場(chǎng)返回取下一條指令否是多個(gè)中斷源中斷流程圖3 中斷優(yōu)先級(jí)和中斷嵌套一、中斷優(yōu)先級(jí)IBM PC機(jī)優(yōu)先級(jí) 內(nèi)部中斷除

16、法錯(cuò)中斷指令中斷溢出中斷 不可屏蔽中斷 可屏蔽中斷 單步中斷高低如何實(shí)現(xiàn)優(yōu)先級(jí)響應(yīng)?1.軟件查詢中斷優(yōu)先級(jí)A0A15鎖存器INTR三態(tài)緩沖器譯碼 8001HD0D7中斷0中斷1中斷2IOR中斷查詢接口 :MOV DX,8001HIN AL,DXTEST AL,80HJNZ SEV0TEST AL,40HJNZ SEV1TEST AL,20HJNZ SEV2TEST AL,10HJNZ SEV3TEST AL,08HJNZ SEV4 :菊花鏈優(yōu)先查詢法2.硬件查詢優(yōu)先方式菊花鏈法1:有0:無(wú)或0有效中斷請(qǐng)求寄存器中斷屏蔽寄存器IR0IR7優(yōu)先級(jí)管理邏輯中斷服務(wù)寄存器中斷類型寄存器 由中斷源提供3

17、.矢量中斷優(yōu)先級(jí)8253定時(shí)器鍵盤未用異步通信卡(輔)異步通信卡(主)硬盤軟盤并行打印機(jī)21H二、中斷嵌套IR7IR6IR5IR4IR3IR2IR1IR0低高4 可編程中斷控制器8259A一、功能Intel 8259A是可編程中斷控制器PIC8259A的基本功能一片8259A可以管理8級(jí)中斷,可擴(kuò)展至64級(jí)每一級(jí)中斷都可單獨(dú)被屏蔽或允許在中斷響應(yīng)周期,可提供相應(yīng)的中斷類型號(hào)8259A設(shè)計(jì)有多種工作方式,可通過(guò)編程選擇二、 8259A的內(nèi)部結(jié)構(gòu)D7D0INTAINT中斷請(qǐng)求寄存器中斷屏蔽寄存器(IMR)數(shù)據(jù)總線緩沖器IR0IR7讀/寫控制邏輯級(jí)聯(lián)緩沖器比較器RDWRA0CSCAS0CSA1CAS

18、2SP/EN優(yōu)先權(quán)判別電路中斷服務(wù)寄存器控制邏輯ISRPRIRR8259A的讀寫功能CSRDWRA0D4D3操作指令01001CPUICW1OUT0101CPUICW2、ICW3、ICW4、OCW1010000CPUOCW2010001CPUOCW30010IRR/ISRCPUIN0011IMRCPU1數(shù)據(jù)總線高阻狀態(tài)11數(shù)據(jù)總線高阻狀態(tài)中斷控制中斷請(qǐng)求寄存器IRR保存8條外界中斷請(qǐng)求信號(hào)IR0IR7的請(qǐng)求狀態(tài)Di位為1表示IRi引腳有中斷請(qǐng)求;為0表示無(wú)請(qǐng)求中斷服務(wù)寄存器ISR保存正在被8259A服務(wù)著的中斷請(qǐng)求Di位為1表示IRi中斷正在服務(wù)中;為0表示沒(méi)有被服務(wù)中斷屏蔽寄存器IMR保存對(duì)

19、中斷請(qǐng)求信號(hào)IR的屏蔽狀態(tài)Di位為1表示IRi中斷被屏蔽(禁止);為0表示允許中斷級(jí)聯(lián)一個(gè)系統(tǒng)中,8259A可以級(jí)聯(lián),有一個(gè)主8259A,若干個(gè)從8259A級(jí)聯(lián)時(shí),主8259A的三條級(jí)聯(lián)線CAS0CAS2作為輸出線,連至每個(gè)從8259A的CAS0CAS2每個(gè)從8259A的中斷請(qǐng)求信號(hào)INT,連至主8259A的一個(gè)中斷請(qǐng)求輸入端IR主8259A的INT線連至CPU的中斷請(qǐng)求輸入端SP/EN在非緩沖方式下,規(guī)定該8259A是主片(SP1)還是從片(SP0)CS A0 D7-D0 INTA INT CAS0 從8259A CAS1 2 CAS2SP/EN IR7 IR0CS A0 D7-D0 INT

20、A INT CAS0 從8259A CAS1 1 CAS2SP/EN IR7 IR0CS A0 D7-D0 INTA INTCAS0CAS1 主8259ACAS2SP/EN IR7IR6 IR4IR3IR0地址總線(16)控制總線數(shù)據(jù)總線(8)中斷請(qǐng)求8259A級(jí)聯(lián)方式VCC三、 8259A的中斷管理方式完全嵌套方式 特殊全嵌套方式自動(dòng)循環(huán)方式特殊循環(huán)方式優(yōu)先權(quán)固定方式優(yōu)先權(quán)循環(huán)方式設(shè)置優(yōu)先權(quán)方式普通中斷結(jié)束方式特殊中斷結(jié)束方式自動(dòng)中斷結(jié)束方式非自動(dòng)中斷結(jié)束方式結(jié)束中斷處理方式屏蔽中斷源方式普通屏蔽方式特殊屏蔽方式中斷請(qǐng)求觸發(fā)方式邊沿觸發(fā)方式電平觸發(fā)方式數(shù)據(jù)線連接方式 緩沖方式 非緩沖方式中斷

21、查詢方式1. 8259A的編程結(jié)構(gòu)2. 優(yōu)先級(jí)設(shè)置方式完全嵌套方式8259A的中斷優(yōu)先權(quán)順序固定不變,從高到低依次為 IR0、IR1、IR2、IR7中斷請(qǐng)求后,8259A對(duì)當(dāng)前請(qǐng)求中斷中優(yōu)先權(quán)最高的中斷IRi予以響應(yīng),將其類型號(hào)送上數(shù)據(jù)總線,對(duì)應(yīng)ISR的Di位置位,至到中斷結(jié)束(ISR的Di位復(fù)位)在ISR的Di位置位期間,禁止再發(fā)生同級(jí)和低級(jí)優(yōu)先權(quán)的中斷,但允許高級(jí)優(yōu)先權(quán)中斷的嵌套特殊全嵌套方式 用于級(jí)聯(lián)方式,可響應(yīng)同級(jí)中斷請(qǐng)求。優(yōu)先權(quán)自動(dòng)循環(huán)方式優(yōu)先權(quán)特殊循環(huán)方式(程序指定初始的最低優(yōu)先級(jí))3. 中斷結(jié)束方式8259A利用中斷服務(wù)寄存器ISR判斷:某位為1,表示正在進(jìn)行中斷服務(wù);該位為0,

22、就是該中斷結(jié)束服務(wù)。中斷結(jié)束方式就是如何使ISR某位為0,普通EOI結(jié)束方式配合完全嵌套優(yōu)先權(quán)方式使用當(dāng)CPU用輸出指令往8259A發(fā)出普通中斷結(jié)束EOI命令時(shí),8259A就會(huì)把所有正在服務(wù)的中斷中優(yōu)先權(quán)最高的ISR位復(fù)位特殊EOI結(jié)束方式配合循環(huán)優(yōu)先權(quán)方式使用CPU在程序中向8259A發(fā)送一條特殊中斷結(jié)束命令,這個(gè)命令中指出了要清除哪個(gè)ISR位自動(dòng)EOI結(jié)束方式4.循環(huán)優(yōu)先級(jí)的循環(huán)方法循環(huán)優(yōu)先級(jí)方式,與中斷結(jié)束方式有關(guān),有三種循環(huán)方式:(1)普通EOI循環(huán)方式(2)特殊EOI循環(huán)方式(3)自動(dòng)EOI循環(huán)方式 中斷響應(yīng)后,在第二個(gè)INTA信號(hào)的后沿自動(dòng)將ISR寄存器中相應(yīng)位置0,并按普通EOI

23、循環(huán)方式改變個(gè)中斷的優(yōu)先級(jí)別。普通EOI循環(huán)方式原始狀態(tài)ISR內(nèi)容IR7IR6IR5IR4IR3IR2IR1IR000100100優(yōu)先級(jí)76543210處理完IR2ISR內(nèi)容00100000優(yōu)先級(jí)43210765處理完IR5ISR內(nèi)容00000000優(yōu)先級(jí)10765432特殊EOI循環(huán)方式初始狀態(tài)ISR內(nèi)容IR7IR6IR5IR4IR3IR2IR1IR001000100優(yōu)先級(jí)76543210執(zhí)行置位優(yōu)先權(quán)指令后ISR內(nèi)容01000100優(yōu)先級(jí)321076545.中斷源屏蔽方式普通屏蔽方式將IMR的Di位置1,則對(duì)應(yīng)的中斷IRi被屏蔽,該中斷請(qǐng)求不能從8259A送到CPU如果IMR的Di位置0,

24、則允許IRi中斷產(chǎn)生特殊屏蔽方式將IMR的Di位置1,對(duì)應(yīng)的中斷IRi被屏蔽的同時(shí),使ISR的Di位置0(開(kāi)放低級(jí)別的中斷請(qǐng)求)6. 中斷請(qǐng)求引入方式邊沿觸發(fā)方式8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào)電平觸發(fā)方式中斷請(qǐng)求端出現(xiàn)的高電平是有效的中斷請(qǐng)求信號(hào)中斷查詢方式 OCW3、查詢字(P241、P242)四、8259A的編程 8259A分為初始化編程和操作編程兩部分,初始化編程是由CPU向8259A輸入初始化命令字,這是芯片進(jìn)行正常工作前必須做的,使8259A處于一個(gè)規(guī)定的基本工作方式上。初始化命令字由ICW1ICW4組成。8259A在任何情況下,從A0=0的端口接收到一個(gè)D4

25、=1的命令就是ICW1,緊接著的命令就是ICW2ICW4,進(jìn)入初始化狀態(tài)后,芯片就可以接收來(lái)自IR端口的中斷請(qǐng)求,準(zhǔn)備接收CPU寫入的操作命令字OCW,以選擇不同的操作方式。OCW可以隨時(shí)寫入,這些字有各自的標(biāo)志來(lái)引導(dǎo)進(jìn)入相應(yīng)的寄存器。還可以讀取8259A的信息,以便了解它的工作狀態(tài)初始命令字完成的功能設(shè)定中斷請(qǐng)求信號(hào)觸發(fā)形式,電平或邊沿觸發(fā)設(shè)定單片或級(jí)聯(lián)設(shè)定中斷類型號(hào)基值,即IR0對(duì)應(yīng)的中斷類型號(hào)設(shè)定優(yōu)先級(jí)設(shè)置方法設(shè)定中斷處理結(jié)束時(shí)的結(jié)束操作方式1. 初始化命令字ICW規(guī)定芯片的基本工作方式初始化命令字ICW最多有4個(gè)8259A在開(kāi)始工作前必須寫入必須按照ICW1ICW4順序?qū)懭隝CW1和I

26、CW2是必須送的ICW3和ICW4由工作方式?jīng)Q定ICW1 芯片控制初始化1LTIMSNGLIC4D7D6D5D4D3D2D1D0表示可以任意為1為0都可以(建議為0)1只能為1,作為標(biāo)志中斷觸發(fā)方式:LTIM1,電平觸發(fā)方式LTIM0,邊沿觸發(fā)方式規(guī)定單片或級(jí)聯(lián)方式:SNGL1,單片方式SNGL0,級(jí)聯(lián)方式是否寫入ICW4IC41,要寫入ICW4IC40,不寫入ICW4A00ICW2 設(shè)置中斷類型號(hào)T7T6T5T4T3D7D6D5D4D3D2D1D0中斷類型號(hào)的低3位由8259A自動(dòng)確定:IR0為000、IR1為001、IR7為111A01T7T3為中斷類型號(hào)的高5位由程序設(shè)定ICW3 僅用于

27、級(jí)聯(lián)方式S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0主片8259A:Si1對(duì)應(yīng)IRi接有從片; 否則IRi沒(méi)有連接從片從片8259A:ID0ID2編碼說(shuō)明從片INT引腳接到主片哪個(gè)IR引腳A01ICW4 方式控制000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:1:特殊全嵌套方式0:非特殊完全嵌套方式數(shù)據(jù)線的緩沖方式:1:緩沖方式0:非緩沖方式 緩沖方式主片/從片選擇:1:主片0:從片中斷結(jié)束方式:1:自動(dòng)中斷結(jié)束0:非自動(dòng)中斷結(jié)束A01BUF、M/S、SP/EN之間關(guān)系BUF位M/S位SP/EN端0:非緩沖 方式無(wú)意義

28、SP有效(輸入信號(hào))SP=1SP=0主8259A從8259A1:緩沖方式1:主8259A0:從8259AEN有效(輸出信號(hào))EN=1EN=0CPU8259A8259ACPU微處理器類型:1:16位80 x860:8位8080/8085數(shù)據(jù)線連接方式緩沖方式8259A的數(shù)據(jù)線需加緩沖器予以驅(qū)動(dòng)8259A把SP/EN引腳作為輸出端,輸出允許信號(hào),用以鎖存或開(kāi)啟緩沖器非緩沖方式SP/EN引腳為輸入端若8259A級(jí)聯(lián),由其確定是主片或從片 mov al,11h ;寫入ICW1out 20h,al ;邊沿觸發(fā)、級(jí)聯(lián) ; 8086/8088mov al,08h ;寫入ICW2out 21h,al mov

29、al,04h ;寫入ICW3out 21h,al ;IR2接從片mov al,1h ;寫入ICW4out 21h,al ;非特殊完全嵌套方式 ;非緩沖方式,M/S無(wú)意義 ;非自動(dòng)EOI方式 ;8086/8088配置1LTIMSNGLIC4例:8259初始化(主片)0 0 0 1 0 0 0 1T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID0ICW4(方式控制)ICW3 (主/從)ICW2 (中斷類型號(hào))0 0 0 0 1 0 0 0ICW1 (芯片控制)0 0 0 0 0 1 0 00 0 0 0 0 0 0 1mov al,1

30、1h ;寫入ICW1out 0a0h,al ;沿觸發(fā)、級(jí)聯(lián) ; 8086/8088mov a1,70h ;寫入ICW2out 0alh,almov al,02h ;寫入ICW3out 0a1h,al ; 接主片的IR2mov al, 01h ;寫入ICW4out 0a1h,al ;非特殊完全嵌套方式 ;非緩沖方式,M/S無(wú)意義 ;非自動(dòng)EOI方式 ;8086/8088配置例:8259初始化(從片)1LTIMSNGLIC40 0 0 1 0 0 0 1T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID0ICW4(方式控制)ICW3 (

31、主/從)ICW2 (中斷類型號(hào))0 1 1 1 0 0 0 0ICW1 (芯片控制)0 0 0 0 0 0 1 00 0 0 0 0 0 0 12. 操作命令字OCWCPU在對(duì)8259A初始化編程后,8259A就進(jìn)入工作狀態(tài),可以接受IRi輸入的中斷。OCW可在這以后的任何時(shí)候?qū)懭?以選擇不同的操作方式。OCW共有3個(gè):OCW1OCW3寫入時(shí)沒(méi)有順序要求,需要哪個(gè)OCW就寫入那個(gè)OCWOCW有各自的標(biāo)志,引導(dǎo)進(jìn)入相應(yīng)的寄存器操作命令字完成的功能設(shè)定中斷屏蔽設(shè)定中斷優(yōu)先級(jí)次序中斷結(jié)束方式等OCW1 屏蔽命令M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0內(nèi)容寫入中斷屏蔽寄存器IM

32、RDiMi對(duì)應(yīng)IRi,為1禁止IRi中斷;為0允許IRi中斷。各位互相獨(dú)立。A01OCW2 控制中斷結(jié)束、優(yōu)先權(quán)循環(huán)等RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用產(chǎn)生中斷結(jié)束EOI命令和改變優(yōu)先權(quán)順序001:普通EOI方式011:特殊EOI方式101:普通EOI循環(huán)方式111:特殊EOI循環(huán)方式000:自動(dòng)EOI循環(huán)(復(fù)位)100:自動(dòng)EOI循環(huán)(置位)110:置位優(yōu)先權(quán)命令010:無(wú)效L2L0的3位編碼指定IR引腳 A00標(biāo)識(shí)見(jiàn)p240OCW3 中斷屏蔽和讀取寄存器狀態(tài)0ESMMSMM01PRRRISD7D6D5D4D3D2D1D0設(shè)置中斷屏蔽方式0:

33、無(wú)效10:特殊屏蔽方式復(fù)位11:特殊屏蔽方式置位規(guī)定隨后讀取的狀態(tài)字含義10:讀IRR11:讀ISRA00標(biāo)識(shí)1:查詢8259狀態(tài)0:不查詢特殊屏蔽方式:只屏蔽本級(jí)中斷,允許高級(jí)或低級(jí)中斷進(jìn)入讀取狀態(tài)字CPU可讀出IRR、ISR、IMR和查詢字A0為低,由OCW3中RR和RIS位設(shè)定讀取IRR或ISR,由OCW3中P位設(shè)定讀取查詢字而A0引腳為高電平時(shí)讀取的都是IMR查詢字反映8259A是否有中斷請(qǐng)求中斷查詢方式用于多于64級(jí)中斷的場(chǎng)合。查詢字IRW2W1W0D7D6D5D4D3D2D1D0中斷位IR為1,有外設(shè)請(qǐng)求中斷W2W0的編碼為當(dāng)前中斷請(qǐng)求的最高優(yōu)先級(jí)A00命令字和狀態(tài)字的區(qū)別方法 利

34、用讀寫信號(hào)區(qū)別寫入的控制寄存器和讀出的狀態(tài)寄存器 利用地址信號(hào)區(qū)別不同I/O地址的寄存器 由控制字中的標(biāo)志位說(shuō)明是哪個(gè)寄存器 由芯片內(nèi)順序控制邏輯按一定順序識(shí)別不同的寄存器 由前面的控制字決定后續(xù)操作的寄存器五、8259A的中斷級(jí)聯(lián)當(dāng)I/O中斷源多于8個(gè)時(shí),可以采用級(jí)聯(lián)方式。硬件連接ICW的設(shè)置中斷處理結(jié)束,要分別給主、從片發(fā)EOI。CS A0 D7-D0 INTA INT CAS0 從8259A CAS1 2 CAS2SP/EN IR7 IR0CS A0 D7-D0 INTA INT CAS0 從8259A CAS1 1 CAS2SP/EN IR7 IR0CS A0 D7-D0 INTA I

35、NTCAS0CAS1 主8259ACAS2SP/EN IR7IR6 IR4IR3IR0地址總線(16)控制總線數(shù)據(jù)總線(8)中斷請(qǐng)求8259A級(jí)聯(lián)方式VCC級(jí)聯(lián)與單片初始化的區(qū)別:級(jí)聯(lián)時(shí),ICW1中SNGL=0;單片SNGL=1級(jí)聯(lián)時(shí),要求設(shè)置ICW3(主從片都要設(shè))級(jí)聯(lián)時(shí),優(yōu)先級(jí)一般設(shè)置為特殊完全嵌套工作方式,即ICW4中SFNM=1例 一個(gè)8259A主片,連接2片8259A從片,從片分別經(jīng)主片IR3和IR6引腳接入,則系統(tǒng)中優(yōu)先級(jí)排列次序如下:主片:IR0、IR1、IR2 從片:IR0、IR1、IR7 主片:IR4、IR5 從片:IR0、IR1、IR7 主片:IR7中斷處理結(jié)束要發(fā)兩個(gè)EO

36、I命令RD WR CS A0 D7-D0 INTA INT CAS0 從8259A CAS1 CAS2SP/EN IR7IR6IR5IR4 IR0CS A0 D7-D0 INTA INT RD WRCAS0CAS1 主8259ACAS2SP/EN IR7IR6IR5IR4 IR3IR2IR1IR08259A級(jí)聯(lián)方式VCC 38259A級(jí)聯(lián)使用例子(243頁(yè)) 某系統(tǒng)中兩片8259A采用中斷級(jí)聯(lián)方式組成中斷系統(tǒng),從片的INT端連8259A主片的IR3端。若當(dāng)前8259A主片從IR1、IR5,端引入兩個(gè)中斷請(qǐng)求,中斷類型號(hào)為31H、35H。中斷服務(wù)程序的段基址為1000H,偏移地址分別為2000H

37、及3000H。8259A從片由IR4、IR5端引入兩個(gè)中斷請(qǐng)求,中斷類型號(hào)為44H和45H,中斷服務(wù)程序段基址為2000H,偏移地址為3600H及4500H。000C40020000C60010:000D40030000D60010:00110003600120020001140045001160020IP 中斷類型號(hào)31HCS 入口地址IP 中斷類型號(hào)35HCS 入口地址IP 中斷類型號(hào)44HCS 入口地址IP 中斷類型號(hào)45HCS 入口地址主8259A引入的中斷請(qǐng)求從8259A引入的中斷請(qǐng)求中斷入口地址表(1)中斷向量形成:將4個(gè)中斷入口地址寫入中斷向量表。MOV AX,1000H ;送入

38、段地址MOV DS,AXMOV DX,2000H ;送入偏移地址MOV AL,31H ;中斷類型號(hào)3lHMOV AH,25HINT 21HMOV DX,3000HMOV AL, 35H ;中斷類型號(hào)35HINT 21HMOV AX,2000HMOV DS,AXMOV DX,3600HMOV AL,44H ;中斷類型號(hào)44HMOV AH,25HINT 21HMOV DX,4500HMOV AL,45H ;中斷類型號(hào)45HINT 21H(2)主片8259A初始化編程:8259A主片端口地址為FFC8H和FFC9H。MOV AL,11H ;定義ICW1,主片8259A級(jí)聯(lián)使用,邊沿觸發(fā)MOV DX,

39、0FFC8HOUT DX,ALMOV AL,30H ;定義ICW2,中斷類型號(hào)30H37HMOV DX,0FFC9HOUT DX,ALMOV AL,08H ;定義ICW3,IR3端接從片8259A的INT端OUT DX,ALMOV AL,11H ;定義ICW4,特殊全嵌套方式,非緩沖方式,OUT DX,AL ;非自動(dòng)EOI結(jié)束方式MOV AL,0D5H ;定義OCW1,允許IR1,IR3,IR5中斷,其余端OUT DX,AL ;口中斷請(qǐng)求屏蔽MOV AL,20H ;定義OCW2,普通EOI結(jié)束方式MOV DX,0FFC8HOUT DX,AL1LTIMSNGLIC40 0 0 1 0 0 0 1

40、T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID00 0 1 1 0 0 0 0M7M6M5M4M3M2M1M0RSLEOI00L2L1L0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0(3)8259A從片初始化編程片,從片8259A的端口地址為FFCAH和FFCBH。MOV AL , 11H ;定義ICW1,級(jí)聯(lián)使用邊沿觸發(fā),要設(shè)置ICW4MOV DX , 0FFCAHOUT DX , ALMOV AL , 40H ;定義ICW2,引入中斷類型號(hào)為40H47HMOV DX , 0FFCBHOUT DX , AL

41、MOV AL , 03H ;定義ICW3,從片接在主片的IR3端OUT DX , ALMOV AL , 01H ;定義ICW4,完全嵌套方式,非緩沖方式OUT DX , AL ;非自動(dòng)EOI結(jié)束方式MOV AL , 0CFH ;定義OCW1,允許IR4、IR5中斷引入OUT DX , AL ;其余端口中斷請(qǐng)求屏蔽 MOV DX , 0FFCAH ;定義OCW2,MOV AL , 20H ;普通EOI結(jié)束方式OUT DX , AL無(wú)論對(duì)主片8259A或從片8259A,操作命令字可根據(jù)需要在操作過(guò)程中設(shè)置,OCW2命令字定義中斷結(jié)束方式時(shí),通常放在中斷服務(wù)子程序中。1LTIMSNGLIC40 0

42、0 1 0 0 0 1T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID00 1 0 0 0 0 0 0M7M6M5M4M3M2M1M0 1 1 0 0 1 1 1 1RSLEOI00L2L1L0 0 0 1 0 0 0 0 0主片中斷結(jié)束命令:MOV AL,20H ;定義OCW2,普通EOI結(jié)束方式MOV DX,0FFC8HOUT DX,AL從片中斷結(jié)束命令:MOV AL,20H ;定義OCW2,普通EOI結(jié)束方式MOV DX,0FFCAHOUT DX,ALRSLEOI00L2L1L0應(yīng)用注意事項(xiàng)利用上升沿做為中斷請(qǐng)求IRQ的有效

43、信號(hào)IRQ0IRQ7的中斷類型號(hào)依次為08H0FH,IRQ8IRQ15依次為70H77H采用完全嵌套優(yōu)先權(quán)方式,中斷優(yōu)先權(quán)從高到低順序?yàn)镮RQ0IRQ1、IRQ8IRQ15、IRQ3IRQ7,且不能改變采用普通中斷結(jié)束EOI方式,需要在中斷服務(wù)程序最后發(fā)送普通EOI命令一般采用普通屏蔽方式,通過(guò)寫入IMR允許中斷,但注意不要破壞原屏蔽狀態(tài)外部中斷服務(wù)程序編寫外部可屏蔽中斷服務(wù)程序,需注意:發(fā)送中斷結(jié)束命令不要使用DOS系統(tǒng)功能調(diào)用(禁止重入)中斷服務(wù)程序盡量短小編寫主程序,需注意:修改中斷向量控制CPU的中斷允許標(biāo)志設(shè)置8259A的中斷屏蔽寄存器例:以下程序功能是,對(duì)輸入到IRQ7引腳的中斷請(qǐng)求次數(shù)進(jìn)行統(tǒng)計(jì)并顯示,計(jì)滿9次后返回DOS操作系統(tǒng)。(IR0的中斷類型號(hào)為08H)STACK SEGMENT STACK”STACK DB 100 DUP(?)STACK ENDSDATA SEGMENT INT_SEG DW ? ;定義變量,以保存中斷向量段址 INT_OFF DW ? ;定義變量,以保存中斷向量偏移量 CNT DB ? ;保存中斷次數(shù)DATA ENDSCODE SEG

溫馨提示

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