第七章 中斷系統(tǒng)_第1頁(yè)
第七章 中斷系統(tǒng)_第2頁(yè)
第七章 中斷系統(tǒng)_第3頁(yè)
第七章 中斷系統(tǒng)_第4頁(yè)
第七章 中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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)介

主要內(nèi)容中斷系統(tǒng)概述8086CPU的中斷方式可編程中斷控制器8259A第7章中斷系統(tǒng)中斷的基本概念中斷處理系統(tǒng)7.1

中斷系統(tǒng)概述什么是中斷?與生活場(chǎng)景的比較正在看書(shū)電話鈴響接電話繼續(xù)看書(shū)執(zhí)行程序事件發(fā)生事件處理繼續(xù)執(zhí)行程序中斷處理中斷請(qǐng)求及響應(yīng)實(shí)際場(chǎng)景計(jì)算機(jī)中斷返回7.1.1

中斷的基本概念中斷的定義CPU執(zhí)行程序時(shí),由于發(fā)生了某種隨機(jī)的事件(外部或內(nèi)部),引起CPU暫時(shí)中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行一段特殊的服務(wù)程序(稱為中斷服務(wù)程序或中斷處理程序),以處理該事件,該事件處理完后又返回被中斷的程序繼續(xù)執(zhí)行,這一過(guò)程稱為中斷。中斷源引起CPU中斷的事件——中斷源。例如:外設(shè)——請(qǐng)求輸入輸出數(shù)據(jù),報(bào)告故障等事件——掉電、硬件故障、軟件錯(cuò)誤、非法操作、定時(shí)時(shí)間到等中斷源分為:外部中斷、內(nèi)部中斷內(nèi)部中斷:CPU內(nèi)部執(zhí)行程序時(shí)自身產(chǎn)生的中斷外部中斷:CPU以外的設(shè)備、部件產(chǎn)生的中斷

8086/8088的外部中斷信號(hào):INTR、NMIINTR——可屏蔽中斷請(qǐng)求,高電平有效,受IF標(biāo)志的控制。IF=1時(shí),執(zhí)行完當(dāng)前指令后CPU對(duì)它作出響應(yīng)。NMI——非屏蔽中斷請(qǐng)求,上升沿有效,任何時(shí)候CPU都要響應(yīng)此中斷請(qǐng)求信號(hào)。為何計(jì)算機(jī)中要引入中斷?提高數(shù)據(jù)傳輸率;避免了CPU不斷檢測(cè)外設(shè)狀態(tài)的過(guò)程,提高了CPU的利用率。實(shí)現(xiàn)對(duì)特殊事件的實(shí)時(shí)響應(yīng)。如多任務(wù)系統(tǒng)操作系統(tǒng)中:缺頁(yè)中斷設(shè)備中斷各類異常實(shí)時(shí)鐘,。。。等中斷過(guò)程五個(gè)步驟:中斷請(qǐng)求中斷判優(yōu)(有時(shí)還要進(jìn)行中斷源識(shí)別)中斷響應(yīng)中斷服務(wù)中斷返回以下以外部中斷為主介紹這五個(gè)步驟。1)中斷請(qǐng)求外設(shè)接口(中斷源)發(fā)出中斷請(qǐng)求信號(hào),送到CPU的INTR或NMI引腳;中斷請(qǐng)求信號(hào):邊沿請(qǐng)求,電平請(qǐng)求例如,NMI為邊沿請(qǐng)求,INTR為電平請(qǐng)求中斷請(qǐng)求信號(hào)應(yīng)保持到中斷被處理為止;CPU響應(yīng)中斷后,中斷請(qǐng)求信號(hào)應(yīng)及時(shí)撤銷。在8086/8088系統(tǒng)中,外設(shè)的中斷要經(jīng)過(guò)8259A可編程中斷控制器(PIC)的排隊(duì)判優(yōu)后向CPU發(fā)出:

(I/O接口)

→PIC→CPU2.1)中斷源識(shí)別計(jì)算機(jī)中的中斷源有很多,CPU必須識(shí)別是哪一個(gè)設(shè)備產(chǎn)生中斷。識(shí)別中斷源有兩個(gè)方法:軟件查詢。將中斷信號(hào)從數(shù)據(jù)總線讀入,用程序進(jìn)行判別中斷矢量法。由中斷源提供中斷類型號(hào),CPU根據(jù)類型確定中斷源。2.2)中斷判優(yōu)多個(gè)中斷源產(chǎn)生中斷,CPU首先為誰(shuí)服務(wù)? ——中斷優(yōu)先級(jí)排隊(duì)問(wèn)題。中斷優(yōu)先級(jí)控制要處理兩種情況:對(duì)同時(shí)產(chǎn)生的中斷:應(yīng)首先處理優(yōu)先級(jí)別較高的中斷;若優(yōu)先級(jí)別相同,則按先來(lái)先服務(wù)的原則處理;對(duì)非同時(shí)產(chǎn)生的中斷:低優(yōu)先級(jí)別的中斷處理程序允許被高優(yōu)先級(jí)別的中斷源所中斷——即允許中斷嵌套。中斷優(yōu)先級(jí)的控制方法硬件判優(yōu)——鏈?zhǔn)脚袃?yōu)、并行判優(yōu)(中斷向量法)軟件判優(yōu)——順序查詢中斷請(qǐng)求,先查詢的先服務(wù)(即先查詢的優(yōu)先級(jí)別高)通常將中斷判優(yōu)與中斷源識(shí)別合并在一起進(jìn)行處理。x86系統(tǒng)中,這項(xiàng)任務(wù)由PIC和CPU共同完成。INTAINCPUINTAINTR外設(shè)1外設(shè)2外設(shè)接口1菊花鏈邏輯電路外設(shè)接口2外設(shè)3外設(shè)接口3≥1菊花鏈邏輯電路菊花鏈邏輯電路┇I(xiàn)REQIREQIREQ中斷確認(rèn)鏈?zhǔn)脚袃?yōu)電路原理圖INTAININTAIN中斷確認(rèn)中斷確認(rèn)菊花鏈邏輯電路INTAINIREQINTR&=1

≥1INTAOUTDB三態(tài)門中斷向量碼E外設(shè)接口中斷確認(rèn)菊花鏈邏輯電路3)中斷響應(yīng)在每條指令的最后一個(gè)時(shí)鐘周期,CPU檢測(cè)INTR或NMI信號(hào)。若以下條件成立,則CPU響應(yīng)中斷:當(dāng)前指令執(zhí)行完。對(duì)INTR,還應(yīng)滿足以下條件當(dāng)前指令是STI和IRET,則下條指令也要執(zhí)行完。當(dāng)前指令帶有LOCK、REP等指令前綴時(shí),則把它們看成一個(gè)整體,要求完整地執(zhí)行完;對(duì)INTR,CPU應(yīng)處于開(kāi)中斷狀態(tài),即IF=1;當(dāng)前沒(méi)有復(fù)位(RESET)和保持(HOLD)信號(hào)。若NMI和

INTR同時(shí)發(fā)生,則首先響應(yīng)NMI。CPU中斷響應(yīng)時(shí),要做下述三項(xiàng)工作:向中斷源發(fā)出INTA中斷響應(yīng)信號(hào);斷點(diǎn)保護(hù),包括CS、IP和PSW(FLAGS)。這主要是保證中斷結(jié)束后能返回被中斷的程序。獲得中斷服務(wù)程序首地址(入口)。如何得到中斷處理程序的首地址?固定入口法中斷向量法——常用4)中斷處理(中斷服務(wù))中斷服務(wù)子程序特點(diǎn)為”遠(yuǎn)”過(guò)程(類型為FAR)要用IRET指令返回中斷服務(wù)子程序要做的工作保護(hù)現(xiàn)場(chǎng)(PUSHreg’s)

開(kāi)中斷(STI)

進(jìn)行中斷處理

關(guān)中斷恢復(fù)現(xiàn)場(chǎng)(POPreg’s)

5)中斷返回執(zhí)行中斷返回指令I(lǐng)RETIRET指令將使CPU把堆棧內(nèi)保存的斷點(diǎn)信息彈出到IP、CS和FLAG中,保證被中斷的程序從斷點(diǎn)處能夠繼續(xù)往下執(zhí)行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG進(jìn)入中斷服務(wù)程序時(shí)中斷返回后7.28088的中斷系統(tǒng)

8088的中斷系統(tǒng)采用向量中斷機(jī)制能夠處理256個(gè)中斷用中斷向量號(hào)0~255區(qū)別可屏蔽中斷還需要借助專用中斷控制器Intel8259A實(shí)現(xiàn)優(yōu)先權(quán)管理8086/8088中斷源類型非屏蔽中斷源中斷邏輯INTO指令單步中斷除法錯(cuò)誤INTN指令CPUINTRNMI可屏蔽中斷源8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7外設(shè)中斷源

INTA內(nèi)部中斷除法錯(cuò)中斷溢出中斷單步中斷指令中斷外部中斷非屏蔽中斷可屏蔽中斷1.內(nèi)部中斷內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷利用內(nèi)部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時(shí)異常情況的有效途徑例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用⑴

除法錯(cuò)中斷在執(zhí)行除法指令時(shí),若除數(shù)為0或商超過(guò)了寄存器所能表達(dá)的范圍,則產(chǎn)生一個(gè)向量號(hào)為0的內(nèi)部中斷,稱為除法錯(cuò)中斷例如:movbl,0idiv

bl

;除數(shù)BL=0,產(chǎn)生除法錯(cuò)中斷movax,200hmovbl,1divbl

;商=200H,不能用AL表達(dá) ;產(chǎn)生除法錯(cuò)中斷(2)單步中斷若單步中斷TF為1,則在每條指令執(zhí)行結(jié)束后產(chǎn)生一個(gè)向量號(hào)為1的內(nèi)部中斷,稱為單步中斷例如:DEBUG.EXE調(diào)試程序的單步命令T就利用單步中斷實(shí)現(xiàn)對(duì)程序的單步調(diào)試(3)溢出中斷在執(zhí)行溢出中斷指令I(lǐng)NTO時(shí),若溢出標(biāo)志OF為1,則產(chǎn)生一個(gè)向量號(hào)為4的內(nèi)部中斷,被稱為溢出中斷例如:movax,2000haddax,7000h

;2000H+7000H=9000H,溢出:OF=1into ;因?yàn)镺F=1,所以產(chǎn)生溢出中斷(4)指令中斷在執(zhí)行中斷調(diào)用指令I(lǐng)NTn時(shí)產(chǎn)生的一個(gè)向量號(hào)為n(0~255)的內(nèi)部中斷,稱為指令中斷其中向量號(hào)為3的指令中斷比較特別(生成一個(gè)字節(jié)的指令代碼:11001100),常用于程序調(diào)試,被稱為斷點(diǎn)中斷例如:DEBUG.EXE調(diào)試程序的運(yùn)行命令G設(shè)置的斷點(diǎn),就是利用INT3指令實(shí)現(xiàn)的2.外部中斷外部中斷是由于8088外部提出中斷請(qǐng)求引起的程序中斷利用外部中斷,微機(jī)系統(tǒng)可以實(shí)時(shí)響應(yīng)外部設(shè)備的數(shù)據(jù)傳送請(qǐng)求,能夠及時(shí)處理外部意外或緊急事件外部中斷的原因是處理器外部隨機(jī)產(chǎn)生的,所以是真正的中斷(Interrupt)內(nèi)部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱為異常(Exception)⑴

非屏蔽中斷通過(guò)非屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷請(qǐng)求,微處理器無(wú)法禁止,將在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),這個(gè)中斷被稱為非屏蔽中斷8088的非屏蔽中斷的向量號(hào)為2,非屏蔽中斷請(qǐng)求信號(hào)為NMI非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如:電源調(diào)電前的數(shù)據(jù)保護(hù)存儲(chǔ)器讀寫錯(cuò)誤的處理⑵

可屏蔽中斷外部通過(guò)可屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),同時(shí)輸出可屏蔽中斷響應(yīng)信號(hào),這個(gè)中斷就是可屏蔽中斷8088的可屏蔽中斷請(qǐng)求和響應(yīng)信號(hào)分別是INTR和INTA*;由IF標(biāo)志控制可屏蔽中斷是否允許響應(yīng);向量號(hào)來(lái)自外部中斷控制器8088通常需要配合中斷控制器8259A共同處理可屏蔽中斷可屏蔽中斷主要用于主機(jī)與外設(shè)交換數(shù)據(jù)中斷標(biāo)志IF的狀態(tài)IF=0:可屏蔽中斷不會(huì)被響應(yīng)關(guān)中斷、禁止中斷、中斷屏蔽系統(tǒng)復(fù)位,使IF=0任何一個(gè)中斷被響應(yīng),使IF=0執(zhí)行指令CLI,使IF=0IF=1:可屏蔽中斷不會(huì)被響應(yīng)開(kāi)中斷、允許中斷、中斷開(kāi)放執(zhí)行指令STI,使IF=1執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)明確IF標(biāo)志的狀態(tài)是關(guān)鍵中斷源的識(shí)別8088系統(tǒng)采用中斷類型碼來(lái)識(shí)別不同的中斷源,每個(gè)中斷源都有一個(gè)與它相對(duì)應(yīng)的中斷類型碼。溢出、斷點(diǎn)、除法溢出、單步、非屏蔽中斷的類型碼為固定值指令中斷的類型碼由指令給出可屏蔽中斷的類型碼由PIC給出CPU響應(yīng)INTR中斷時(shí),會(huì)產(chǎn)生兩個(gè)中斷響應(yīng)總線周期,要求PIC在第2個(gè)中斷響應(yīng)總線周期把中斷類型碼放到數(shù)據(jù)總線上,供CPU讀入。中斷向量表(IVT)

存放各類中斷的中斷服務(wù)程序的入口地址(段和偏移)——中斷向量

表的地址位于內(nèi)存的00000H~003FFH,大小為1KB,共256個(gè)中斷向量每個(gè)中斷向量占用4Bytes,低字為段內(nèi)偏移,高字為段基址向量號(hào)為N的中斷向量的物理地址=N×4中斷向量表的初始化初始化——將中斷服務(wù)程序的入口地址放入向量表例:中斷類型碼為48H的中斷處理子程序的名字為int48h,編寫程序段將該中斷處理子程序的入口地址放入向量表。CLIMOVAX,0MOVDS,AXMOVSI,48H*4MOVAX,OFFSETint48hMOV[SI],AXMOVAX,SEGint48hMOV[SI+2],AX

STI8086/8088CPU的中斷響應(yīng)過(guò)程

內(nèi)部中斷響應(yīng)過(guò)程

無(wú)INTA#周期中斷類型碼固定或由指令給出響應(yīng)過(guò)程主要步驟: ①PUSHFLAG ②IF=0

③PUSHCS

④PUSH

IP

⑤取中斷向量送入IP和CS外部中斷響應(yīng)過(guò)程非屏蔽中斷,與內(nèi)部中斷響應(yīng)過(guò)程類似

可屏蔽中斷INTA#(1),PIC進(jìn)行優(yōu)先級(jí)排隊(duì)判優(yōu)處理INTA#(2),PIC把中斷類型碼放到DB上,CPU讀入PUSHFLAGIF=0PUSHCSPUSH

IP取中斷向量送入IP和CS與內(nèi)部中斷一樣8088系統(tǒng)中各中斷的優(yōu)先級(jí)優(yōu)先級(jí)從高到低順序如下:內(nèi)部中斷NMIINTR單步中斷NYNYNNNNNYY執(zhí)行指令執(zhí)行完否?取指令I(lǐng)F=1?內(nèi)部中斷?NMI?INTR?TF=1?類型碼=0~255類型碼=2類型碼=1中斷響應(yīng),讀回類型碼FLAG入棧TEMP←TFTF=TF=0CS、IP入棧計(jì)算向量表地址高字→CS低字→IP執(zhí)行中斷服務(wù)程序NMI?TEMP=1?轉(zhuǎn)入中斷服務(wù)程序恢復(fù)CS和IP恢復(fù)FLAGS返回被中斷的程序YYYYNIRET指令的操作8086/8088的中斷處理流程:NMI、INTR、單步和除法錯(cuò)中斷同時(shí)產(chǎn)生時(shí)的中斷處理過(guò)程:DIVTF=1IF=1INTRNMIPUSHFLAGS、CS、IPCLEARIF&TF,中斷入口→CS:IP除法錯(cuò)NMI(IF、TF=0)PUSHFLAGS、CS、IPCLEARIF&TF,中斷入口→CS:IPNMI中斷處理程序除法錯(cuò)中斷處理程序(IF、TF=0)返回執(zhí)行下條指令識(shí)別出INTR(IF、TF=1)返回INTR仍然有效繼續(xù)單步執(zhí)行程序INTR中斷處理程序INTRPUSHFLAGS、CS、IPCLEARIF&TF,中斷入口→CS:IP單步(IF、TF=0)PUSHFLAGS、CS、IPCLEARIF&TF,中斷入口→CS:IP單步中斷處理程序(IF、TF=0)返回(IF、TF=1)返回7.3

可編程中斷控制器8259AIntel8259A是可編程中斷控制器PIC用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中斷8259A的基本功能一片8259A可以管理8級(jí)中斷,可擴(kuò)展至64級(jí)每一級(jí)中斷都可單獨(dú)被屏蔽或允許在中斷響應(yīng)周期,可提供相應(yīng)的中斷向量號(hào)8259A設(shè)計(jì)有多種工作方式,可通過(guò)編程選擇D7~D0INTAINT中斷請(qǐng)求寄存器中斷屏蔽寄存器數(shù)據(jù)總線緩沖器IR0IR7讀/寫控制邏輯級(jí)聯(lián)緩沖器比較器RDWRA0CSCAS0CAS1CAS2SP/EN優(yōu)先權(quán)判別電路中斷服務(wù)寄存器控制邏輯7.3.18259A的內(nèi)部結(jié)構(gòu)中斷請(qǐng)求寄存器IRR保存8條外界中斷請(qǐng)求信號(hào)IR0~IR7的請(qǐng)求狀態(tài)Di位為1表示IRi引腳有中斷請(qǐng)求;為0表示無(wú)請(qǐng)求中斷服務(wù)寄存器ISR保存正在被8259A服務(wù)著的中斷狀態(tài)Di位為1表示IRi中斷正在服務(wù)中;為0表示沒(méi)有被服務(wù)中斷屏蔽寄存器IMR保存對(duì)中斷請(qǐng)求信號(hào)IR的屏蔽狀態(tài)Di位為1表示IRi中斷被屏蔽(禁止);為0表示允許7.3.28259A的工作過(guò)程8259A對(duì)中斷請(qǐng)求的處理過(guò)程如下:當(dāng)某IRi有效時(shí),IRR相應(yīng)位置1若有效的IRi未被屏蔽,則向CPU發(fā)出中斷請(qǐng)求檢測(cè)到第1個(gè)INTA#信號(hào)后,置ISRi=1,IRRi=0

檢測(cè)到第2個(gè)INTA#信號(hào)后,把ISRi=1中最高優(yōu)先級(jí)的中斷類型碼放到DB上若工作在AEOI方式,在第2個(gè)INTA#結(jié)束時(shí),使ISRi復(fù)位;否則由CPU發(fā)出EOI命令使ISRi復(fù)位7.3.38259A的工作方式8259A的工作方式有如下幾類:中斷優(yōu)先方式與中斷嵌套中斷結(jié)束處理方式

屏蔽中斷源的方式中斷觸發(fā)方式級(jí)聯(lián)工作方式中斷優(yōu)先方式與中斷嵌套中斷優(yōu)先方式

兩類優(yōu)先級(jí)控制方式:固定優(yōu)先級(jí)和循環(huán)優(yōu)先級(jí)固定優(yōu)先級(jí)方式所有中斷請(qǐng)求IRi的中斷優(yōu)先級(jí)固定不變優(yōu)先級(jí)排列順序可編程改變加電后8259A的默認(rèn)方式,默認(rèn)優(yōu)先級(jí)順序從高到低為IR0~IR7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低級(jí)最高級(jí)最高級(jí)最低級(jí)優(yōu)先級(jí)IR7IR6IR5IR4IR3IR2IR1IR0默認(rèn)優(yōu)先級(jí)優(yōu)先級(jí)可編程改變循環(huán)優(yōu)先級(jí)方式

中斷源輪流處于最高優(yōu)先級(jí),即自動(dòng)中斷優(yōu)先級(jí)循環(huán)初始優(yōu)先級(jí)順序可用編程改變某中斷請(qǐng)求IRi被處理后,其優(yōu)先級(jí)別自動(dòng)降為最低,原來(lái)比它低一級(jí)的中斷上升為最高級(jí)

IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低級(jí)最高級(jí)最高級(jí)最低級(jí)ISR內(nèi)容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服務(wù)結(jié)束以前0101000001000000IR4的服務(wù)結(jié)束以后ISRi中斷嵌套方式在中斷處理過(guò)程中允許被更高優(yōu)先級(jí)的事件所中斷稱為中斷嵌套。8259A有兩種中斷嵌套方式:普通全嵌套方式(默認(rèn)方式)

中斷正被處理時(shí),只有更高優(yōu)先級(jí)的事件可以打斷當(dāng)前的中斷處理過(guò)程而被服務(wù)。特殊全嵌套方式

中斷正被處理時(shí),允許同級(jí)或更高優(yōu)先級(jí)的事件可以打斷當(dāng)前的中斷處理過(guò)程而被服務(wù)。注:特殊全嵌套僅用于多個(gè)8259A級(jí)連時(shí)的主8259A,而不能用于從屬8259A或單8259A系統(tǒng)。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:從片的INT被主片封鎖,故更高級(jí)別的IR0-IR2中斷也無(wú)法得到響應(yīng)特殊嵌套方式:因主片不封鎖從片的INT,故級(jí)別高的IR0-IR2中斷可以得到響應(yīng)。(但I(xiàn)R3-IR7仍被本從片封鎖)C.假定IR7發(fā)生中斷,并獲得服務(wù)一般嵌套方式:IR4的中斷被服務(wù)時(shí),這些中斷將被封鎖。B.特殊嵌套方式:IR4的中斷被服務(wù)時(shí),只封鎖IR5-IR7。A.INTE.從8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式與特殊全嵌套方式的區(qū)別

去CPU中斷結(jié)束處理方式當(dāng)某一IRi中斷被服務(wù)時(shí),ISR中的相應(yīng)位ISRi=1。當(dāng)服務(wù)結(jié)束后,則必須清零該ISRi位。使ISRi=0是通過(guò)向8259A發(fā)出中斷結(jié)束命令(EOI命令)實(shí)現(xiàn)的。三種EOI命令自動(dòng)EOI(AEOI)——(自動(dòng)EOI方式)非指定EOI(NSEOI)——(正常EOI方式)指定EOI(SEOI)——(特殊EOI方式)

AEOI:在第2個(gè)INTA#結(jié)束時(shí),由8259A使ISRi自動(dòng)復(fù)位;因不保留當(dāng)前正在服務(wù)的中斷的狀態(tài),故AEOI不能用于中斷嵌套方式SEOI:由CPU發(fā)出一條SEOI命令,該EOI命令中指出了所要復(fù)位的ISR的位號(hào)。

用于特殊屏蔽方式NSEOI:由CPU發(fā)出正常EOI命令,該EOI命令使ISRi=1的位中優(yōu)先級(jí)最高的那一位復(fù)位。用于普通全嵌套方式中斷服務(wù)程序┇向從PIC發(fā)EOI命令讀從PIC的ISR全0?向主PIC發(fā)EOI命令YIRET恢復(fù)現(xiàn)場(chǎng)N特殊全嵌套方式下的EOI處理只有當(dāng)從PIC的中斷全部處理完后,才能向主PIC發(fā)EOI命令屏蔽中斷源的方式IMR屏蔽字決定了允許或禁止某位IRi所對(duì)應(yīng)的中斷:IMi=1禁止,IMi=0允許。特殊屏蔽方式:提供了允許較低優(yōu)先級(jí)的中斷能夠得到響應(yīng)的特殊手段。原理:假定當(dāng)前正在處理IR6,先進(jìn)入特殊屏蔽方式,然后設(shè)置IM6=1。這時(shí),除IR6外的所有中斷請(qǐng)求均能得到響應(yīng)。特殊屏蔽方式中只能用SEOI命令結(jié)束中斷。中斷觸發(fā)方式邊沿觸發(fā)IRi出現(xiàn)上升沿表示有中斷請(qǐng)求

電平觸發(fā)IRi出現(xiàn)高電平表示有中斷請(qǐng)求在第1個(gè)INTA#結(jié)束前,IRi必須保持高電平

級(jí)聯(lián)工作方式單片8259A可支持8個(gè)中斷源;采用多片8259A級(jí)連,可最多支持64個(gè)中斷源。n片8259A可支持7n+1個(gè)中斷源;級(jí)連時(shí)只能有一片8259A為主片,其余的均為從屬片;涉及到的8259A引腳包括:CAS0-CAS2SP#/EN#IRiINT級(jí)連電路連接方法7.3.48259A的編程使用8259A的控制命令分為初始化命令字ICWICW1~ICW4向8259A寫入ICW的過(guò)程稱為初始化編程操作命令字OCW

OCW1~OCW3向8259A寫入OCW的過(guò)程稱為操作方式編程8259A內(nèi)部寄存器的尋址方法CS#RD#WR#A0D4D3讀寫操作010000寫OCW2寫OCW3寫ICW1寫ICW2,ICW3,ICW4,OCW1(順序?qū)懭?00101x1xx00101xx讀出IRR、ISR讀出IMR需要CS#、A0、RD#、WR#和D4、D3的配合內(nèi)部寄存器的訪問(wèn)方法如下表:

8259A的初始化順序

8259的初始化流程如圖注意次序不可顛倒寫ICW1寫ICW2級(jí)連?寫ICW3需ICW4?寫ICW4NNYY8259A的控制命令字初始化8259A必須從ICW1開(kāi)始寫ICW1意味著重新初始化8259A寫入ICW1后,8259A的狀態(tài)如下:清除ISR和IMR(全0);將中斷優(yōu)先級(jí)設(shè)成初始狀態(tài):IR0最高,IR7最低;設(shè)定為一般屏蔽方式;采用非自動(dòng)中斷結(jié)束方式;狀態(tài)讀出邏輯預(yù)置為讀IRR。ICW1——初始化字LTIM:觸發(fā)方式=1高電平觸發(fā)=0上升沿觸發(fā)SNGL:級(jí)連控制=1單片=0級(jí)連IC4:ICW4控制=1要寫ICW4=0不寫ICW4(默認(rèn)ICW4為全0)A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x

x x 1LTIMxSNGL

IC4ICW2——中斷向量碼D7~D3:中斷向量碼的高5位D2~D0:最低3位為中斷源的序號(hào)IRn000~111分別對(duì)應(yīng)IR0~IR7由8259A根據(jù)中斷源的序號(hào)自動(dòng)填入例如: 若ICW2命令字為48H,則IR0的中斷向量碼為48H,IR7的中斷向量碼為4FH,等等。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7

T6 T5 T4 T3 x x

xICW3——級(jí)連控制字

主片的級(jí)聯(lián)控制字

Si=1對(duì)應(yīng)IRi線上連接了從片

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7

S6 S5 S4 S3 S2 S1

S0從片的級(jí)聯(lián)控制字

ID2~ID0標(biāo)識(shí)碼,說(shuō)明本從片連接到主片的哪個(gè)IR引腳上。000~111分別對(duì)應(yīng)IR0~IR7。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 0

0 0 0 0 ID2 ID1

ID0ICW3必須與主從片的連接關(guān)系一致:

例如,主片的IR4與從片的INT線連接,則主片的ICW3=10H,從片的ICW3=04H。中斷響應(yīng)時(shí),主片通過(guò)級(jí)連線CAS2-CAS0送出被允許中斷的從片標(biāo)識(shí)碼,各從片用自己的ICW3與CAS2-CAS0比較,二者一致的從片才可發(fā)送中斷向量碼。ICW4——中斷結(jié)束方式字

SFNM:特殊全嵌套1特殊全嵌套方式0一般全嵌套方式AEOI:自動(dòng)EOI1自動(dòng)EOI方式0非自動(dòng)EOI方式A0 D7 D6 D5D4 D3 D2 D1 D0

1 0

0 0SFNM BUF M/S AEOI

1BUF:緩沖方式M/S:主/從緩沖選擇BUFM/S11緩沖方式/主PIC10緩沖方式/從PIC0x非緩沖方式/正常8259A的操作命令字OCW

OCW用于設(shè)置8259的工作狀態(tài)在初始化后寫入OCW的寫入順序可任意寫入地址要求:OCW1必須寫入奇地址端口(A0=1)OCW2,OCW3必須寫入偶地址端口(A0=0)

OCW1——中斷屏蔽字

OCW1將寫入IMR寄存器。Mi=1中斷請(qǐng)求線IRi被屏蔽(不允許中斷)=0允許該IRi中斷A0=1時(shí)讀OCW1可讀出設(shè)置的IMR內(nèi)容。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7

M6 M5 M4 M3 M2 M1

M0OCW2——中斷結(jié)束和優(yōu)先級(jí)循環(huán)

L2~L0:優(yōu)先級(jí)編碼R:優(yōu)先級(jí)自動(dòng)循環(huán)SL:指定優(yōu)先級(jí)EOI:結(jié)束中斷命令

RSLEOI001非指定EOI命令(NSEOI),全嵌套方式011指定EOI命令(SEOI),全嵌套方式,按L2-L0編碼復(fù)位ISR101NSEOI命令,優(yōu)先級(jí)自動(dòng)循環(huán)100自動(dòng)EOI,設(shè)置優(yōu)先級(jí)自動(dòng)循環(huán)000自動(dòng)EOI,取消優(yōu)先級(jí)自動(dòng)循環(huán)(固定優(yōu)先級(jí))111SEOI命令,按L2-L0編碼循環(huán)優(yōu)先級(jí)(L2-L0設(shè)為最低優(yōu)先級(jí))110按L2-L0編碼循環(huán)優(yōu)先級(jí)(L2-L0設(shè)為最低優(yōu)先級(jí))

A0 D7 D6 D5 D4 D3 D2 D1 D0

0 R

SL EOI 0 0 L2 L1

L0OCW3——屏蔽方式和讀出控制字

ESMM:允許使能特殊屏蔽方式SMM:

特殊屏蔽方式ESMMSMM11特殊屏蔽方式置位10特殊屏蔽方式復(fù)位0x非特殊屏蔽方式P(Polling):=1查詢方式

=0非查詢方式A0 D7 D6 D5 D4 D3 D2 D1 D0

0 0 ESMM SMM 0 1 P RR RISRR:讀寄存器RIS:ISR/IRR選擇RRRIS11讀ISR10讀IRR0x無(wú)效查詢方式允許8259A不工作于中斷方式,而是以查詢方式工作。CPU先寫一個(gè)D2=1的OCW3,再對(duì)同一地址讀入,即可得到如下?tīng)顟B(tài)字節(jié):

IxxxxR2R1R0

I=1表示有中斷請(qǐng)求,中斷請(qǐng)求號(hào)為R2-R0

此查詢步驟可反復(fù)執(zhí)行,以響應(yīng)多個(gè)同時(shí)發(fā)生的中斷。讀IRR/ISR:寫入此命令后,隨后再對(duì)同一地址讀,即可得到IRR或ISR的內(nèi)容。8259A編程舉例按以下要求初始化

溫馨提示

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