微機原理與單片機應用課件:第6章 中斷系統(tǒng)_第1頁
微機原理與單片機應用課件:第6章 中斷系統(tǒng)_第2頁
微機原理與單片機應用課件:第6章 中斷系統(tǒng)_第3頁
微機原理與單片機應用課件:第6章 中斷系統(tǒng)_第4頁
微機原理與單片機應用課件:第6章 中斷系統(tǒng)_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

13、Instruction Interrupt ! db 0dh,0ah,0 : : mov al,80h ;保存原有中斷向量至(ES:BX) mov ah,35h ;其中斷類型號為80H int 21h ;系統(tǒng)功能(35H)調用 mov intoff,bx ;保存偏移地址 mov intseg,es;保存段基地址 push ds ;設置中斷類型號為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 ;調用中斷服務程序mov dx,intoffmov ax,intsegmov ds,axmov ax,2580hint 21hmov ax,4c00hint 21h : : 恢復原來的中斷向量New80h proc far push ax ;保護寄存器 push si sti ;開中斷 mov si,dxnew1: mov al,si cmp al,0 jz new2 mov dl,al mov ah,02h 顯示單個字符 int 21h inc si jmp new1new2: cli ;關中斷 pop si ; 恢復寄存器 pop ax ir

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

16、法錯中斷指令中斷溢出中斷 不可屏蔽中斷 可屏蔽中斷 單步中斷高低如何實現優(yōu)先級響應?1.軟件查詢中斷優(yōu)先級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:無或0有效中斷請求寄存器中斷屏蔽寄存器IR0IR7優(yōu)先級管理邏輯中斷服務寄存器中斷類型寄存器 由中斷源提供3

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

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

19、中斷請求信號IR的屏蔽狀態(tài)Di位為1表示IRi中斷被屏蔽(禁止);為0表示允許中斷級聯(lián)一個系統(tǒng)中,8259A可以級聯(lián),有一個主8259A,若干個從8259A級聯(lián)時,主8259A的三條級聯(lián)線CAS0CAS2作為輸出線,連至每個從8259A的CAS0CAS2每個從8259A的中斷請求信號INT,連至主8259A的一個中斷請求輸入端IR主8259A的INT線連至CPU的中斷請求輸入端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)控制總線數據總線(8)中斷請求8259A級聯(lián)方式VCC三、 8259A的中斷管理方式完全嵌套方式 特殊全嵌套方式自動循環(huán)方式特殊循環(huán)方式優(yōu)先權固定方式優(yōu)先權循環(huán)方式設置優(yōu)先權方式普通中斷結束方式特殊中斷結束方式自動中斷結束方式非自動中斷結束方式結束中斷處理方式屏蔽中斷源方式普通屏蔽方式特殊屏蔽方式中斷請求觸發(fā)方式邊沿觸發(fā)方式電平觸發(fā)方式數據線連接方式 緩沖方式 非緩沖方式中斷

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

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

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

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

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

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

27、級聯(lián)方式S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0主片8259A:Si1對應IRi接有從片; 否則IRi沒有連接從片從片8259A:ID0ID2編碼說明從片INT引腳接到主片哪個IR引腳A01ICW4 方式控制000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:1:特殊全嵌套方式0:非特殊完全嵌套方式數據線的緩沖方式:1:緩沖方式0:非緩沖方式 緩沖方式主片/從片選擇:1:主片0:從片中斷結束方式:1:自動中斷結束0:非自動中斷結束A01BUF、M/S、SP/EN之間關系BUF位M/S位SP/EN端0:非緩沖 方式無意義

28、SP有效(輸入信號)SP=1SP=0主8259A從8259A1:緩沖方式1:主8259A0:從8259AEN有效(輸出信號)EN=1EN=0CPU8259A8259ACPU微處理器類型:1:16位80 x860:8位8080/8085數據線連接方式緩沖方式8259A的數據線需加緩沖器予以驅動8259A把SP/EN引腳作為輸出端,輸出允許信號,用以鎖存或開啟緩沖器非緩沖方式SP/EN引腳為輸入端若8259A級聯(lián),由其確定是主片或從片 mov al,11h ;寫入ICW1out 20h,al ;邊沿觸發(fā)、級聯(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無意義 ;非自動EOI方式 ;8086/8088配置1LTIMSNGLIC4例:8259初始化(主片)0 0 0 1 0 0 0 1T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID0ICW4(方式控制)ICW3 (主/從)ICW2 (中斷類型號)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ā)、級聯(lián) ; 8086/8088mov a1,70h ;寫入ICW2out 0alh,almov al,02h ;寫入ICW3out 0a1h,al ; 接主片的IR2mov al, 01h ;寫入ICW4out 0a1h,al ;非特殊完全嵌套方式 ;非緩沖方式,M/S無意義 ;非自動EOI方式 ;8086/8088配置例:8259初始化(從片)1LTIMSNGLIC40 0 0 1 0 0 0 1T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID0ICW4(方式控制)ICW3 (

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

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

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

34、用讀寫信號區(qū)別寫入的控制寄存器和讀出的狀態(tài)寄存器 利用地址信號區(qū)別不同I/O地址的寄存器 由控制字中的標志位說明是哪個寄存器 由芯片內順序控制邏輯按一定順序識別不同的寄存器 由前面的控制字決定后續(xù)操作的寄存器五、8259A的中斷級聯(lián)當I/O中斷源多于8個時,可以采用級聯(lián)方式。硬件連接ICW的設置中斷處理結束,要分別給主、從片發(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)控制總線數據總線(8)中斷請求8259A級聯(lián)方式VCC級聯(lián)與單片初始化的區(qū)別:級聯(lián)時,ICW1中SNGL=0;單片SNGL=1級聯(lián)時,要求設置ICW3(主從片都要設)級聯(lián)時,優(yōu)先級一般設置為特殊完全嵌套工作方式,即ICW4中SFNM=1例 一個8259A主片,連接2片8259A從片,從片分別經主片IR3和IR6引腳接入,則系統(tǒng)中優(yōu)先級排列次序如下:主片:IR0、IR1、IR2 從片:IR0、IR1、IR7 主片:IR4、IR5 從片:IR0、IR1、IR7 主片:IR7中斷處理結束要發(fā)兩個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級聯(lián)方式VCC 38259A級聯(lián)使用例子(243頁) 某系統(tǒng)中兩片8259A采用中斷級聯(lián)方式組成中斷系統(tǒng),從片的INT端連8259A主片的IR3端。若當前8259A主片從IR1、IR5,端引入兩個中斷請求,中斷類型號為31H、35H。中斷服務程序的段基址為1000H,偏移地址分別為2000H

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

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

39、0FFC8HOUT DX,ALMOV AL,30H ;定義ICW2,中斷類型號30H37HMOV DX,0FFC9HOUT DX,ALMOV AL,08H ;定義ICW3,IR3端接從片8259A的INT端OUT DX,ALMOV AL,11H ;定義ICW4,特殊全嵌套方式,非緩沖方式,OUT DX,AL ;非自動EOI結束方式MOV AL,0D5H ;定義OCW1,允許IR1,IR3,IR5中斷,其余端OUT DX,AL ;口中斷請求屏蔽MOV AL,20H ;定義OCW2,普通EOI結束方式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,級聯(lián)使用邊沿觸發(fā),要設置ICW4MOV DX , 0FFCAHOUT DX , ALMOV AL , 40H ;定義ICW2,引入中斷類型號為40H47HMOV DX , 0FFCBHOUT DX , AL

41、MOV AL , 03H ;定義ICW3,從片接在主片的IR3端OUT DX , ALMOV AL , 01H ;定義ICW4,完全嵌套方式,非緩沖方式OUT DX , AL ;非自動EOI結束方式MOV AL , 0CFH ;定義OCW1,允許IR4、IR5中斷引入OUT DX , AL ;其余端口中斷請求屏蔽 MOV DX , 0FFCAH ;定義OCW2,MOV AL , 20H ;普通EOI結束方式OUT DX , AL無論對主片8259A或從片8259A,操作命令字可根據需要在操作過程中設置,OCW2命令字定義中斷結束方式時,通常放在中斷服務子程序中。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主片中斷結束命令:MOV AL,20H ;定義OCW2,普通EOI結束方式MOV DX,0FFC8HOUT DX,AL從片中斷結束命令:MOV AL,20H ;定義OCW2,普通EOI結束方式MOV DX,0FFCAHOUT DX,ALRSLEOI00L2L1L0應用注意事項利用上升沿做為中斷請求IRQ的有效

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

溫馨提示

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

評論

0/150

提交評論