版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第9章中斷技術(shù)呱,打擾一下!主要內(nèi)容中斷的概念
8088CPU的中斷系統(tǒng)中斷控制器8259A§8.1中斷概念什么是中斷
所謂中斷,就是指當(dāng)CPU正在執(zhí)行程序時,外設(shè)(或其它中斷源)向CPU發(fā)出請求,CPU暫停當(dāng)前程序的執(zhí)行,轉(zhuǎn)向該外設(shè)服務(wù)(或稱中斷服務(wù))程序,當(dāng)中斷服務(wù)程序運(yùn)行結(jié)束后,返回原程序繼續(xù)執(zhí)行的過程。
處理:外部緊急事件、異常情況中斷服務(wù)程序(Interrupt-servicerouting),處理隨機(jī)事件的特殊程序,又被稱為中斷處理程序(interrupthandler)。中斷源,引起CPU中斷的隨機(jī)事件,或能發(fā)出中斷請求的其它來源。中斷技術(shù)是現(xiàn)代計算機(jī)系統(tǒng)中很重要的一項功能,可以應(yīng)用于以下幾個方面的處理。1)故障檢測和自動處理2)實(shí)時信息處理3)并行操作,控制和管理多臺外設(shè)記終端4)分時操作一什么是中斷斷點(diǎn)主程序中斷服務(wù)程序中斷請求對外設(shè)進(jìn)行處理繼續(xù)執(zhí)行返回斷點(diǎn)???中斷源有哪些怎樣識別中斷源怎樣進(jìn)入中斷服務(wù)怎樣返回斷點(diǎn)怎樣管理中斷源中斷的過程向CPU發(fā)出中斷CPU允許響應(yīng)此中斷壓棧保護(hù)現(xiàn)場及斷點(diǎn)找到中斷服務(wù)程序的入口地址執(zhí)行中斷服務(wù)程序恢復(fù)現(xiàn)場及斷點(diǎn)即包括:中斷請求,中斷判優(yōu),中斷響應(yīng),中斷處理,中斷返回。中斷系統(tǒng)應(yīng)具有的功能(1)實(shí)現(xiàn)中斷及返回(2)能實(shí)現(xiàn)優(yōu)先權(quán)排隊(3)高級中斷源能中斷低級的中斷處理中斷響應(yīng)與調(diào)用子程序的區(qū)別調(diào)用子程序事先安排好的主動行為保護(hù)斷點(diǎn)為主程序服務(wù)一般與外設(shè)無關(guān)中斷響應(yīng)隨機(jī)的、被動行為保護(hù)斷點(diǎn)及現(xiàn)場為外設(shè)服務(wù)為處理各種事件服務(wù)軟件中斷和調(diào)用子程序很相似,調(diào)用方便§8.28086的中斷技術(shù)8088的中斷系統(tǒng)采用向量中斷機(jī)制能夠處理256個中斷用中斷向量號0-255區(qū)別可屏蔽中斷還需要借助專用中斷控制器Intel8259A實(shí)現(xiàn)優(yōu)先權(quán)管理8086提供兩條外部中斷請求線,和一條與中斷有關(guān)的控制線:NMI,INTR,INTA(中斷響應(yīng))。8086中斷有兩大類(1)軟件中斷(內(nèi)部中斷),由指令的執(zhí)行所引起的中斷;(2)硬件中斷(外部中斷),由外部主要是外設(shè)的請求引起的中斷。一、中斷類型和中斷向量表1、中斷類型號
8086用0-255來區(qū)分256個不同中斷源,并對應(yīng)給出中斷向量。0~4:5個內(nèi)部中斷,有固定的定義和處理功能;5~31:系統(tǒng)保留,用戶一般不應(yīng)使用32~255:用戶使用作為硬件或軟件中斷,也可不用,作為數(shù)據(jù)存儲區(qū)。2、中斷向量表
8086/8088系統(tǒng)支持最多256個中斷,對應(yīng)每一個中斷,都有一個中斷服務(wù)程序,該中斷服務(wù)程序的入口地址稱為中斷向量。每個中斷向量占用4個字節(jié),前兩個字節(jié)為服務(wù)程序的IP(偏移量),后兩個字節(jié)為服務(wù)程序的CS(段地址)。
每個中斷類型對應(yīng)一個中斷向量。256個中斷類型,其中斷向量構(gòu)成一個中斷向量表,放在0段的0~3FFH區(qū)域內(nèi),每個占4個字節(jié)。存放中斷向量的位置=中斷類型號×4(0段)開始的4個內(nèi)存單元。向量號為N的中斷向量的物理地址=N×48086的中斷向量表返回向量號255的CS值用戶中斷(向量號255)3FCH向量號255的IP值……向量號2的CS值非屏蔽中斷(向量號2)008H向量號2的IP值向量號1的CS值單步中斷(向量號1)004H向量號1的IP值向量號0的CS值除法錯中斷(向量號0)000H向量號0的IP值例:20H號中斷的中斷服務(wù)程序的入口地址(中斷向量)4030H:2010H,則此中斷向量占用的內(nèi)存單元為:0000H:0080H開始的4個單元0080H0081H0082H0083H10H20H30H40HIPCS二、中斷指令和中斷屏蔽1、中斷指令CLI:清中斷標(biāo)志,IF=0,禁止可屏蔽中斷;STI:中斷標(biāo)志置位,IF=1,開放可屏蔽中斷;INTn:軟件中斷CPU工作:(Flags)((SP)-2)
先復(fù)制TF狀態(tài),然后TF,IF=0(CS)((SP)-4)(4*n+2)(CS)(IP)((SP)-6)(4*n)(IP)IRET:中斷返回CPU的工作:((SP))IP((SP)+2)CS((SP)+4)flag(SP)+6SPINTO溢出中斷(INT4)HLT暫停等待外部中斷或復(fù)位2、中斷的屏蔽中斷允許標(biāo)志位(IF),只能影響可屏蔽外部中斷,不影響軟件中斷、內(nèi)部中斷以及非屏蔽的外部中斷。系統(tǒng)響應(yīng)中斷時,使IF=0,保證響應(yīng)過程不被打斷。若有優(yōu)先級高的中斷,在服務(wù)子程序中使IF=1。3、IF中斷標(biāo)志IF=0,關(guān)中斷、禁止中斷、中斷屏蔽,因此可屏蔽的中斷不會被響應(yīng)。系統(tǒng)復(fù)位任何一個中斷響應(yīng)執(zhí)行CLI將使IF=0IF=1,開中斷、允許中斷、中斷開放,可屏蔽的中斷會被響應(yīng)。執(zhí)行STI將使IF=1執(zhí)行IRET,恢復(fù)原IF非屏蔽中斷源中斷邏輯INTO指令(4)單步中斷(1)除法錯誤(0)INTN指令CPUINTRNMI(2)可屏蔽中斷源8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7外設(shè)中斷源
INTA內(nèi)部中斷除法錯中斷指令中斷溢出中斷單步中斷外部中斷非屏蔽中斷可屏蔽中斷三、中斷的功能INT3指令1.內(nèi)部中斷內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷利用內(nèi)部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時異常情況的有效途徑例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用除法錯中斷,類型0中斷在執(zhí)行除法指令時,若除數(shù)為0或商超過了寄存器所能表達(dá)的范圍,則產(chǎn)生一個向量號為0的內(nèi)部中斷,稱為除法錯中斷。自動轉(zhuǎn)到0000H~0003H存放的地址執(zhí)行。例如:movbl,0idivbl ;除數(shù)BL=0,產(chǎn)生除法錯中斷movax,200hmovbl,1divbl ;商=200H,不能用AL表達(dá) ;產(chǎn)生除法錯中斷溢出中斷,類型4中斷在執(zhí)行溢出中斷指令I(lǐng)NTO時,若溢出標(biāo)志OF為1,則產(chǎn)生一個向量號為4的內(nèi)部中斷,被稱為溢出中斷有必要時用INTO引入,用于測試溢出標(biāo)志。跟在有符號數(shù)的計算后面,程序員知道是否為有符號數(shù),對于無符號數(shù)則無所謂。例如:movax,2000haddax,7000h
;2000H+7000H=9000H,溢出:OF=1into ;因為OF=1,所以產(chǎn)生溢出中斷單步中斷,類型1中斷若單步中斷TF為1,則在每條指令執(zhí)行結(jié)束后產(chǎn)生一個向量號為1的內(nèi)部中斷,稱為單步中斷例如:DEBUG.EXE調(diào)試程序的單步命令T就利用單步中斷實(shí)現(xiàn)對程序的單步調(diào)試斷點(diǎn)中斷,類型3中斷在調(diào)試程序時使用,將某處的一條指令替換為INT3指令。需要保存原內(nèi)容,調(diào)試完后回復(fù)原指令。比較特別(生成一個字節(jié)的指令代碼:11001100),常用于程序調(diào)試,被稱為斷點(diǎn)中斷例如:DEBUG.EXE調(diào)試程序的運(yùn)行命令G設(shè)置的斷點(diǎn),就是利用INT3指令實(shí)現(xiàn)的2、軟件(指令)中斷在執(zhí)行中斷調(diào)用指令I(lǐng)NTn時產(chǎn)生的一個向量號為n(0~255)的內(nèi)部中斷,稱為指令中斷。被成為向量化的子程序調(diào)用,一般會是功能比較復(fù)雜的仿真子程序。所有的外部中斷也可以用指令調(diào)用。3、外部中斷外部中斷是由于8088外部提出中斷請求引起的程序中斷利用外部中斷,微機(jī)系統(tǒng)可以實(shí)時響應(yīng)外部設(shè)備的數(shù)據(jù)傳送請求,能夠及時處理外部意外或緊急事件外部中斷的原因是處理器外部隨機(jī)產(chǎn)生的,所以是真正的中斷(Interrupt)內(nèi)部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱為異常(Exception)⑴非屏蔽中斷通過非屏蔽中斷請求信號向微處理器提出的中斷請求,微處理器無法禁止,將在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),這個中斷被稱為非屏蔽中斷8088的非屏蔽中斷的向量號為2,非屏蔽中斷請求信號為NMI非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如:電源調(diào)電前的數(shù)據(jù)保護(hù)存儲器讀寫錯誤的處理⑵可屏蔽中斷外部通過可屏蔽中斷請求信號向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),同時輸出可屏蔽中斷響應(yīng)信號,這個中斷就是可屏蔽中斷8088的可屏蔽中斷請求和響應(yīng)信號分別是INTR和INTA*;由IF標(biāo)志控制可屏蔽中斷是否允許響應(yīng);向量號來自外部中斷控制器。申請在INTR線上發(fā)出信號,可以被CPU查到,有要在服務(wù)完成前及時撤銷,以防重復(fù)觸發(fā)。INTA*作為中斷應(yīng)答信號,送出兩個負(fù)脈沖,第一個通知外設(shè)得到響應(yīng),第二個將中斷類型號送上數(shù)據(jù)線。8088通常需要配合中斷控制器8259A共同處理可屏蔽中斷可屏蔽中斷主要用于主機(jī)與外設(shè)交換數(shù)據(jù)明確IF標(biāo)志的狀態(tài)是關(guān)鍵8086/8088的中斷響應(yīng)過程N(yùn)MIN軟件中斷INTRTF=1中斷響應(yīng)周期讀中斷向量號下條指令現(xiàn)行指令I(lǐng)F=1NNNNYYYYY查詢中斷的順序,決定了各種中斷源的優(yōu)先權(quán)軟件中斷除法錯中斷指令中斷溢出中斷非屏蔽中斷可屏蔽中斷單步中斷高低8086/8088的中斷響應(yīng)過程(續(xù))Y還有NMITEMP=1標(biāo)志寄存器入棧TEMP=TF,IF=TF=0CS:IP入棧獲取中斷向量執(zhí)行服務(wù)程序彈出CS:IP彈出標(biāo)志寄存器返回被中斷程序(1)(2)(3)(4)(5)NNY(6)8.3中斷控制器8259A呱,打擾一下呱。。。呱呱呱,還有我中斷申請管理接口的主要功能:1.
向CPU的引腳INTR發(fā)中斷申請信號當(dāng)有多個外設(shè)同時發(fā)出中斷請求時,能按照一定的優(yōu)先級順序,向CPU發(fā)出中斷申請,使CPU能優(yōu)先響應(yīng)優(yōu)先級最高的外部設(shè)備的中斷申請。2.
送中斷類型號
在CPU中斷響應(yīng)周期,針對不同外設(shè)的中斷請求,向CPU傳送不同的中斷類型號,使CPU執(zhí)行相應(yīng)的中斷子程。Intel8259A是可編程中斷控制器用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中斷8259A的基本功能一片8259A可以管理8級中斷,可擴(kuò)展至64級每一級中斷都可單獨(dú)被屏蔽或允許在中斷響應(yīng)周期,可提供相應(yīng)的中斷向量號8259A設(shè)計有多種工作方式,可通過編程選擇8259A的引腳
雙列直插式芯片,28個引腳方波鍵盤保留串口2
硬盤軟盤打印機(jī)IOW18.2HzA0CS8259A總線A0數(shù)據(jù)線IORRDWR片選譯碼IR0IR1IR2IR3IR4IR5IR6IR7A5~A9D0~D7D0~D7VccSP/ENCA0CA1CA2GND+5V20~3FH用于多片8259A級連情況INTAINTINTAINTR串口1
一、8259A的引腳、結(jié)構(gòu)和工作原理引腳1、D0~D7:8條數(shù)據(jù)線,與CPU數(shù)據(jù)總線相連,進(jìn)行數(shù)據(jù)交換,寫入控制字或送出類型號。2、INT:中斷請求,與CPUINTR相連發(fā)出中斷申請。INTA*:接收來自CPU的響應(yīng)信號,一般兩個負(fù)脈沖。RD*:讀信號,讀CPU某個內(nèi)部寄存器的內(nèi)容WR*:寫信號,通知CPU接收命令字。CS*:片選信號A0:1片8259A占用兩個端口地址,一個偶地址(A0=0)較低,一個奇地址(A0=1)較高。IR0~IR7:分別接8個外設(shè)中斷請求或從片中斷請求。CAS0~CAS2:主從結(jié)構(gòu)時,區(qū)分不同的從片。SP*/EN*:雙向線,(由初始化命令字設(shè)置)非緩沖方式:輸入SP*=1本片主片,SP*=0本片主片緩沖方式:輸出EN*=0有效,數(shù)據(jù)從8259傳向8086,一般用于驅(qū)動一個總線驅(qū)動器關(guān)于數(shù)據(jù)線和地址線的連接8259A只有8根數(shù)據(jù)線,一般與8086的低8根數(shù)據(jù)線相連,因此必須把8086地址線的A1與8259A的A0相連。其中A0=0為偶地址
A0=1為奇地址。8259A的內(nèi)部結(jié)構(gòu)D7~D0INTAINT中斷請求寄存器中斷屏蔽寄存器數(shù)據(jù)總線緩沖器IR0IR7讀/寫控制邏輯級聯(lián)緩沖器比較器RDWRA0CSCAS0CSA1CAS2SP/EN優(yōu)先權(quán)判別電路中斷服務(wù)寄存器控制邏輯*保存8條外界中斷請求信號IR0~I(xiàn)R7的請求狀態(tài);*Di位為1表示IRi引腳有中斷請求;為0表示無請求.*保存對中斷請求信號IR的屏蔽狀態(tài)*Di位為1表示IRi中斷被屏蔽(禁止),為0表示允許;*各自獨(dú)立.*保存正在被8259A服務(wù)著的中斷狀態(tài);*Di位為1表示IRi中斷正在服務(wù)中,為0表示沒有被服務(wù).*用以比較正在處理的中斷和剛剛進(jìn)入的中斷請求之間的優(yōu)先級別,以決定是否產(chǎn)生多重中斷或中斷嵌套.8259的內(nèi)部控制器。1根據(jù)中斷請求寄存器IRR、中斷屏蔽寄存器IMR的設(shè)置情況,通過優(yōu)先級比較器判定優(yōu)先級;2向其他部件發(fā)出控制信號;3并發(fā)出中斷請求信號INT;4接受中斷響應(yīng)信號INTA,使中斷服務(wù)寄存器ISR的相應(yīng)位置1,IRR的相應(yīng)位清0;5在INTA第二個負(fù)脈沖到來的時候送出中斷類型號;6根據(jù)中斷結(jié)束類型對ISR的相應(yīng)位清0。IORIOW總線數(shù)據(jù)線D0~D7INTAA0片選譯碼A5~A9CSA0RD
INTAWRINTD0~D7
ICW1
芯片控制
ICW2
中斷類型號
ICW3
主從片關(guān)系
ICW4
方式控制101
00000
ISR當(dāng)前中斷服務(wù)寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1
中斷屏蔽寄存器
IMR
00
OCW2
優(yōu)先級、發(fā)EOI
OCW3特殊屏蔽設(shè)置PR優(yōu)先級裁決器IRR中斷申請寄存器10000001
10010100INTR8259A的內(nèi)部寄存器中斷請求寄存器IRR保存8條外界中斷請求信號IR0~I(xiàn)R7的請求狀態(tài)Di位為1表示IRi引腳有中斷請求;為0表示無請求中斷服務(wù)寄存器ISR保存正在被8259A服務(wù)著的中斷狀態(tài)Di位為1表示IRi中斷正在服務(wù)中;為0表示沒有被服務(wù)中斷屏蔽寄存器IMR保存對中斷請求信號IR的屏蔽狀態(tài)Di位為1表示IRi中斷被屏蔽(禁止);為0表示允許優(yōu)先級比較器(裁決器)用以比較正在處理的中斷和剛剛進(jìn)入的中斷請求之間的優(yōu)先級別,以決定是否產(chǎn)生多重中斷或中斷嵌套。數(shù)據(jù)總線緩沖器它是8259A與系統(tǒng)數(shù)據(jù)總線的接口,是8位雙向三態(tài)緩沖器。CPU與8259A之間的控制命令信息、狀態(tài)信息以及中斷類型信息,都是通過該緩沖器傳送的。讀/寫控制邏輯CPU通過它實(shí)現(xiàn)對8259A的讀/寫操作。級連緩沖器:用以實(shí)現(xiàn)8259A芯片之間的級連,使得中斷源可以由8級擴(kuò)展至64級??刂七壿嬰娐穼φ麄€芯片內(nèi)部各部件的工作進(jìn)行協(xié)調(diào)和控制。8259的中斷控制部分有7各寄存器,根據(jù)初始化命令字和操作命令字工作。中斷響應(yīng)過程CPU在INTA*上給出兩個負(fù)脈沖第一個負(fù)脈沖使8259A作如下的工作:使IRR寄存器暫時失效,不再接收新的申請,第二個負(fù)脈沖恢復(fù)使當(dāng)前的ISR中的相應(yīng)位置1使IRR中的相應(yīng)位清0第二個負(fù)脈沖使中斷類型寄存器的ICW2的內(nèi)容送D0~D7(中斷類型碼)如果ICW4中的自動結(jié)束位為1,則使ISR的相應(yīng)位清0。三、8259A的工作方式8259A有多種工作方式,這些工作方式,可以通過編程設(shè)置或改變。1.優(yōu)先級的管理方式(1).全嵌套方式這是8259A默認(rèn)的優(yōu)先權(quán)設(shè)置方式,在全嵌套方式下,8259A所管理的8級中斷優(yōu)先權(quán)是固定不變的,其中IR0的中斷優(yōu)先級最高,IR7的中斷優(yōu)先級最低。CPU響應(yīng)中斷后,請求中斷的中斷源中,優(yōu)先級最高的中斷源,在中斷服務(wù)寄存器ISR中的相應(yīng)位置位,而且把它的中斷矢量送至系統(tǒng)數(shù)據(jù)總線,在此中斷源的中斷服務(wù)完成之前,與它同級或優(yōu)先級低的中斷源的中斷請求被屏蔽,只有優(yōu)先級比它高的中斷源的中斷請求才是運(yùn)算的,從而出現(xiàn)中斷嵌套。(2).特殊全嵌套方式特殊全嵌套方式與全嵌套方式基本相同,所不同的是,當(dāng)CPU處理某一級中斷時,如果有同級中斷請求,那么CPU也會作出響應(yīng),從而形成了對同一級中斷的特殊嵌套。特殊全嵌套方式通常應(yīng)用在有8259A級連的系統(tǒng)中,在這種情況下,對主8259A編程時,通常使它工作在特殊全嵌套方式下。這樣,一方面,CPU對于優(yōu)先級別較高的主片的中斷輸入是允許的,另一方面,CPU對于來自同一從片的優(yōu)先級別較高(但對于主片來講,優(yōu)先級別是相同的)的中斷也是允許、能夠響應(yīng)的。(3).優(yōu)先級自動循環(huán)方式在實(shí)際應(yīng)用中,中斷源優(yōu)先級的情況是比較復(fù)雜的,要求8級中斷的優(yōu)先級在系統(tǒng)工作過程中,可以動態(tài)改變。即一個中斷源的中斷請求被響應(yīng)之后,其優(yōu)先級自動降為最低。系統(tǒng)啟動時,8級中斷優(yōu)先級默認(rèn)為IR0—IR7,這時,剛好IR4發(fā)出了中斷請求,CPU響應(yīng)之后,若8259A工作在優(yōu)先級自動循環(huán)方式下,則中斷優(yōu)先級自動變?yōu)镮R5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。(4).優(yōu)先級特殊循環(huán)方式優(yōu)先級特殊循環(huán)方式與自動循環(huán)方式相比,只有一點(diǎn)不同,即初始化的優(yōu)先級(最低)是由程序控制的,而不是默認(rèn)的IR0—IR7。2.中斷源的屏蔽方式CPU對于8259A提出的中斷請求,都可以加以屏蔽控制,屏蔽控制有下列幾種方式:(1).普通屏蔽方式:8259A的每個中斷請求輸入,都要受到屏蔽寄存器中相應(yīng)位的控制。若相應(yīng)位為“1”,則中斷請求不能送CPU。屏蔽是通過對屏蔽寄存器IMR的編程(操作命令字OCW1),來加以設(shè)置和改變的。(2).特殊屏蔽方式:有些場合下,希望一個中斷服務(wù)程序的運(yùn)行過程中,能動態(tài)地改變系統(tǒng)中的中斷優(yōu)先級結(jié)構(gòu),即在中斷處理的一部分,禁止低級中斷,而在中斷處理的另一部分,又能夠允許低級中斷,于是引入了對中斷的特殊屏蔽方式。設(shè)置了特殊屏蔽方式后,用OCW1對屏蔽寄存器中的某一位置位時,同時也會使中斷服務(wù)寄存器ISR中的相應(yīng)位復(fù)位,這樣就不只屏蔽了正在處理的等級中斷,而且真正開放了其它優(yōu)先級別較低的中斷請求。特殊屏蔽是在中斷處理程序中使用的,用了這種方式之后,盡管系統(tǒng)正在處理高級中斷,但對外界來講,只有同級中斷被屏蔽,才允許其它任何級別的中斷請求。3.結(jié)束中斷處理的方式按照對中斷結(jié)束(復(fù)位中斷響應(yīng)寄存器ISR中相應(yīng)位)的不同處理,8259A有兩種工作方式,即自動結(jié)束方式(AEI)和非自動結(jié)束方式。而非自動結(jié)束方式又可進(jìn)一步分為一般的中斷結(jié)束方式和特殊的中斷結(jié)束方式。(1).中斷自動結(jié)束方式這種方式僅適用于只有單片8259A的場合,在這種方式下,系統(tǒng)一旦響應(yīng)中斷,那么CPU在發(fā)第二個INTA脈沖時,就會使中斷響應(yīng)寄存器ISR中相應(yīng)位復(fù)位,這樣一來,雖然系統(tǒng)在進(jìn)行中斷處理,但對于8259A來講,ISR沒有相應(yīng)的指示,就象中斷處理結(jié)束,返回主程序之后一樣。CPU可以再次響應(yīng)任何級別的中斷請求。(2).一般的中斷結(jié)束方式一般的中斷結(jié)束方式適用用在全嵌套的情況下,當(dāng)CPU用輸出指令向8259A發(fā)一般中斷中斷結(jié)束命令OCW2時,8259A才會使中斷響應(yīng)寄存器ISR中優(yōu)先級別最高的位復(fù)位。(3).特殊的中斷結(jié)束方式在特殊全嵌套模式下,系統(tǒng)無法確定哪一級中斷為最后相應(yīng)和處理的中斷,也就是說,CPU無法確定當(dāng)前所處理的是哪級中斷,這時就要采用特殊的中斷結(jié)束方式。特殊的中斷結(jié)束方式是指在CPU結(jié)束中斷處理之后,向8259A發(fā)送一個特殊的EOI中斷結(jié)束命令,這個特殊的中斷結(jié)束EOI命令,明確指出了中斷響應(yīng)寄存器ISR中需要復(fù)位的位。這里,我們還要指出一點(diǎn),在級聯(lián)方式下,一般不用自動中斷結(jié)束方式,而需要用非自動結(jié)束中斷方式,一個中斷處理程序結(jié)束時,都必須發(fā)兩個中斷結(jié)束EOI命令,一個發(fā)往主片,一個發(fā)往從片。4.系統(tǒng)總線的連接方式按照8259A與系統(tǒng)總線的連接方式來分,有下列兩種方式:(1).緩沖方式在多片8259A級連的大系統(tǒng)中,8259A通過外部總線驅(qū)動器和數(shù)據(jù)總線相連,這就是緩沖方式。在緩沖方式下,8259的輸出信號作為緩沖器的啟動信號,用來啟動總線驅(qū)動器,在8259A與CPU之間進(jìn)行信息交換。(2).非緩沖方式當(dāng)系統(tǒng)中只有一片或幾片8259A芯片時,可以將數(shù)據(jù)總線直接與系統(tǒng)數(shù)據(jù)總線相連,這時8259A處于非緩沖方式下。在這種方式下,8259A的作為輸入端設(shè)置,主片應(yīng)接高電平,從片應(yīng)接低電平。5、引入中斷請求的方式按照引入中斷請求的方式,8259A有下列幾種工作方式:
(1).邊沿觸發(fā)方式8259A將中斷請求輸入端出現(xiàn)的上升沿,作為中斷請求信號,上升沿后相應(yīng)引腳,可以一直保持高電平。
(2).電平觸發(fā)方式
8259A將中斷請求輸入端出現(xiàn)的高電平作為中斷請求信號,在這種方式下,必須注意:中斷響應(yīng)之后,高電平必須及時撤除,否則,在CPU響應(yīng)中斷,開中斷之后,會引起第二次不應(yīng)該有的中斷。(3).中斷查詢方式當(dāng)系統(tǒng)中的中斷源很多,超過64個時,則可以使8259A工作在查詢方式下,中斷查詢方式的特點(diǎn)是:中斷源仍往8259A發(fā)中斷請求,但8259A卻不使用INT信號向CPU發(fā)中斷請求信號。CPU內(nèi)部的中斷允許標(biāo)志復(fù)位,所以CPU對INT引腳上出現(xiàn)的中斷請求呈禁止?fàn)顟B(tài)。CPU用軟件查詢的方法來確定中斷源,從而實(shí)現(xiàn)對設(shè)備的中斷服務(wù),可見,中斷查詢方式,既有中斷的特點(diǎn),又有查詢的特點(diǎn),從外設(shè)的角度來看,是靠中斷的方式來請求服務(wù),但從CPU的角度來看,是用查詢方式來確定發(fā)中斷請求的中斷源。查詢是通過CPU向8259A發(fā)查詢命令OCW3來實(shí)現(xiàn)的。四、初始化命令字和操作命令字8259根據(jù)收到的CPU的命令進(jìn)行工作,奇命令分為兩類:初始化命令字(預(yù)置命令字ICW):8259A在進(jìn)入操作之前,必須由預(yù)置命令字來使它處于初始狀態(tài)。操作命令字OCW:在8259初始化之后,來控制8259A執(zhí)行不同的操作方式。其可在初始化之后的任何時刻寫入8259A。(一)初始化命令字(4個)開機(jī)時,由初始化程序按一定的順序?qū)懭朐O(shè)8259有兩個地址:偶地址、奇地址1、ICW1:芯片控制命令字,偶地址D7~D5:8086不用,隨機(jī)D4:總是1,與A0=0結(jié)合,表示ICW1D3:LTIM設(shè)置中斷請求的方式LTIM=0,邊沿觸發(fā)LTIM=1,電平觸發(fā)D7D6D5D4D3D2D1D0XXX1LTIMADISNGLIC4A00D2:ADI8086不用D1:SNGL決定本片是否級聯(lián)D1=1,只有一片8259AD1=0,多片D0:IC4表明后面是否使用ICW4D0=1,用ICW4D0=0,不用注:16位系統(tǒng)必須使用ICW4,所以對于8086、8088常見的命令字為00010011B,即13H2、ICW2設(shè)置中斷類型碼,奇地址D7D6D5D4D3D2D1D0T7T6T5T4T3XXXA01中斷類型碼的高5位000IR0001IR1111IR7中斷類型碼的高5位由用戶在32~255的范圍內(nèi)任選,低3位由引腳區(qū)別自動插入。即高5位可填,低3位自動生成。例:00111000B,則:IR0--38HIR1--39HIR2--40HIR7--3FH3、ICW3,主從片命令字,奇端口當(dāng)系統(tǒng)有多片級聯(lián)時,有意義。ICW1D1=0時要設(shè),否則不必設(shè)。而且主從片不同。主片D7D6D5D4D3D2D1D0IR7IR6IR5IR4IR3IR2IR1IR0A01=1,表示本引腳上連1從片=0,表示本引腳上未連從片從片D7D6D5D4D3D2D1D0×××××ID2ID1ID0A01不用,一般寫0作為從片的標(biāo)識碼,表示連主片的哪一個引腳實(shí)際操作時,主片從CAS0~CAS2發(fā)出申請中斷的引腳號碼,個從片均接收,與自己的ID0~I(xiàn)D2對照,相同則送出中斷類型碼。4、ICW4方式控制命令字,奇端口ICW1D0=1時才設(shè),8086系統(tǒng)必須使用D7D6D5D4D3D2D1D0000SFNMBUFM/SAEOIμPMA01標(biāo)識碼D4(SFNM):=1特殊全嵌套方式,主從結(jié)構(gòu)時使用 =0非特殊的全嵌套方式D3(BUF):=1緩沖方式,EN*=0啟動數(shù)據(jù)總線 =0非緩沖方式D2(M/S):D3=1時,D2有意義D3=1,D2=1,表本片是主片
D2=0,表本片是從片D1(AEOL):=1自動結(jié)束方式=0非自動結(jié)束方式,因此需要中斷結(jié)束命令。D0(μPM):=1,用于8086/8088系統(tǒng)=0,用于8080/8085系統(tǒng)8259初始化流程用ICW1設(shè)置是否級聯(lián)請求格式信號是否需要設(shè)置ICW4用ICW2設(shè)置中斷類型碼是否為級聯(lián)方式本片設(shè)為主片嗎?設(shè)置ICW3,各位對應(yīng)IR0~IR7設(shè)置ICW3,高5位為0,低3位為標(biāo)識碼需要用到ICW4嗎?用ICW4設(shè)置是否為特殊全嵌套方式是否為緩沖方式是否為自動結(jié)束中斷方式是否為16位系統(tǒng)結(jié)束,進(jìn)行中斷服務(wù)NYNYNY注意“偶地址低,奇地址高,占用兩個連續(xù)的地址或兩個連續(xù)的偶地址。ICW1~I(xiàn)CW4的順序不能亂ICW3、ICW4可省級聯(lián)時,ICW3主從片的意義不同,地址不同,一般先寫主片,后些從片。例1,設(shè)某8259A的端口地址80H,82H,分析下列命令。MOVAL,13HOUT80H,AL;設(shè)ICW1MOVAL,18HOUT82H,AL;設(shè)ICW2,中斷類型碼MOVAL,1DHOUT82H,AL;設(shè)ICW4,00001101常用的ICW4,01H。(二)操作命令字,3個8259A用初始化命令字命令編程后,就進(jìn)入工作狀態(tài),準(zhǔn)備好接收輸入的中斷請求信號。在工作期間,可以通過操作命令字來使它按不同的方式工作。因此可以在任何時候以任意順序輸出。1、OCW1中斷屏蔽命令字,奇地址D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M0A01Mi=1,屏蔽本位請求Mi=0,允許本位請求2、OCW2設(shè)置優(yōu)先級循環(huán)及結(jié)束中斷方式命令字,偶地址D7D6D5D4D3D2D1D0RSLEOI00L2L1L0
A00優(yōu)先級是否循環(huán)=1,循環(huán)=0,不循環(huán)=1,L2-L0有效(用特殊優(yōu)先級循環(huán)或特殊結(jié)束時)=0,L2-L0無效中斷結(jié)束命令位=1,ISR中優(yōu)先級最高的位清0標(biāo)志位IR~I(xiàn)R7的編碼D7,D6,D5配合使用RSLEOI100優(yōu)先級自動循環(huán)000不再使用優(yōu)先級自動循環(huán)110特殊的優(yōu)先級自動循環(huán),L2~L0指明最低010無意義RSLEOI101清當(dāng)前ISRn,系統(tǒng)按優(yōu)先級自動左移一位繼續(xù)工作111清當(dāng)前ISRn,并指定最低優(yōu)先級011特殊的中斷結(jié)束,L2~L0指明對應(yīng)ISRn001清當(dāng)前ISRn,一般的中斷結(jié)束。(常用的20H)3、OCW3,偶地址D7D6D5D4D3D2D1D00ESMMSMM01PRRRISA00D6=D5=1,按特殊屏蔽方式工作,系統(tǒng)可響應(yīng)任何中斷D6=1,D5=0,結(jié)束特殊屏蔽,系統(tǒng)恢復(fù)原優(yōu)先級D6=0時,D5無意義D3=1,與OCW2區(qū)別標(biāo)志位D2(P)查詢方式位。D2=1,8259A工作于中斷查詢方式。查詢方式時用讀指令讀入查詢字,從偶地址。D7D6D5D4D3D2D1D0I
W2W1W1A00表明8259A中當(dāng)前中斷請求的最高優(yōu)先級當(dāng)前有無中斷請求D2=0,用RR(D1)和RIS(D0)表明讀8259A內(nèi)部寄存器中的內(nèi)容(從偶地址)。D1=1,D0=0下一條輸入指令讀的是IRR的內(nèi)容。D1=1,D0=1下一條輸入指令讀的是ISR的內(nèi)容。D1=0無操作。IMR中的內(nèi)容可以從奇地址隨時讀取。OCW1~OCW3的內(nèi)容可以隨時改變,一旦改變,前面的狀態(tài)將不復(fù)存在。五、8259A使用舉例2、中斷全嵌套方式的流程主程序要有開中斷指令I(lǐng)F=1中斷響應(yīng)時自動關(guān)中斷,所以要嵌套,服務(wù)子程序也要開中斷中斷結(jié)束時一般要發(fā)中斷結(jié)束命令初始化開中斷開中斷關(guān)中斷中斷結(jié)束命令開中斷中斷返回開中斷關(guān)中斷中斷結(jié)束命令開中斷中斷返回IR3中斷處理程序IR3請求中斷IR2請求中斷主程序3、使用中斷結(jié)束命令的例子中斷服務(wù)中執(zhí)行STI,才可嵌套使用中斷結(jié)束命令清ISRn如提前結(jié)束則嵌套未必符合規(guī)律初始化STISTIIS2被清除中斷結(jié)束命令中斷返回中斷結(jié)束命令關(guān)中斷中斷返回IR2中斷處理程序IR2和IR4請求中斷IR1請求中斷主程序IS2置1IS1置1STI中斷結(jié)束命令中斷返回IS4置1IR4中斷處理程序IR3請求中斷STI中斷結(jié)束命令中斷返回IS3置1IR3中斷處理程序IR1中斷處理程序IS1被清除IS3被清除IS4被清除IR2被提前結(jié)束了4、編程舉例,用8259A作單個中斷控制器,類型號32~39,用IR3。ICW1 EQU00010011B;邊沿觸發(fā),一片,用ICW4ICW2 EQU00100000B;類型號20HICW4 EQU00000001B;8086非自動結(jié)束OCW1 EQU11110111B;保留IR3,其余屏蔽PORT_AEQU0C0H;偶地址PORT_BEQU0C2H;奇地址 MOVDX,PORT_A MOVAL,ICW1 OUTDX,AL;送ICW1 MOVDX,PORT_B MOVAL,ICW2 OUTDX,AL;送ICW2 MOVAL,ICW4 OUTDX,AL;送ICW4 MOVAL,OCW1 OUTDX,AL;送OCW1
5在8086非緩沖系統(tǒng)擴(kuò)展一片8259A,采用普通全嵌套工作方式,不用中斷自動結(jié)束方式,中斷請求邊沿觸發(fā),中斷類型碼為50H~57H,只開放IR0和IR7。設(shè)8259A地址為80H和82H,IR0對應(yīng)的中斷子程序的入口地址為1000H:2000H,IR7對應(yīng)子程序的入口地址為1000H:3000H。(1)寫出8259A的初始化程序(2)寫出將中斷向量填入中斷向量表的程序(3)寫出采用中斷結(jié)束命令結(jié)束中斷的程序(1)初始化ICW1ICW2XXX1LTIMADISNGLIC4XXX10X11A00D7D6D5D4D3D2D1D001010000A01ICW4OCW1000SFNMBUFM/SAEOIμPM00000001
A01D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M0A01MOVAL,13H;OUT80H,AL;ICW1MOVAL,50H;OUT82H,AL;ICW2MOVAL,01H;OUT82H,AL;ICW4MOVAL,7E;OUT82H,AL;OCW1(2)設(shè)置中斷向量XORAX,AXMOVDS,AX;設(shè)段地址MOVAX,2000HMOVWORDPTR[140H],AX;MOVAX,1000HMOVWORDPTR[142H],AX;IR0對應(yīng)的中斷向量MOVAX,3000HMOVWORDPTR[15CH],AX;MOVAX,1000HMOVWORDPTR[15EH],AX;IR7對應(yīng)的中斷向量STI(3)采用中斷結(jié)束命令結(jié)束中斷的程序MOVAL,20HOUT80H,AL;設(shè)OCW2RSLEOI00L2L1L0
00100000A006、8253和8259A的綜合舉例在計算機(jī)系統(tǒng)中用8253作計數(shù)器1、計數(shù)器2分別為生產(chǎn)線上A、B兩處通過的工件進(jìn)行計數(shù)。每生產(chǎn)一個工件,A處的紅外傳感器向計數(shù)器1送入一個脈沖。生產(chǎn)出的工件在B處進(jìn)行檢驗,每出現(xiàn)一個廢品,B處的紅外傳感器向計數(shù)器2送入一個脈沖。8253的計數(shù)器0作為定時器使用,每隔一分鐘通過8259A的IR0向8088CPU申請中斷。在中斷服務(wù)程序中,讀取計數(shù)器1、2的內(nèi)容,計算出合格產(chǎn)品數(shù),并累加到BUF開始的4個內(nèi)存單元中,同時清零1、2兩個計數(shù)器。設(shè)CLK0的時鐘頻率為1KHz。8253的端口地址:0800H~0803H8259的端口地址:0820H~0821H中斷類型碼的高5位00111B。要求:1、編寫完成上述功能的8253,8259A的初始化程序2、編程設(shè)置中斷服務(wù)子程序的入口地址3、編寫中斷服務(wù)子程序完成上述功能 1、8259A的初始化
CLIMOVDX,0820HMOVAL,13HOUTDX,AL;送ICW1MOVDX,0821HMOVAL,38H;00111100BOUTDX,AL;送ICW2MOVAL,01H;
OUTDX,AL;送ICW4INAL,DX;從奇地址讀屏蔽寄存器
ANDAL,0FEH;開放IR0OUTDX,AL8253的初始化(x=T*F=60*1K=60000=0EA60H)MOVDX,0803HMOVAL,00110100B;計數(shù)器0,先低8位后高8位,模式2,二進(jìn)制OUTDX,AL;MOVDX,0800HMOVAL,60HOUTDX,ALMOVAL,0EAHOUTDX,AL;計數(shù)器0的初始化MOVDX,0803HMOVAL,01110000B;計數(shù)器1,先低8位后高8位,模式0,二進(jìn)制OUTDX,ALMOVDX,0801HMOVAL,0HOUTDX,ALOUTDX,AL;計數(shù)器1的初始化MOVDX,0803HMOVAL,10110000B;計數(shù)器2,先低8位后高8位,模式0,二進(jìn)制OUTDX,ALMOVDX,0802HMOVAL,0HOUTDX,ALOUTDX,AL;計數(shù)器2的初始化2、送入口地址MOVAX,0MOVDS,AX;0段MOVSI,38H*4MOVAX,OFFSETINC-PROCMOV[SI],AX;送偏移量MOVAX,SEGI
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024煤炭市場趨勢預(yù)測委托采購服務(wù)范本3篇
- 2025年度科研合作合同知識產(chǎn)權(quán)成果分配協(xié)議3篇
- 2025年度特種柴油委托采購居間代理合同6篇
- 2025年度簡單工程款支付合同2篇
- 二零二五年度環(huán)保環(huán)保設(shè)備定向采購及監(jiān)測服務(wù)合同3篇
- 2024版?zhèn)€人納稅擔(dān)保權(quán)益保障合同版B版
- 二零二五年度技術(shù)研發(fā)合作與知識產(chǎn)權(quán)共享協(xié)議書3篇
- 版產(chǎn)后乳房護(hù)理
- 小學(xué)數(shù)學(xué)與科學(xué)跨學(xué)科融合教學(xué)策略研究
- 2024年金融衍生品交易委托代理合同
- 完整版:美制螺紋尺寸對照表(牙數(shù)、牙高、螺距、小徑、中徑外徑、鉆孔)
- TCI 373-2024 中老年人免散瞳眼底疾病篩查規(guī)范
- 2024四川太陽能輻射量數(shù)據(jù)
- 石油鉆采專用設(shè)備制造考核試卷
- 法人變更股權(quán)轉(zhuǎn)讓協(xié)議書(2024版)
- 研究生中期考核匯報模板幻燈片
- AQ/T 2061-2018 金屬非金屬地下礦山防治水安全技術(shù)規(guī)范(正式版)
- 培訓(xùn)機(jī)構(gòu)與學(xué)校合作協(xié)議書范本
- 留置導(dǎo)尿法操作評分標(biāo)準(zhǔn)
- 2024年高考數(shù)學(xué)經(jīng)典解答題-立體幾何專項復(fù)習(xí)17題(附答案)
- 麻醉管理-血?dú)夥治鲈谑中g(shù)中的應(yīng)用
評論
0/150
提交評論