微機(jī)原理8259課件_第1頁
微機(jī)原理8259課件_第2頁
微機(jī)原理8259課件_第3頁
微機(jī)原理8259課件_第4頁
微機(jī)原理8259課件_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

中斷控制系統(tǒng)

中斷最初是作為處理器與外部設(shè)備交換信息的一種控制方式提出的。由此,最初的中斷全部是對外部設(shè)備而言的,稱為外部中斷或硬件中斷。

隨著計算機(jī)技術(shù)的發(fā)展,中斷的范圍也隨之?dāng)U大,出現(xiàn)了內(nèi)部軟件中斷的概念,它是為解決機(jī)器內(nèi)部運(yùn)行時出現(xiàn)的異常以及為編程方便而提出的。外部中斷或硬件中斷通常稱為中斷,軟件中斷或異常中斷通常稱為異常(Exception)5.3.1中斷的基本概念不論哪種中斷都遵循同樣的中斷處理過程中斷源中斷請求

當(dāng)前程序中斷服務(wù)程序程序斷點(diǎn)中斷返回中斷響應(yīng)中斷:處理器暫停執(zhí)行當(dāng)前程序,轉(zhuǎn)而處理隨機(jī)發(fā)生的事件,處理完畢后再返回到斷點(diǎn)處繼續(xù)執(zhí)行原來程序的過程中斷的引入目前計算機(jī)都具有中斷功能,它已成為計算機(jī)不可缺少的組成部分。中斷的引入,具有較多的優(yōu)點(diǎn)。

1.分時操作利用中斷功能,就可以使CPU和外設(shè)實(shí)現(xiàn)一定程度的并行工作。

如CPU啟動外設(shè)工作后,就繼續(xù)執(zhí)行主程序,當(dāng)外設(shè)把數(shù)據(jù)準(zhǔn)備好后,發(fā)出中斷請求信號,CPU響應(yīng)后暫時中斷它的程序,轉(zhuǎn)去執(zhí)行相應(yīng)的輸入或輸出操作。中斷處理完以后,CPU恢復(fù)執(zhí)行原來被中斷的程序,繼續(xù)往下執(zhí)行。此時,外設(shè)也在繼續(xù)工作,實(shí)現(xiàn)了外設(shè)與CPU的并行操作。

有了中斷功能,CPU可命令多個外設(shè)同時進(jìn)行工作,這樣就大大提高了CPU的利用率,也提高了輸入輸出的速度。2.實(shí)現(xiàn)實(shí)時處理計算機(jī)用于實(shí)時處理時,中斷是一個十分重要的功能?,F(xiàn)場的各個參數(shù)、信息,如需要的話可在任何時刻發(fā)出中斷請求信號,要求CPU立即響應(yīng)進(jìn)行處理,這時CPU中斷正在執(zhí)行的程序,轉(zhuǎn)去進(jìn)行中斷服務(wù)程序,實(shí)現(xiàn)實(shí)時處理。這種及時處理的功能在查詢的工作方式下是做不到的。3.故障處理計算機(jī)在運(yùn)行過程中,往往會出現(xiàn)事先預(yù)料不到的硬件故障或軟件故障,如電源掉電、存儲出錯、運(yùn)算溢出等。這時計算機(jī)就可以利用中斷系統(tǒng)自行處理,中斷原程序而轉(zhuǎn)去執(zhí)行故障處理程序。中斷源引起中斷的原因或能發(fā)出中斷申請的來源,稱為中斷源。通常中斷源有以下四種。

1.輸入輸出設(shè)備如鍵盤、打印機(jī)、磁盤、通信接口等輸入輸出設(shè)備在工作時,可以發(fā)出中斷請求,以請求新的輸入、輸出操作。2.實(shí)時時鐘計算機(jī)使用中經(jīng)常會遇到對時間進(jìn)行控制的問題。通常用外部時鐘電路(例如8253或8254定時計數(shù)器電路),定時產(chǎn)生時間基準(zhǔn)信號,解決時間控制問題。例如為了定時,可由時鐘電路在CPU控制下啟動定時,定時結(jié)束時,就向CPU發(fā)出中斷請求信號以實(shí)現(xiàn)定時控制。3.故障源計算機(jī)工作過程中,遇到故障時,可以向CPU發(fā)出中斷請求,由CPU對故障進(jìn)行處理。例如在系統(tǒng)工作中,電源突然掉電,就向CPU發(fā)出中斷請求信號,CPU響應(yīng)后保護(hù)現(xiàn)場,以便在供電恢復(fù)后,恢復(fù)斷電時的現(xiàn)場,使程序從斷電處繼續(xù)運(yùn)行。這樣就可以避免由于斷電而導(dǎo)致計算機(jī)的工作前功盡棄。中斷還用于運(yùn)算中的溢出處理,以保證不產(chǎn)生錯誤的運(yùn)行結(jié)果。4.為調(diào)試程序而設(shè)置的中斷源在程序調(diào)試時,為了檢查中間結(jié)果以及尋找錯誤的原因,常常希望程序運(yùn)行中能停在某個地方,以便對寄存器及存儲器的內(nèi)容進(jìn)行檢查,或通過單步執(zhí)行指令以查找出錯的原因,這些工作也要用中斷方式來實(shí)現(xiàn)。

中斷系統(tǒng)的功能

1.實(shí)現(xiàn)中斷及返回當(dāng)某一中斷源發(fā)出中斷請求時,CPU將根據(jù)中斷標(biāo)志位IF的狀態(tài)決定是否響應(yīng)這一中斷請求。若允許中斷,CPU響應(yīng)中斷時,必須有自動保護(hù)斷點(diǎn)的能力,并自動轉(zhuǎn)到中斷處理程序的入口,進(jìn)行中斷處理。在執(zhí)行完中斷處理后,自動恢復(fù)斷點(diǎn),使CPU返回斷點(diǎn)處,繼續(xù)執(zhí)行原來的程序。2.實(shí)現(xiàn)優(yōu)先級處理在有多個中斷源的系統(tǒng)中,可能會出現(xiàn)兩個或多個中斷源同時提出中斷請求的情況,此時,應(yīng)該根據(jù)任務(wù)的輕重緩急,為每一個中斷源確定一個中斷優(yōu)先級。級別高的中斷請求首先得到響應(yīng),在CPU為高優(yōu)先級的中斷源服務(wù)之后,再響應(yīng)級別低的中斷源。3.中斷嵌套當(dāng)CPU響應(yīng)某一中斷源的請求,并正在進(jìn)行中斷處理時,如果遇到更高級別的中斷源的請求,高優(yōu)先級中斷請求可以中斷正在進(jìn)行的低優(yōu)先級中斷處理,轉(zhuǎn)去響應(yīng)高優(yōu)先級的請求,并執(zhí)行高優(yōu)先級中斷源所對應(yīng)的中斷處理程序,這種中斷工作方式稱為中斷嵌套。中斷的類型PC系列微機(jī)最多可以支持256種中斷,它們被分為四種類型:1.內(nèi)部中斷和異常:被零除、單步、溢出、斷點(diǎn)2.軟件中斷:指令中斷INTn3.外部可屏蔽中斷:INTR4.外部非屏蔽中斷:NMI

每個中斷和異常都指定了一個類型號。1.內(nèi)部中斷和異常

處理器執(zhí)行某些操作而引起的中斷,包括除法錯誤異常、單步調(diào)試中斷、斷點(diǎn)中斷等

這類中斷使用了0H~07H中的若干個中斷號INT0--------除法錯誤,沒有INT0形式的指令,CPU自動產(chǎn)生INT1--------單步中斷,同樣也沒有INT1形式的指令,TF=1時產(chǎn)生INT2--------NMI,CPU處理外部緊急事件,硬件中斷INT3---------格式:INT,斷點(diǎn)中斷INT4---------格式:INTO,溢出中斷,OF=1時配合INTO執(zhí)行2.軟件中斷執(zhí)行有定義的INTn指令而引發(fā)的中斷,稱為軟件中斷,它的形式是INTn,包括BIOS中斷和DOS中斷,以及用戶自定義中斷等有定義的

INTn:并非所有的中斷號都有對應(yīng)的中斷服務(wù)程序,沒有定義的中斷的INTn是無意義的。定義

INTn包含三個內(nèi)容:1。確定合適的中斷號n2。用過程的形式完成中斷服務(wù)子程序3。將此過程的邏輯地址植入相應(yīng)的中斷矢量3.外部可屏蔽中斷

外部可屏蔽中斷是處理器響應(yīng)各種外部硬件中斷的最常用的方法,通過CPU的INTR引腳產(chǎn)生外部可屏蔽中斷,受處理器內(nèi)部的中斷允許標(biāo)志位IF的控制,處理器以電平觸發(fā)方式接受INTR請求,當(dāng)每條指令結(jié)束時,若INTR為高電平且IF=1,則CPU響應(yīng)相應(yīng)I/O接口的中斷請求。(注意:硬件可屏蔽中斷沒有INTn的指令形式,但是它有INTn的實(shí)質(zhì)性的內(nèi)容,并且中斷的發(fā)生是由INTR硬件引入)

處理器只有一個INTR引腳可以接受外部可屏蔽中斷請求,為了管理眾多的外部中斷源,微機(jī)系統(tǒng)中采用可編程中斷控制器8259。

PC系列機(jī)通過兩片8259級連可以響應(yīng)15個外部中斷源。4.外部非屏蔽中斷

為外部緊急請求提供服務(wù)的中斷,通過處理器的NMI引腳產(chǎn)生.NMI輸入是上升沿觸發(fā)的,只要NMI輸入端上出現(xiàn)由0到1的跳變,一個中斷服務(wù)請求就被鎖存在CPU中,與IF標(biāo)志的狀態(tài)無關(guān)NMI有一個專用的類型號02H使用非屏蔽中斷的典型例子是電源故障中斷中斷的優(yōu)先級與中斷嵌套通常一個系統(tǒng)有多個中斷源,而CPU同一時刻只能響應(yīng)一個中斷源的請求,那么當(dāng)多個中斷源同時請求中斷服務(wù)時,應(yīng)該先響應(yīng)哪一個,有一個次序安排的問題。按中斷源的輕重緩急程度確定的優(yōu)先級別,稱為優(yōu)先級。除法錯INT0指令I(lǐng)NTn溢出INTONMIINTR單步INT1優(yōu)先級遞增高低

當(dāng)CPU正在響應(yīng)某一中斷源的請求,執(zhí)行為其服務(wù)的中斷服務(wù)程序時,如果有優(yōu)先級更高的中斷源發(fā)出請求,CPU將中止正在執(zhí)行的中斷服務(wù)程序而轉(zhuǎn)入為新的中斷源服務(wù),等新的中斷服務(wù)程序執(zhí)行完后,再返回到被中止的中斷服務(wù)程序,這一過程稱為中斷嵌套。中斷嵌套可以有多級,具體級數(shù)原則上不限,只取決于堆棧深度1#中斷請求響應(yīng)返回1#中斷服務(wù)程序2#中斷請求響應(yīng)返回2#中斷服務(wù)程序3#中斷請求響應(yīng)返回3#中斷服務(wù)程序原主程序中斷優(yōu)先級3#>2#>1#

8088在內(nèi)存的前1k字節(jié)建立了一個中斷向量表,可存儲256個中斷向量,每個中斷向量占用4個字節(jié),分別存放中斷服務(wù)程序入口地址的段地址和偏移量。每個中斷向量以類型碼加以區(qū)別,如:

Int21hInt10h

鍵盤中斷類型碼9

當(dāng)執(zhí)行中斷時,CPU將類型碼乘以4后,得到中斷向量地址,進(jìn)而得到IP和CS的值,它就是中斷服務(wù)程序的入口地址,程序由此轉(zhuǎn)入中斷服務(wù)程序執(zhí)行。000000000C00013C1F1F3C:0100(1F4C0)PUSHAXPUSHBX003FF中斷向量表INT3中斷服務(wù)程序中斷向量

中斷向量中斷矢量及中斷矢量表在8088/8086系統(tǒng)中,為了方便中斷處理程序的管理,把所有中斷處理程序的入口地址都集中在一起,構(gòu)成一個中斷矢量表。而中斷矢量即為中斷處理程序的入口地址。每個中斷處理程序的入口地址都為一個表項,共占4個字節(jié),高地址的兩個字節(jié)存放中斷處理程序的段基址,低地址的兩個字節(jié)存放中斷處理程序的段內(nèi)偏移量,如圖所示。

這個表被安排在絕對地址00000H至003FFH共1KB的范圍內(nèi),可容納256個中斷向量(或256個中斷類型)。如對每一個中斷源都進(jìn)行統(tǒng)一編號,那么不同的中斷源有自己特定的中斷矢量碼或稱中斷類型碼,將中斷類型碼乘4便得到中斷矢量的地址中斷向量表

地址(Hex)類型碼中斷名稱

0—30除以04—71單步

8—B2非屏蔽

C—F3斷點(diǎn)

10—134溢出

14—175打印屏幕

18—1B6保留

1D—1F7保留

20—238定時器

24—279鍵盤

28—2BA保留的硬中斷

2C—2FB異步通信(COM2)

30—33C異步通信(COM1)

34—37D硬盤

38—3BE軟盤

3C—3FF并行打印機(jī)地址(Hex)類型碼中斷名稱40—4310視頻顯示I/O調(diào)用44—4711設(shè)備檢測調(diào)用48—4B12存儲器容量檢測4C—4F13軟/硬盤I/O調(diào)用50—5314通信I/O調(diào)用54—5715盒式磁帶I/O調(diào)用58—5B16鍵盤I/O調(diào)用5C—5F17打印機(jī)I/O調(diào)用60—6318ROMBASIC64—6719引導(dǎo)程序入口68—6B1A時間調(diào)用6C—6F1B鍵盤CTRL-BREAK控制70—731C定時器報時74—771D顯示器參數(shù)表78—7B1E軟盤參數(shù)表地址(Hex)類型碼中斷名稱7C—7F1F字符點(diǎn)陣結(jié)構(gòu)參數(shù)表80—8320程序結(jié)束,返回DOS84—8721DOS系統(tǒng)功能調(diào)用88—8B22程序結(jié)束地址8C—8F23CTRL_BREAK退出地址90—9324標(biāo)準(zhǔn)錯誤出口地址94—9725絕對磁盤讀98—9B26絕對磁盤寫9C—9F27程序結(jié)束,駐留內(nèi)存A0—FF28—3F為DOS保留100—17F40—5F保留180—19F60—67為用戶軟中斷保留1A0—1FF68—7F不用200—21780—85BASIC使用218—3C386—F0BASIC運(yùn)行時,用于解釋3C4—3FFF1—FF未用中斷類型號的獲取凡與0~5號中斷類型號對應(yīng)的中斷請求,一旦被響應(yīng),系統(tǒng)將自動提供中斷類型號,并自動地轉(zhuǎn)到中斷處理程序中去。對于可屏蔽的外部中斷INTR,則是經(jīng)過中斷控制器8259,在CPU中斷響應(yīng)的第二個周期,將對應(yīng)的中斷類型號送至數(shù)據(jù)總線。

內(nèi)部中斷是通過INTn指令將中斷號直接告訴CPU的。中斷指令STI——開中斷指令將標(biāo)志寄存器中的中斷標(biāo)志位IF置1,允許CPU響應(yīng)來自INTR引腳的中斷請求CLI——關(guān)中斷指令將標(biāo)志寄存器中的中斷標(biāo)志位IF清0,使CPU不響應(yīng)來自INTR引腳的中斷請求INTn——軟件中斷指令n為中斷號。調(diào)用n號中斷服務(wù)程序①將標(biāo)志寄存器壓棧(1.PUSHF)②將TF置0(2.TF=0),禁止單步操作,

將IF置0(2.IF=0),使CPU處于關(guān)中斷狀態(tài)③斷點(diǎn)的CS、IP壓棧(3.PUSHCS4.PUSHIP)④從中斷向量表取n號中斷向量IP、CS(5.CS=[n*4+2],IP=[n*4])⑤轉(zhuǎn)向n號中斷服務(wù)程序IRET——中斷返回指令中斷服務(wù)程序的出口指令,從棧頂彈出6個字節(jié)依次寫入IP、CS和標(biāo)志寄存器POPIPPOPCSPOPF在執(zhí)行IRET之前必須保證棧頂是斷點(diǎn)地址,否則執(zhí)行IRET指令將導(dǎo)致系統(tǒng)癱瘓

中斷服務(wù)程序的進(jìn)入

當(dāng)CPU響應(yīng)中斷,便從中斷向量表中相繼取出偏移地址和段地址作為中斷服務(wù)程序的入口地址,而轉(zhuǎn)移去執(zhí)行中斷服務(wù)程序。因此,當(dāng)用戶要編寫自己的中斷服務(wù)程序時,必須將服務(wù)程序的入口地址填入系統(tǒng)的中斷向量表中。下面所示程序表示怎樣填寫中斷向量表,以實(shí)現(xiàn)用戶所定義的60H中斷。

CLIMOVAX,0MOVES,AXMOVDI,4*60HMOVAX,OFFSETINTRESTOSWMOVAX,SEGINTRESTOSWSTIINTREPROCPUSHAXPUSHBX…..…..…...POPBXPOPAX

IRETINTREENDPINT60H

也可以DOS功能調(diào)用實(shí)現(xiàn)這一功能。

┇CLIPUSHDSMOVAX,SEGINTRMOVDS,AXMOVDX,OFFSETINTR

;中斷服務(wù)程序入口地址放入DS:DX中MOVAH,25H;功能號25H送入AH中MOVAL,60H

;類型碼放入ALINT21H;調(diào)用21H中斷POPDSSTI┇1、必須在指令執(zhí)行完后才進(jìn)入中斷過程。2、四類中斷比較判斷是由順序的。3、CPU的中斷處理是相似的。中斷的執(zhí)行

(1)

軟中斷當(dāng)PC機(jī)執(zhí)行INTn等指令時,即產(chǎn)生了軟中斷,其執(zhí)行過程如下:

?

棧指針SP減2,標(biāo)志寄存器內(nèi)容入棧,然后清除T和I標(biāo)志,以屏蔽中斷。

?SP再次減2,將CS內(nèi)容入棧。

?

用中斷類型碼n乘4,計算中斷向量地址,將向量中的后兩個字節(jié)送CS寄存器。

?SP再次減2,把IP內(nèi)容入棧,把中斷向量中的前兩個字節(jié)送至IP。

?

由當(dāng)前的CS和IP值作為段地址和偏移量,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序中去執(zhí)行。(2)硬中斷(可屏蔽中斷)中斷響應(yīng)周期

8088響應(yīng)中斷,到轉(zhuǎn)入中斷處理,要經(jīng)過兩個中斷響應(yīng)周期。T1T2T3T4T1T2T3T4第一個中斷響應(yīng)周期第二個中斷響應(yīng)周期CLKALEINTAAD7~AD0向量類型碼第一個INTA信號:將在服務(wù)寄存器ISR相應(yīng)位置位,表示正在為響應(yīng)的那一級服務(wù);同時將中斷請求觸發(fā)器復(fù)位。為本級再次中斷請求做好準(zhǔn)備。第二個INTA信號:要求8259A輸入中斷向量類型碼??善帘沃袛嗟捻憫?yīng)過程1、接口發(fā)出中斷請求信號2、當(dāng)前指令執(zhí)行后CPU中斷應(yīng)答3、中斷類型號n送CPU4、當(dāng)前PSW、CS、IP入棧5、清除IF、TF6、(4*n)傳給IP(4*n+2)傳給CS可屏蔽中斷的響應(yīng)過程7、中斷子程序執(zhí)行8、開中斷9、恢復(fù)原PSW、CS、IP出棧10、返回被中斷程序5.3.2中斷控制器Intel8259A8259A是一種可編程中斷控制器,一片Intel8259可管理8個中斷請求,并把當(dāng)前優(yōu)先級最高的中斷請求送到CPU的INTR端。當(dāng)CPU響應(yīng)中斷時,為CPU提供中斷類型碼。在PC/AT系列微機(jī)中,使用兩片8259級聯(lián),構(gòu)成15級中斷功能

Intel8259A是兼容于8080/8085和8086/8088系列的可編程中斷控制器,其功能主要有:1)單片8259A可管理8級中斷;2)通過級連,可管理多于8級的中斷,在不增加其它電路的前提下,可使用8片8259A構(gòu)成64級主從式中斷系統(tǒng);3)每一級中斷都可通過編程使之被屏蔽或被允許;4)8259A可通過編程被設(shè)定為幾種不同的工作方式;5)8259采用NMOS工藝,只需要一組5V電源。數(shù)據(jù)總線緩沖器讀/寫邏輯

級聯(lián)緩沖比較器控制邏輯

ISR優(yōu)先權(quán)電路

IRRIMRIR0IR7D7~D0INTAINTRDWRA0CSCAS0CAS1CAS2SP/EN內(nèi)部數(shù)據(jù)總線

結(jié)構(gòu)IR18位雙向三態(tài)。是與CPU進(jìn)行數(shù)據(jù)交換的數(shù)據(jù)通道,CPU對它的讀出和寫入都是通過該緩沖器進(jìn)行的。用于CPU對8259A進(jìn)行讀寫控制用于多片8259A進(jìn)行級連根據(jù)設(shè)定的工作方式管理整個芯片的工作8位寄存器。用于存放來自外設(shè)的中斷請求信號,當(dāng)某引腳有中斷請求信號時,相應(yīng)的位被置1。00010110IRR8位寄存器。用于存放正在處理的中斷請求信號,8259A在接收到CPU的響應(yīng)信號(INTA)后,使相應(yīng)位置1。00010100ISR用于識別和管理各種中斷請求信號的優(yōu)先級別。8位寄存器。用于存放對中請求的屏蔽信息。當(dāng)某位被編程設(shè)置為1時,則相應(yīng)的中斷請求信號被屏蔽,不會被送到CPU.10000001IMRCSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDVccA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS2D7~D0數(shù)據(jù)總線(雙向)RD讀輸入WR寫輸入A0選擇內(nèi)部寄存器地址CS片選CAS2~CAS2級連線SP/EN從程序/充許緩沖INT中斷輸出INTA中斷響應(yīng)輸入IR0~IR7中斷請求輸入8259管腳對照表12822732642552462372282192010191118121713161415管腳信號A0D4D3RDWRCS輸入操作(讀)01001100IRR、ISR或中斷類型碼數(shù)據(jù)總線IMR數(shù)據(jù)總線輸出操作(寫)0001001X01XX111100000000數(shù)據(jù)總線

OCW2

數(shù)據(jù)總線

OCW3數(shù)據(jù)總線

ICW1數(shù)據(jù)總線

ICW2、ICW3、ICW4、OCW1斷開功能XXXXXX1X1X01數(shù)據(jù)總線——3態(tài)(無操作)數(shù)據(jù)總線——3態(tài)(無操作)8259A的讀寫操作工作方式[1]設(shè)置優(yōu)先級的方式(1)全嵌套方式全嵌套方式是8259最常用的工作方式。初始化后若沒有再設(shè)置其它優(yōu)先級方式(如優(yōu)先權(quán)旋轉(zhuǎn)),8259自動進(jìn)入全嵌套方式。其特點(diǎn)是:

?中斷請求優(yōu)先級順序是IRQ0——IRQ7。

?當(dāng)一個中斷被響應(yīng)時,中斷服務(wù)寄存器ISR得到相應(yīng)的那以位被置為“1”,且保持到中斷服務(wù)程序在返回前發(fā)中斷結(jié)束命令為止。

?在ISR位置位期間,禁止再發(fā)生同級或較低記得中斷,較高級的中斷請求仍能產(chǎn)生中斷。

?每個中斷請求可分別由IMR相應(yīng)位屏蔽。(2)特殊全嵌套特殊全嵌套方式同全嵌套方式只有一點(diǎn)不同,即:在特殊全嵌套方式下,當(dāng)正處理某一級中斷時,又有同級的中斷請求產(chǎn)生時,8259A也會響應(yīng),從而實(shí)現(xiàn)一種對同級中斷請求的特殊嵌套。特殊全嵌套方式一般用于多片8259A級連的系統(tǒng)中。(3)優(yōu)先級自動旋轉(zhuǎn)方式優(yōu)先級自動旋轉(zhuǎn)方式一般用于系統(tǒng)中有多個優(yōu)先級相等的中斷源的情況。在這種方式下,優(yōu)先級隊列是變化的,一個設(shè)備受到服務(wù)后,其優(yōu)先級自動降到最低。初始優(yōu)先級隊列是固定的,為:

IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7

(由高到低)。如果這時IRQ1有中斷請求,則在完成其中斷服務(wù)后,優(yōu)先級隊列變?yōu)椋ㄓ筛叩降停篒RQ0IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7IRQ1

優(yōu)先級自動旋轉(zhuǎn)方式由操作命令字OCW2設(shè)定。(4)優(yōu)先級特殊旋轉(zhuǎn)方式

優(yōu)先級特殊旋轉(zhuǎn)方式與優(yōu)先級自動旋轉(zhuǎn)方式只有一點(diǎn)不同,即:在優(yōu)先級特殊旋轉(zhuǎn)方式中,初始的最低優(yōu)先級由編程來決定,例如,設(shè)定IRQ3為最低優(yōu)先級,那么,IRQ4即為最高優(yōu)先級。

優(yōu)先級自動旋轉(zhuǎn)方式也是由操作命令字OCW2設(shè)定。(1)普通屏蔽方式

在該方式中,8259A的每一條中斷請求線都可根據(jù)需要設(shè)置屏蔽,從而使這個中斷請求不能從8259A送到CPU??梢酝ㄟ^操作命令字OCW1來設(shè)置屏蔽。8259A內(nèi)部有一個中斷屏蔽寄存器IMR,它的每一位對應(yīng)了一個中斷請求輸入,通過設(shè)置OCW1,使IMR中任一位或幾位為1,當(dāng)某位為1時,對應(yīng)的中斷請求被屏蔽。(2)特殊屏蔽方式

在某些應(yīng)用場合,希望能動態(tài)地改變系統(tǒng)的優(yōu)先級結(jié)構(gòu),即在執(zhí)行中斷服務(wù)程序的某一部分時,希望禁止某些較低級的中斷請求,而在執(zhí)行中斷服務(wù)程序的另一部分時,又能夠開放比自己級別低的中斷請求。要達(dá)到這種目的,可采用特殊屏蔽方式。設(shè)置了特殊屏蔽方式后,在中斷服務(wù)程序中用OCW1將本級中斷屏蔽的同時,

使當(dāng)前中斷服務(wù)寄存器ISR的對應(yīng)位自動清0,從而可以接受其它級別較低的中斷。(注意:在正常屏蔽方式中,設(shè)置OCW1屏蔽本級中斷時,ISR的對應(yīng)位仍為1,故不能接受較低級的中斷請求。)

特殊屏蔽方式由操作命令字OCW3來設(shè)置。[2]屏蔽中斷源的方式(1)自動中斷結(jié)束方式(AEIO)

自動中斷結(jié)束方式由初始化命令字ICW4設(shè)置。(2)非自動中斷結(jié)束方式

在這種方式下,當(dāng)中斷服務(wù)程序結(jié)束返回時,必須向8259A送中斷結(jié)束命令(

EOI),8259A在接到該命令后,將中斷服務(wù)寄存器中相應(yīng)位復(fù)位。它有兩種情況:

?

非特殊EOI命令:在全嵌套方式下,EOI命令能自動地把當(dāng)前ISR中優(yōu)先級最高的一位清0。因為在全嵌套方式中,最高的非零ISR位對應(yīng)了最后一次被響應(yīng)和被處理的中斷。也就是當(dāng)前正在處理的中斷,所以,它的復(fù)位相當(dāng)于結(jié)束了當(dāng)前正在處理的中斷。

?

特殊EOI命令:在非全嵌套方式下,因無法確定最后響應(yīng)的是哪一級中斷,故應(yīng)向8259A發(fā)特殊EOI命令。這個命令指出了要清除當(dāng)前中斷服務(wù)寄存器ISR

中的哪一位。

兩種EOI命令由操作命令字OCW2設(shè)定。[3]

結(jié)束中斷處理的方式

8259A不向CPU發(fā)INT請求信號,而由CPU發(fā)查詢命令來獲得對請求設(shè)備的中斷優(yōu)先級。其特點(diǎn)是:?

外部設(shè)備仍然通過8259A發(fā)中斷請求信號要求CPU進(jìn)行服務(wù),但8259A不是用INT信號向CPU發(fā)中斷請求信號。?CPU內(nèi)部的中斷觸發(fā)器復(fù)位,關(guān)閉外部對CPU的中斷請求。?CPU使用軟件查詢確認(rèn)中斷源,進(jìn)而對外部設(shè)備進(jìn)行中斷服務(wù)。具體步驟是:1。通過OCW3發(fā)出查詢命令,且P位=12。隨后對同一地址(A0=0)的讀(IN)指令完成中斷識別的操作:若有中斷發(fā)生,ISR相應(yīng)位為1,同時輸入一個字節(jié)的信息入AL,格式如下[4]中斷查詢方式10000

ID2ID1ID0D7D6D5D4D3D2D1D0D7=1有中斷發(fā)生中斷號[5]

多片級連方式

一個8259A主片至多帶8個從片,因此可擴(kuò)展控制64個中斷源。所有的主片和從片均分別進(jìn)行初始化,且可社定位不同的工作方式。

[6]緩沖方式

?

緩沖方式:在多片8259A級連的大系統(tǒng)中,8259A通過總線驅(qū)動器和數(shù)據(jù)總線相連,這就是緩沖方式。

?

非緩沖方式:當(dāng)系統(tǒng)中只有單片8259A使,一般將它直接與數(shù)據(jù)總線相連;另外,在一些不太大的系統(tǒng)中,即使有幾片8259A級連工作,也可以將8259A直接與數(shù)據(jù)總線相連。這種連接即位非緩沖方式。緩沖方式由ICW4設(shè)置。

8259A的編程

初始化命令字ICW(InitializationCommandWord)通常是系統(tǒng)開機(jī)時,由初始化程序填寫,且在整個系統(tǒng)工作過程中保持不變。初始化命令字必須按順序填寫。下面我們討論來討論它的格式及填寫規(guī)則。(1)ICW1

[1]初始化命令字1—需要ICW40—不需要ICW41—單片8259A0—級連調(diào)用地址間距(僅用于MCS—80/85模式)1—電平觸發(fā)方式0—邊沿觸發(fā)方式中斷向量地址(僅用于MCS—80/85模式)A0

D7D6D5D4D3D2D1D0

0A7A6A51LTIMADISNGLICW4例1:若8259A采用電平觸發(fā),單片使用,需要ICW4,則程序段為:

MOVAL,1BH;ICW1的內(nèi)容

OUT20H,AL;寫入ICW1

端口(A0=0)

ICW1命令除了上述作用之外,實(shí)際上它是對8259A進(jìn)行復(fù)位(8259A無RESET引腳),因為執(zhí)行ICW1命令會使中斷請求信號邊沿檢測電路復(fù)位,使它僅在IR信號由低變高時,才能產(chǎn)生中斷;ICW1命令清除中斷屏蔽寄存器,設(shè)置完全嵌套方式的中斷優(yōu)先級排隊,使IRQ0最高,IRQ7最低。

1A15A14A13A12A11A10A9A8

T7T6T5T4T3

中斷向量地址的A15~A8位(MCS—8080/8085模式)中斷向量地址的T7~T3位(8086/8088模式)A0

D7D6D5D4D3D2D1D01(2)ICW2注:

T7~T3—中斷向量類型碼高位,由編程決定,用于

PX86—86系統(tǒng)。低三位—自動設(shè)置為IR0~IR7

的類型編碼。D7D6D5D4D3D2D1D0IR7T7T6T5T4T3111IR6T7T6T5T4T3110IR5T7T6T5T4T3101IR4T7T6T5T4T3100IR3T7T6T5T4T3011IR2T7T6T5T4T3010IR1T7T6T5T4T3001IR0T7T6T5T4T30008259A傳送的中斷向量例2:在PC微機(jī)中斷系統(tǒng)中,硬盤中斷類型號的高5位是08H,它的中斷請求線連到8259A的IR5上,在向ICW2寫入中斷類型號時,只寫中斷類型號的高5位(08H),低3位取0:

MOVAL,08H;ICW2的內(nèi)容(中斷類型號高5位)

OUT21H,AL;寫入ICW2的端口(A0=1)

當(dāng)CPU響應(yīng)硬盤中斷請求后,8259A把IR5的編碼101作為低3位構(gòu)成一個完整的8位中斷類型號ODH,經(jīng)數(shù)據(jù)總線提供給CPU。可見外部硬中斷中斷源的中斷號(8位代碼)是由兩部分構(gòu)成的。即高5位(ICW2)加低3位(IRi的編碼)。

1S7S6S5S4S3S2S1S0

1—IR輸入帶有一個從控制器

0—IR輸入不帶一個從控制器A0

D7D6D5D4D3D2D1D01100000

ID2ID1ID0從控制器ID,編碼000~111分別對應(yīng)0~7IR輸入從片。A0

D7D6D5D4D3D2D1D01(3)ICW3(主控制器)ICW3(從控制器)

級聯(lián)的結(jié)構(gòu)形式

在級聯(lián)方式時,一般由一個作為主芯片的8259A和若干片作為從芯片的8259A組成

例3:圖5.8中主片的IR3和IR6兩個輸入端分別連接了從片A與B的INT。所以主片的ICW3=01001000B=48H。MOVAL,48H;ICW3(主)OUT21H,AL;ICW3(主)端口(A0=1)例4:圖5.8中從片A和B的請求線INT分別連到主片的IR3和IR6,所以從片A的ICW3=00000011B=03H

從片B的ICW3=00000110B=06HMOVAL,03H;ICW3(從片A)OUTOA1H,AL;ICW3(從片A)端口(AO=1)。

1—86/88模式0—80/85模式1—自動EOI0—正常EOI0X非緩沖方式

10緩沖方式/從控制器

11緩沖方式/主控制器1—特殊全嵌套方式0—非特殊全嵌套方式A0

D7D6D5D4D3D2D1D01(4)ICW4000SFNMBUFM/SAEOIμPM例5:PC微機(jī)中CPU為80286,8259A與系統(tǒng)總線之間采用緩沖器連接,非自動結(jié)束方式,只用1片8259A,正常完全嵌套。在這種條件下,ICW4=00001101B=ODHMOVAL,ODH;ICW4的內(nèi)容

OUT21H,AL;ICW4的端口(A0=1)

例6:PT86單板機(jī)中,CPU為8086,采用非自動結(jié)束方式,使用兩片8259A,非緩沖方式,為使從片也能提出中斷請求,主片采用特定完全嵌套方式。其ICW4=00010101B=15H。若將它寫入ICW4的端口,則用以下程序段:

MOVDX,0FFDEH;ICW4的端口(A0=1)

MOVAL,15H;ICW4的內(nèi)容

OUTDX,AL8259A初始化過程的流程圖如圖所示。ICW1ICW2ICW3ICW4

級連方式?需要ICW4?準(zhǔn)備接受中斷請求No(SGNL=1)

Yes(SGNL=0)

No(ICW4=0)

Yes(ICW4=1)

由CPU向8259A送三個字節(jié)的操作命令字OCW(OperationCommandWord),用以規(guī)定8259A的工作方式,如:

?中斷屏蔽

?結(jié)束中斷

?優(yōu)線權(quán)旋轉(zhuǎn)

?中斷狀態(tài)等。

操作命令字是在應(yīng)用程序中設(shè)置的,且可設(shè)置多次。設(shè)置時,順序上沒有嚴(yán)格的要求。[2]操作命令字1M7M6M5M4M3M2M1M0中斷屏蔽1——置屏蔽0——復(fù)位屏蔽A0

D7D6D5D4D3D2D1D01(1)OCW1OCW1是中斷屏蔽命令字,命令格式如圖。命令字中的M7~M0對應(yīng)IMR的各位。Mi=1表示該中斷被屏蔽,Mi=0表示該中斷開放。例7:要使中斷源IR3開放,其余均被屏蔽,其OCW1=11110111BMOVAL,0F7H;OCW1內(nèi)容

OUT21H,AL;OCW1端口(AO=1)例8:IMR寄存器的內(nèi)容,還可以讀出。如BIOS中有一段檢查中斷屏蔽寄存器的程序:

MOVAL,00H;置IMR為全0OUT21H,AL;OCW1口地址

INAL,21H;讀IMR命令格式如圖。

?R、SL、EOI的不同組合決定了8259A的幾種工作方式。

?L2~L0

這幾位確定當(dāng)SL=1時指定的特殊結(jié)束或特殊循環(huán)時的中斷優(yōu)先級。0R

SLEOI0

0

L2L1L0001非特殊EOI命令011特殊EOI命令101按非特殊EOI命令旋轉(zhuǎn)100以自動EOI方式旋轉(zhuǎn)(設(shè)置)自動旋轉(zhuǎn)000以自動EOI方式旋轉(zhuǎn)(清除)111按特殊EOI命令旋轉(zhuǎn)110置優(yōu)先權(quán)命令010無操作0000有0011效0102的0113中1004斷1015請1106求1117級別(2)OCW2A0

D7D6D5D4D3D2D1D00中斷結(jié)束特殊旋轉(zhuǎn)

例9:若對IR3中斷源采用指定中斷結(jié)束方式,則需在中斷服務(wù)程序中,中斷返回指令I(lǐng)RET之前,寫如下程序段:

MOVAL,01100011B;OCW2OUT20H,AL

;寫入,0CW2端口(A0=0)

00

ESMMSMM0

1

P

RR

RIS1=查詢命令0=非查詢命令用于控制8259A的運(yùn)行方式。命令格式如圖。(3)OCW3A0

D7D6D5D4D3D2D1D00讀寄存器命令01010011無作用在下一個讀脈沖時讀IRR在下一個讀脈沖時讀ISR特殊屏蔽方式00110101無作用復(fù)位特殊屏蔽置特殊屏蔽

當(dāng)送出OCW3且P=0,隨后對同一地址(A0=0)的讀(IN)指令完成讀IRR(RR/RIS=1/0)或讀ISR(RR/RIS=1/1)例11:通過OCW3命令讀取8259A的狀態(tài)時,要分兩步。首先,要通過OCW3命令指定被讀寄存器,如

OCW3為00001010B時,表示下一個RD脈沖要讀IRR寄存器的內(nèi)容;

OCW3=00001011B時,表示下一個RD脈沖要讀ISR寄存器的內(nèi)容;

其次,是用輸入指令才可讀出IRR或ISR的內(nèi)容。如BIOS中讀取ISR寄存器的程序段

8259A的編程命令的使用

8259A有兩類編程命令:初始化命令字(ICW)和操作命令字(OCW)。

8259A初始化編程和中斷向量的裝入一樣,在PC微機(jī)中是由系統(tǒng)軟件來做,并且開機(jī)上電就已經(jīng)做好。不需要也不允許用戶自己去做,否則,將對微機(jī)的中斷系統(tǒng)產(chǎn)生很大的干擾,甚至破壞。所以,8259A初始化,一般只在沒有配置完善的操作系統(tǒng)的單板微機(jī)上進(jìn)行。如果是在PC微機(jī)上開發(fā)中斷程序,則不要使用ICW1-ICW4去進(jìn)行初始化,因為系統(tǒng)已經(jīng)做好了。只需使用8259A的兩個操作命令OCW1和OCW2進(jìn)行中斷屏蔽/開放和發(fā)中斷結(jié)束命令。在實(shí)際中,OCW3很少使用。

初始化命令字(ICW)在中斷系統(tǒng)運(yùn)行之前,系統(tǒng)中的每一個8259A必須按先后次序接收CPU的2-4個ICW初始化命令字進(jìn)行初始化。初始化程序放在8259A之前,作為主程序的一部分。初始化命令一定要按規(guī)定的順序?qū)懭?,其流程圖如圖

ICW1ICW2ICW3ICW4

級連方式?需要ICW4?準(zhǔn)備接受中斷請求No(SGNL=1)

Yes(SGNL=0)

No(ICW4=0)

Yes(ICW4=1)

操作命令字(OCW)當(dāng)處理器對中斷控制器完成初始化編程后,8259A就處于準(zhǔn)備就緒狀態(tài),等待接收外界的中斷請求,進(jìn)行完全嵌套的中斷管理。若用戶要改變初始化設(shè)定的操作方式,可以通過CPU發(fā)操作命令OCW對中斷控制器進(jìn)行動態(tài)控制。

8259A的OCW與ICW不同,OCW不需要按順序發(fā)送,一般也不要求安排在程序開頭,而是根據(jù)需要在程序中任意安排。

[3]初始化編程PC機(jī)中使用單片8259A,定義地址為:20H、21H,8259A的工作方式設(shè)置如下:

(1)固定優(yōu)先權(quán)級別:IR0最高,IR7最低;(2)8個中斷類型碼分別是08H~0FH;

(3)中斷請求信號采用邊沿觸發(fā)方式;

(4)中斷服務(wù)結(jié)束時,采用一般中斷結(jié)束命令(EOI);

(5)采用一般屏蔽方式。初始化程序如下:初始化命令字:

ICW1:00010011B13H

ICW2:00001000B08H

ICW4:00000001B01H程序:

MOVAL,13HOUT20H,ALMOVAL,08HOUT21H,ALMOVAL,01HOUT21H,AL8259A應(yīng)用舉例PC/AT中,8259的使用情況為:2片8259級聯(lián),提供15級向量中

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論