接口技術(shù)課程設(shè)計--多級中斷控制系統(tǒng)_第1頁
接口技術(shù)課程設(shè)計--多級中斷控制系統(tǒng)_第2頁
接口技術(shù)課程設(shè)計--多級中斷控制系統(tǒng)_第3頁
接口技術(shù)課程設(shè)計--多級中斷控制系統(tǒng)_第4頁
接口技術(shù)課程設(shè)計--多級中斷控制系統(tǒng)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 接口技術(shù)課程設(shè)計 -多級中斷控制系統(tǒng) 組長: 07計科楊靜剛組員:07計科 朱俊飛 王鵬 余凱 指導(dǎo)老師: 胡靜芳 完成時間: 2010.12.201、 引言及任務(wù)分配(一)實驗?zāi)康?、 了解并掌握8259中斷控制器的工作原理,通過8259進行中斷控制服務(wù),調(diào)用中斷服務(wù)程序2、 掌握8259中斷控制器級聯(lián)方式的硬件設(shè)計和軟件編程3、 了解利用數(shù)模轉(zhuǎn)換器產(chǎn)生模擬信號基本方法,通過DAC0832產(chǎn)生報警信號4、 制作外部中斷信號源,產(chǎn)生中斷申請信號(2) 任務(wù)分配8259中斷控制器線路連接 楊靜剛8259中斷控制器級聯(lián)方式的硬件設(shè)計 朱俊飛8259中斷控制器級聯(lián)方式的軟件編程 王鵬制作外部中斷信

2、號源 余凱二、什么是中斷 1.中斷的基本概念對于計算機系統(tǒng)來說,中斷是指CPU正在運行一個程序時發(fā)生了某種非預(yù)期的事件,CPU暫停正在運行的程序,轉(zhuǎn)而執(zhí)行對這一事件進行處理的程序(稱為中斷服務(wù)程序),完成后再返回原程序繼續(xù)運行的過程。引起中斷的事件稱為中斷源。對于計算機系統(tǒng)來說,中斷源分為外部中斷和內(nèi)部中斷。外部中斷主要是指由計算機外圍設(shè)備、系統(tǒng)定時時鐘及人工干預(yù)等外部事件起的中斷,通過設(shè)備產(chǎn)生的外部中斷,能使CPU與設(shè)備間進行中斷方式的數(shù)據(jù)傳輸,這也是我們本小節(jié)要主要講述的內(nèi)容。內(nèi)部中斷主要包括指令中斷和故障中斷。指令中斷是由軟件指令引起的,設(shè)置指令中斷的目的通常是為用戶程序提供對系統(tǒng)資源的

3、訪問,例如x86CPU指令系統(tǒng)提供了一條軟中斷指令I(lǐng)NT,執(zhí)行該指令后,系統(tǒng)會轉(zhuǎn)入執(zhí)行一段駐留在主存中的系統(tǒng)程序,該程序主要完成對系統(tǒng)某一資源的訪問服務(wù)。故障中斷主要是指由系統(tǒng)軟硬件故障引起的中斷,如內(nèi)存校驗故障、電源掉電、除零錯、算術(shù)溢出、內(nèi)存越界、指令非法、虛擬存儲器頁面失效等。計算機中斷源的類型歸納總結(jié)如下圖所示。 計算機中斷源的類型 2. 中斷控制的基本原理 前面已經(jīng)提到,程序控制方式在多道程序系統(tǒng)中會因為某一程序長時間占用CPU進行輸入輸出操作而浪費CPU資源,而中斷控制方式則可以有效提高CPU利用率。下面我們通過對比程序控制方式和中斷控制方式下CPU控制打印機打印輸出的過程闡述中斷

4、控制的基本原理。 下圖(a)和(b)分別給出了程序控制方式和中斷控制方式這兩種方式下打印機的打印輸出過程。 程序控制方式和中斷控制方式下打印輸出的過程對比 從上圖可以看出,在程序控制方式下,當(dāng)CPU執(zhí)行的一個主程序要打印輸出數(shù)據(jù)時,首先啟動打印機,使打印機進入打印準(zhǔn)備工作狀態(tài)。在打印機準(zhǔn)備的過程中,CPU一直處于查詢等待的狀態(tài),即查詢打印機是否準(zhǔn)備就緒。當(dāng)CPU查詢到打印機已做好打印準(zhǔn)備時,便向打印機傳送第一個數(shù)據(jù),打印機接收到該數(shù)據(jù)后進行打印。在打印機打印的過程中,CPU又開始進入查詢等待狀態(tài),等到打印機打印完一個數(shù)據(jù),可以接收下一個數(shù)據(jù)時,CPU再向打印機發(fā)送下一個數(shù)據(jù)。如此重復(fù),直到將所

5、有數(shù)據(jù)打印完。一般來講,CPU向打印機傳送一個數(shù)據(jù)的時間遠比打印機打印一個數(shù)據(jù)所花的時間少得多,而在上述過程中,當(dāng)打印機進行打印操作時,CPU一直在執(zhí)行一段查詢打印機狀態(tài)的循環(huán)控制程序,無法執(zhí)行其它程序,這對CPU資源是極大的浪費。而在中斷控制方式下,情況就不一樣了。當(dāng)CPU執(zhí)行的一個主程序要打印輸出數(shù)據(jù)時,首先啟動打印機,使打印機進入打印準(zhǔn)備工作狀態(tài)。在打印機準(zhǔn)備的過程中,CPU可以由系統(tǒng)調(diào)度去執(zhí)行其它的主程序。當(dāng)打印機做好打印準(zhǔn)備時,向CPU發(fā)出一個中斷請求信號,CPU接收到該請求后,暫停正在執(zhí)行的主程序,向打印機傳送一個數(shù)據(jù),然后返回被中斷的主程序繼續(xù)執(zhí)行。打印機接收到數(shù)據(jù)后進行打印,打

6、印完成后,又向CPU發(fā)出中斷請求,CPU響應(yīng)中斷,向打印機傳送下一個數(shù)據(jù)進行打印。如此重復(fù),直到將所有數(shù)據(jù)打印完。從這一過程我們注意到,在打印機打印的同時,CPU可以被調(diào)度執(zhí)行其它主程序,而無需查詢等待,使CPU的利用率得到了提高。 通過對以上兩種不同控制方式控制打印機打印輸出的過程進行比較可以看出它們的不同之處:(1)程序控制方式下,CPU是通過查詢方式了解打印機的狀態(tài)的;而中斷控制方式下,CPU是通過中斷方式了解打印機的狀態(tài)的。(2)程序控制方式下,CPU和打印機之間是串行工作的;而中斷控制方式下,CPU和打印機可以并行工作。(3)程序控制方式對于單用戶單道程序系統(tǒng)來說是有效的;而中斷控制

7、方式對于多用戶多道程序系統(tǒng)來說可以大大提高CPU的利用率。 3. 中斷處理過程 一個中斷的處理過程是由中斷源的中斷請求引起的。在一個實現(xiàn)了中斷系統(tǒng)功能的機器中,CPU在執(zhí)行一個主程序時,每執(zhí)行完一條指令都會檢查是否有中斷請求發(fā)生,若無,則繼續(xù)執(zhí)行原程序,若有,則在條件滿足的情況下,暫停正在執(zhí)行的程序,對中斷請求進行響應(yīng)。在中斷響應(yīng)過程中,中斷系統(tǒng)要識別是哪一個中斷源發(fā)出的中斷請求,在有多個中斷源同時發(fā)出中斷請求的時候還要決定首先響應(yīng)哪一個中斷源的請求。在確定了要響應(yīng)的中斷源后,進入對該中斷源的中斷請求進行處理的中斷服務(wù)程序去執(zhí)行,執(zhí)行完后返回原被中斷的程序繼續(xù)執(zhí)行。中斷系統(tǒng)的中斷處理過程如圖所

8、所示。 中斷處理過程 (1)中斷請求的建立 在中斷系統(tǒng)中,外部中斷源及硬件故障中斷源的中斷請求是由硬件實現(xiàn)的,當(dāng)某中斷源要向CPU發(fā)出中斷請求時,首先通過硬件方式為其建立和保持一個中斷請求信號。通常是在其中斷接口電路里設(shè)置一個“中斷請求觸發(fā)器”,當(dāng)中斷源有中斷請求時(對設(shè)備來說就是設(shè)備準(zhǔn)備就緒,對故障中斷源來說就是發(fā)生了硬件故障),將接口中的中斷請求觸發(fā)器置位,中斷請求觸發(fā)器的輸出將作為發(fā)往CPU的中斷請求信號。 為了控制的靈活性,通常在中斷接口電路中還會設(shè)置一個中斷屏蔽觸發(fā)器,其作用是對中斷源的中斷請求進行屏蔽和開放。中斷系統(tǒng)允許在程序中對中斷屏蔽觸發(fā)器進行設(shè)置,以決定在程序的執(zhí)行過程中哪些

9、中斷源允許請求中斷,哪些中斷源不允許請求中斷。 在一個機器系統(tǒng)中,往往有多個中斷源,將這些中斷源的中斷請求觸發(fā)器合在一起便構(gòu)成一個中斷請求寄存器,而這些中斷源的中斷屏蔽觸發(fā)器合在一起構(gòu)成一個中斷屏蔽寄存器。其中,中斷屏蔽寄存器作為I/O端口可供CPU訪問,在程序中通過將一個中斷屏蔽字寫入該端口,便可實現(xiàn)對中斷源的屏蔽和開放功能。 (2)中斷響應(yīng) CPU在其中斷請求線上檢測到外部中斷源的中斷請求時,并不是都會給予響應(yīng)的。通常,大多數(shù)CPU內(nèi)部都設(shè)置了一個中斷允許觸發(fā)器,該觸發(fā)器的作用是對中斷請求線上來的中斷請求進行禁止和允許。中斷允許觸發(fā)器可以通過CPU提供的指令進行設(shè)置,例如,8086/808

10、8 CPU提供了兩條指令STI和CLI,前一條指令稱為開中斷指令,用于將CPU內(nèi)部的中斷允許觸發(fā)器置1,即中斷允許或開中斷;后一條指令稱為關(guān)中斷指令,用于將中斷允許觸發(fā)器清0,即中斷禁止或關(guān)中斷。在CPU處于中斷允許狀態(tài)時,可以對來自中斷請求線上的中斷請求進行響應(yīng);而CPU處于中斷禁止?fàn)顟B(tài)時,則對來自中斷請求線上的中斷請求不予響應(yīng)。 當(dāng)然,并不是所有中斷源的中斷請求都能被CPU禁止,尤其是一些比較緊迫的事件的中斷,如因電源掉電、內(nèi)存校驗出錯等導(dǎo)致的硬件故障中斷,CPU必須立即響應(yīng)。因此,多數(shù)CPU在引腳設(shè)計上會設(shè)置多條中斷請求信號線,一些用于可屏蔽的中斷請求,一些用于非屏蔽的中斷請求(如808

11、6/8088 CPU的INTR和NMI)。 一旦CPU 響應(yīng)了中斷,便進入中斷響應(yīng)周期。在中斷響應(yīng)周期里,中斷系統(tǒng)主要完成以下三項功能: )關(guān)中斷和保護斷點。CPU響應(yīng)中斷時,會自動執(zhí)行一條中斷隱指令,一方面將中斷允許觸發(fā)器清零,即關(guān)中斷;另一方面將CPU內(nèi)部的指令指針和程序狀態(tài)字PSW等壓入堆棧。當(dāng)前指令指針指向的是下一條要執(zhí)行的指令,又稱為斷點,將指令指針壓入堆棧的目的是為了使得在中斷服務(wù)程序執(zhí)行完后能正確返回到當(dāng)前被中斷的程序的下一條指令繼續(xù)執(zhí)行。而程序狀態(tài)字PSW記錄的是當(dāng)前指令執(zhí)行完后程序和機器的狀態(tài),將PSW壓入堆棧的目的是為了保證中斷返回后PSW能恢復(fù)成被中斷前的狀態(tài)。 )進行中

12、斷源的識別。一個機器的中斷源和CPU的中斷請求線往往不是一一對應(yīng)的,換句話說,CPU的一條中斷請求輸入線會對應(yīng)多個中斷源的中斷請求輸出。當(dāng)CPU檢測到一條中斷請求信號有效時,它可以判定外部中斷源有了中斷請求,但卻無法確定具體是哪一個中斷源發(fā)出的請求。因此,在中斷響應(yīng)周期,CPU要對發(fā)出中斷請求的中斷源進行識別。另外,在某一時刻,有可能同時有兩個或兩個以上的中斷源向CPU發(fā)出中斷請求信號,而CPU一次只能響應(yīng)一個中斷源的請求。在這種情況下,CPU除了進行中斷源的識別外,還要根據(jù)一定的規(guī)則選擇其中一個進行響應(yīng)。 )形成中斷源中斷服務(wù)程序的入口地址。 每一個中斷源都對應(yīng)有一段駐留在內(nèi)存中的軟件程序,

13、稱為中斷服務(wù)程序,該程序的功能是完成中斷源需實現(xiàn)的功能。例如,打印機是一個中斷源,它所對應(yīng)的中斷服務(wù)程序的功能是實現(xiàn)CPU向打印機傳輸數(shù)據(jù)。在中斷響應(yīng)周期,識別中斷源后,最后還需形成該中斷源對應(yīng)的中斷服務(wù)程序在內(nèi)存的入口地址,以便CPU從當(dāng)前被中斷的主程序轉(zhuǎn)入中斷服務(wù)程序執(zhí)行。 (3)中斷源識別 中斷源識別的任務(wù)是確定某次中斷響應(yīng)具體該響應(yīng)的是哪個中斷源。中斷源識別的方法很多,常用的方法主要有軟件查詢法、硬件查詢法和中斷向量法等。 軟件查詢法是通過執(zhí)行一段軟件查詢程序,對中斷請求寄存器的狀態(tài)逐位判斷,從而確定某次該響應(yīng)的是哪個中斷源。前面講到,將各中斷源接口電路中的中斷請求觸發(fā)器合在一起構(gòu)成一

14、個中斷請求寄存器,也就是說,中斷請求寄存器的每一位就對應(yīng)了一個中斷源的中斷請求狀態(tài)。將中斷請求寄存器的內(nèi)容讀出,按某一種順序一位一位進行判別,遇到第一個“1”,這一位所對應(yīng)的中斷源就是本次CPU識別響應(yīng)的中斷源。 硬件查詢法是通過專門的硬件電路實現(xiàn)中斷源識別。一種實現(xiàn)中斷源識別的串行排隊鏈路如圖所示。 串行排隊鏈中斷源識別 在中斷響應(yīng)周期,CPU發(fā)出查詢信號POL,沿著串行排隊鏈依次經(jīng)過各中斷源接口。當(dāng)POL到達某一中斷源接口時,如果該中斷源沒有中斷請求,則將POL信號繼續(xù)往下傳;如果該中斷源有中斷請求,則POL信號不再往下傳,接口向CPU發(fā)回答信號SYN,同時形成中斷源的中斷服務(wù)程序入口地址

15、,經(jīng)數(shù)據(jù)總線傳送給CPU。 中斷向量法是一種通過硬件控制電路形成一個所識別的中斷源的中斷向量號,并由此中斷向量號實現(xiàn)中斷響應(yīng)的方法。在這種方法中,每個中斷源對應(yīng)有一個中斷向量號,中斷向量號對應(yīng)一個中斷向量,即中斷服務(wù)程序入口地址,將所有中斷向量集中存放在內(nèi)存中的一片固定區(qū)域中。在中斷響應(yīng)周期,首先由一個專門的中斷控制電路進行中斷識別,并形成一個對應(yīng)該中斷源的中斷向量號;然后將此中斷向量號傳送給CPU;最后由CPU依據(jù)中斷向量號生成該中斷源的中斷向量在內(nèi)存中的首地址,從這一地址單元中即可取出中斷服務(wù)程序的入口地址。如圖所示。 向量中斷示意圖 x86CPU采用的就是中斷向量法,其中斷響應(yīng)過程如下:

16、 )當(dāng)某一中斷源i需要申請中斷時,向中斷控制電路發(fā)出一個請求中斷信號INTi; )在該中斷源的中斷請求未被屏蔽的情況下,中斷控制電路向CPU發(fā)出中斷請求信號INTR; )在CPU處于開中斷的情況下,CPU響應(yīng)中斷,向中斷控制電路發(fā)回一個中斷響應(yīng)信號INTA; )中斷控制電路完成中斷源的識別,并將中斷源的中斷向量號通過數(shù)據(jù)總線傳送給CPU; )CPU依據(jù)此中斷向量號計算得到中斷向量地址,并從此地址單元中取出該中斷源對應(yīng)的中斷服務(wù)程序入口地址。 (4)中斷服務(wù) CPU在中斷響應(yīng)周期獲取到中斷服務(wù)程序入口地址后,便可轉(zhuǎn)入中斷服務(wù)程序執(zhí)行。一般來講,中斷服務(wù)程序包括以下幾個過程: )保護現(xiàn)場。所謂現(xiàn)場

17、是指主程序執(zhí)行完當(dāng)前指令時的一些寄存器內(nèi)容等。由于中斷服務(wù)程序在執(zhí)行過程中有可能用到主程序使用到的一些寄存器,因此必須在執(zhí)行中斷服務(wù)程序前將這些寄存器的內(nèi)容保護起來。保護現(xiàn)場的具體方法就是將CPU所有程序可用的寄存器內(nèi)容壓入堆棧,以便待從中斷服務(wù)程序返回到主程序時再將這些寄存器的內(nèi)容恢復(fù)到中斷前的狀態(tài)。 )開中斷。前面講到,CPU響應(yīng)中斷時執(zhí)行了一次硬件自動關(guān)中斷的操作,這次關(guān)中斷的目的是阻止在保護現(xiàn)場的過程中再次被中斷。如果本次執(zhí)行的中斷服務(wù)程序在后續(xù)的中斷服務(wù)過程中允許其它的中斷,在這里就必須開中斷。開中斷的方法是執(zhí)行一條開中斷指令,將CPU的中斷允許觸發(fā)器置位。 )中斷服務(wù)。其實,中斷處

18、理的核心就是執(zhí)行這里的中斷服務(wù),在此之前和之后的所有操作都是為這里的中斷服務(wù)提供支持的。中斷服務(wù)的內(nèi)容就是完成中斷源的功能。例如,鍵盤作為計算機的標(biāo)準(zhǔn)輸入設(shè)備,它與CPU之間采用的是中斷控制方式進行數(shù)據(jù)傳輸。每當(dāng)用戶在鍵盤上敲一個鍵,就會由鍵盤接口電路產(chǎn)生一個中斷請求信號發(fā)往CPU,CPU響應(yīng)鍵盤中斷后進入中斷服務(wù)程序。在鍵盤中斷服務(wù)程序里的中斷服務(wù)主要實現(xiàn)對用戶所敲鍵的識別,并根據(jù)所敲鍵實現(xiàn)相應(yīng)的功能。 )關(guān)中斷。這次的關(guān)中斷是在程序中使用關(guān)中斷指令將CPU中的中斷允許觸發(fā)器清零,禁止一切可屏蔽中斷,使后續(xù)的恢復(fù)現(xiàn)場工作不再被新的中斷源中斷。 )恢復(fù)現(xiàn)場。將中斷服務(wù)程序開始時保護起來的寄存器

19、內(nèi)容恢復(fù)到中斷響應(yīng)前的狀態(tài),若保護現(xiàn)場使用的是入棧的方法,則恢復(fù)現(xiàn)場則使用相應(yīng)的出棧操作。 )開中斷。再次使用開中斷指令將CPU的中斷允許觸發(fā)器置位,以便該中斷服務(wù)程序執(zhí)行完后系統(tǒng)恢復(fù)到正常中斷工作狀態(tài)。 )中斷返回。CPU的指令系統(tǒng)通常會提供一條中斷返回指令,中斷服務(wù)程序結(jié)束前執(zhí)行中斷返回指令,執(zhí)行該指令的結(jié)果是將系統(tǒng)中斷響應(yīng)保護斷點時壓入棧的內(nèi)容出棧,一是恢復(fù)PSW值,二是恢復(fù)主程序被中斷時的指令指針值,從而將程序控制返回到主程序被中斷的指令繼續(xù)執(zhí)行。三、什么是82598.3.4 8259A中斷控制器8259A是一個可編程的中斷控制器,應(yīng)用在實時的、以中斷方式進行監(jiān)控的計算機系統(tǒng)中。用一片

20、8259A可以管理8個等級的中斷申請。并可再經(jīng)級聯(lián)擴展多至8片8259A,使得中斷等級可擴展多至64級。8259A可以作為一個I/O外圍器件,用系統(tǒng)軟件編程,它所具有的多種優(yōu)先權(quán)方式可以通過主程序在任何時候進行改變或重新組織。這意味著可以按照全系統(tǒng)的外圍情況和要求,設(shè)計出一個完整的中斷結(jié)構(gòu),用來實現(xiàn)優(yōu)先管理、中斷屏蔽以及自動中斷矢量轉(zhuǎn)移。它幾乎可以適合于任何一種中斷控制的結(jié)構(gòu),因而得到了廣泛的應(yīng)用。1. 8259A引腳及功能 8259A管腳示意圖8259A為28腳雙列直插式封裝的器件。Vcc(28):輸入,=5C 電源。GND(14):輸入,地。D7D0(411):輸入或輸出,雙向數(shù)據(jù)總線,8

21、259-A通過該引腳與CPU通信,傳送命令、狀態(tài)和中斷矢量信息。較大的系統(tǒng)中需接總線驅(qū)動器,在小系統(tǒng)中可直接連接之。CS(1):輸入,讀,用于表示在訪問8259A。該引腳通過地址譯碼器連接至地址總線。WR(2):輸入,寫,通知8259A接收數(shù)據(jù)總線上的數(shù)據(jù),并用這些數(shù)據(jù)設(shè)置命令字。RD(3):輸入,讀,用于通知8259A將IMR,ISR或IRR寄存器。INT(17):輸出,中斷申請。當(dāng)8259A接到從外設(shè)經(jīng)IR腳送來的一個有效的中斷請求時,將從這腳輸出高電平,并對CPU提出中斷申請。該腳連到CPU的INTR引腳。IR0IR7(1825):輸入,中斷請求。接口或其它8259A(稱為從控制器)上接

22、收異步的中斷請求。在邊沿觸發(fā)方式中,IR輸入應(yīng)保持高電平。INTA(26):輸入,中斷響應(yīng),用來通知8259A中斷申請已被響應(yīng),使其將中斷矢量送到數(shù)據(jù)總線上。8259A認為中斷響應(yīng)信號由兩個負脈沖組成,因而它能與8086/8088系統(tǒng)兼容。A0(27):輸入,地址線。這個腳與CS,WR或RD聯(lián)合使用,用于表示正在訪問8259A的哪個端口。8259A從中辨認出CPU是要寫命令還是要讀狀態(tài)。典型的接法是連到CPU的A0地址線(8080A或8085)上,對于8086則為A1地址線。因為8259A只有8根數(shù)據(jù)引腳,而8086總是從其16位數(shù)據(jù)總線的低8位輸入中斷指示字,所以8086與8259A的所有數(shù)

23、據(jù)傳送只能用數(shù)據(jù)總線的低位進行。要保證所有傳送都用總線的低位,最簡單的方法是將A0與8086總的A1相連接,使用兩個相鄰的偶數(shù)地址且第一個地址可被4除盡,所以編程時要特別注意配合。系統(tǒng)中每塊8259A須在I/O地址空間中保留兩個地址。SP/EN(16):輸入或輸出,為雙功能腳。在緩沖方式中,該引腳被用作輸出線,控制總線緩沖器的接收或發(fā)送;在非緩沖方式中,則作為輸入線,確定該8259A是主控制器(SP/EN=1)還是從控制器(SP/EN=0)。CAS0CAS2(12,13,15):輸入或輸出,級聯(lián)總線。用于區(qū)分特定的從控制器件。8259A作為主控制時,該總線為輸出,它還可控制多至8個輔從的825

24、9A,8259A作為輔從時,它則為輸入。2. 8259A工作過程第一步:當(dāng)中斷請求線(IR0IR7)上有信號輸入時,就把中斷請求寄存器IRR相應(yīng)的位置1。第二步:當(dāng)IRR的一位置1后,就會與IMR中相應(yīng)的屏蔽位進行比較,如該屏蔽位為0,則請求被發(fā)送給優(yōu)先級分析器;如該屏蔽位為1,則封鎖該請求。第三步:當(dāng)一個中斷請求被輸入優(yōu)先級分析器后,將由優(yōu)先權(quán)分析器判定其優(yōu)先權(quán),然后向CPU發(fā)中斷申請,INT腳變高(INT聯(lián)到8086的INTR)。第四步:CPU的INTR引腳為異步狀態(tài)接收,也就是它可以在任何時間(與時鐘無關(guān))接收中斷。在軟件控制下利用STI指令(中斷置位)或CLI(中斷復(fù)位)指令可分別將C

25、PU的“中斷開放標(biāo)志位”IF置位或復(fù)位,可以做到接受或不理睬在INTR上的中斷申請。第五步:假定CPU中的IF標(biāo)志為1,則CPU在完成當(dāng)前指令的即進入中斷響應(yīng)周期,這個中斷響應(yīng)周期將標(biāo)志寄存器入棧,然后清除IF標(biāo)志,關(guān)閉了中斷。再將代碼段寄存器和指令指針也入棧(這是為了從中斷服務(wù)程序返回),然后CPU發(fā)出第二個INTA脈沖通知8259A,說明8086已經(jīng)允許了它的中斷請求。若8086用于“最小方式”,則INTA脈沖信號為8086 INTA引腳上的信號;若8086用于“最大方式”時,則8086 LOCK腳在中斷響應(yīng)序列執(zhí)行期間變?yōu)榈碗娖健OCK信號用來指示其它系統(tǒng)總線控制器:當(dāng)中斷響應(yīng)序列到來

26、時不要獲取系統(tǒng)總線控制,一個“HOLD”請求在LOCK變低時不會被響應(yīng)。第六步:8259A收到第一個INTA負脈沖后,將禁止IRR鎖存器,使IRR不受IR7IR0進一步變化的影響,這種狀態(tài)一直保持到第二個INTA脈沖結(jié)束。第一個INTA脈沖還使ISR的某一位置位,并清除相應(yīng)的IRR位。第二個INTA脈沖使ICW2當(dāng)前內(nèi)容被放到D7D0上,CPU用該字節(jié)確定中斷型號。此后CPU將按照這個指定的中斷類型號中的內(nèi)容去執(zhí)行所對應(yīng)的中斷程序。注意:若ICW4的中斷自動結(jié)束位(AEOI)為1,則第二個INTA脈沖結(jié)束時,ISR中被第一個INTA脈沖置位的位被清除,否則要等到送內(nèi)含中斷結(jié)束(EOI)命令的O

27、CW2后方能清除ISR中的該位。第七步:當(dāng)進入中斷服務(wù)程序時,那些主程序和子程序都要用到的寄存器應(yīng)當(dāng)保存入棧,最好的方法是立刻“PUSH”每個用到的寄存器入棧。當(dāng)中斷服務(wù)程序完成后,再以相應(yīng)的反次序“POP”每個寄存器出棧。第八步:一旦中斷服務(wù)程序完成,就應(yīng)用IRET(中斷返回)指令使CPU再回到主程序。IRET指令就會自動彈出中斷前的指令指針,使主程序恢復(fù)到被中斷之處,并且恢復(fù)中斷前與中斷服務(wù)變化無關(guān)的標(biāo)志狀態(tài)(包括IF標(biāo)志的狀態(tài))。而中斷也自動放開。3. 8259A的編程因為8259A是可編程的中斷控制器,所以它的操作是用軟件通過命令進行控制的。8259A的編程命令字有兩類:一是初始化命令

28、字(ICW),二是操作命令字(OCW)。相應(yīng)的8259A的控制部分有一些可編程的位,它們分布在7個8位寄存器中。這些寄存器分成兩組,一組用作存ICW,另一組存OCW。當(dāng)計算機剛開機時,用初始化程序設(shè)定ICW,即由CPU按次序發(fā)送24個不同格式的ICW,用來建立起8259A操作的初始狀態(tài),此后的整個工作過程中該狀態(tài)保持不變。相反操作命令字(OCW)用于動態(tài)控制中斷處理,是在需要改變或控制8259A操作時發(fā)送的。注意:當(dāng)發(fā)出ICW或OCW時,CPU中斷申請腳INTR應(yīng)關(guān)閉(使用CLI關(guān)中斷指令)。1. ICW(ICW1、ICW2、ICW3、ICW4)初始化命令字編程格式(1) ICW1(芯片控制初

29、始化命令字)功能介紹:A0D7D6D5D4D3D2D1D000001LTIMADISNGLIC416位機無效標(biāo)志位電平觸發(fā)無效彈片使用需要ICW4ICW1負責(zé)啟動8259A和進行初始化工作:1) 清除IMR2) 把最低優(yōu)先權(quán)分配給IR73) 把最高優(yōu)先權(quán)分配給IR04) 將從設(shè)備標(biāo)志ID置成75) 清除特殊屏蔽方式以及設(shè)置讀IRR方式(2) ICW2(中斷類型號的設(shè)置)功能介紹:A0D7D6D5D4D3D2D1D01T7T6T5T4T3000中斷類型號的高5位16位機無效ICW2負責(zé)規(guī)定中斷類型號字節(jié)。編程時規(guī)定高5位T7-T3,低3位由IR的編碼寫入。輸入時地址線A0=1,IR0-IR7的中

30、斷向量為08H-0FH,PC/XT機中的T7T3=00001,當(dāng)IR4申請時8259向CPU發(fā)出中斷申請的類型號為00001100=0CH。(3) ICW3(主/從片初始化命令字)功能介紹:主片ICW3:A0D7D6D5D4D3D2D1D01S7S6S5S4S3S2S1S0主片ICW3負責(zé)記錄與從片哪一個輸入端與從片相連。當(dāng)主片輸入端IRi上連接有從片的INT時,則Si=1;否則Si=0從片ICW3:A0D7D6D5D4D3D2D1D01*ID2ID1ID0從片ICW3負責(zé)自己連接到主片的哪一端。應(yīng)用ICW3時的注意點:一、什么時候用ICW3:即當(dāng)ICW1中的SNGI位為0時,也就是工作于級聯(lián)

31、方式,才需要ICW3設(shè)置8259A的狀態(tài)。二、(主片接出)判斷哪個引腳(IR7IR0)有級聯(lián):當(dāng)D7DO的某位為1時則接有從片,為0時不接從片。三、(從片接入)判斷接入主片的哪個引腳:是通過對D2 D1 D0三位的組合來判斷接入的引腳。(4) ICW4(方式控制初始化命令字)功能介紹:A0D7D6D5D4D3D2D1D01000SFNMBUFM/SAEOIuPMICW4負責(zé)緩沖器方式和中斷結(jié)束方式的設(shè)置。應(yīng)用ICW4時的注意點:一、什么時候?qū)懭隝CW4:當(dāng)ICW1的IC=1時,才使用ICW4。二、命令字各位所代表的含義:UPM:指定CPU類型:UPM=0時,工作于8080(8位機);UPM=1

32、時,工作于8086(16位機)AEOI:指定是否自動中斷結(jié)束方式:1:自動中斷結(jié)束方式;0:非自動中斷結(jié)束方式。BUF:8259A是否工作于緩沖方式:1:工作于緩沖方式、0:不工作于緩沖方式SFNM:決定8259A在級聯(lián)時是否工作于特殊全嵌套方式:1:工作于特殊全嵌套方式0:工作于一般全嵌套方式。2. OCW(OCW1、OCW2、OCW3)操作命令字編程格式(1) OCW1(中斷屏蔽操作命令字)功能介紹:A0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0OCW1負責(zé)中斷的屏蔽和開放:M7M0對應(yīng)著IR7IR0,Mi=1時,就屏蔽對應(yīng)的IRi的輸入,Mi=0時,允許輸入IRi

33、的輸入。(2) OCW2(控制中斷結(jié)束和優(yōu)先權(quán)循環(huán)操作命令字)功能介紹:A0D7D6D5D4D3D2D1D00RSLEOI00L2L1L0優(yōu)先級輪換指定中斷等級中斷結(jié)束特征位中斷等級編碼OCW2負責(zé)中斷優(yōu)先排隊方式。D0D2位:L2L0位編碼是用來指定中斷等級(07)。該等級是為了對指定的ISR位復(fù)位或執(zhí)行優(yōu)先級指定輪換方式。它和D6位SL配合使用。D4D3位:0 0是OCW2的標(biāo)志D5位:EOI中斷結(jié)束命令位,當(dāng)ICW4中的AEOI=0時,即定義為非自動中斷結(jié)束方式時,使EOI=1,表示結(jié)束中斷,使ISR的最高優(yōu)先權(quán)的位復(fù)位;EOI=0則不起作用。D6位:SL選擇指定的IR級別位,SL=1時

34、,操作在L2L0指定的IR編碼級別上執(zhí)行;SL=0時,L2L0無效。D7位:R優(yōu)先權(quán)循環(huán)位,R=1:循環(huán)優(yōu)先權(quán);R=0:固定優(yōu)先權(quán)(3) OCW3(控制中斷屏蔽和查詢寄存器狀態(tài)命令字)功能介紹:A0D7D6D5D4D3D2D1D0I-W2W1W01) OCW3負責(zé)查詢中斷方式的操作:D7位:I=1有中斷請求,I=0無中斷請求。D2D0位:W2W0表示正在申請服務(wù)的最高優(yōu)先等級的二進制代碼。2) OCW3負責(zé)查詢寄存器狀態(tài):A0D7D6D5D4 D3D2D1D00*ESMMSMM-01PRRRIS不用特定屏蔽允許特定屏蔽設(shè)置特征位查詢方式讀寄存器允許讀ISRD0位:RIS,讀IRR或ISR選擇位

35、:1=讀ISR、0=讀IRRD1位:RR:讀寄存器:1=允許讀IRR、ISR 0=不允許讀D2位:P:查詢命令位:1=查詢、0=不是查詢D4D3位:0 1是OCW3的標(biāo)志D5位:SMM設(shè)置特殊屏蔽方式:1=選擇特殊屏蔽方式、0=清除特殊屏蔽方式D6位:ESMM允許SMM起作用:1=允許、0=不允許四、多級中斷1.多級中斷的概念多級中斷系統(tǒng)是指計算機系統(tǒng)中有相當(dāng)多的中斷源,根據(jù)各中斷事件的輕重緩急程度不同而分成若干級別,每一中斷級分配給一個優(yōu)先權(quán)。優(yōu)先權(quán)高的中斷級可以打斷優(yōu)先權(quán)低的中斷服務(wù)程序。根據(jù)系統(tǒng)的配置不同,多級中斷可分為一維多級中斷和二維多級中斷,請見下圖。一維多級中斷是指每一級中斷里只

36、有一個中斷源,而二維多級中斷是指每一級中斷里又有多個中斷源。對多級中斷,需要注意下幾點: (1) 一個系統(tǒng)若有n級中斷,在CPU中就有n個中斷請求觸發(fā)器,總稱為中斷請求寄存器;與之對應(yīng)的有n個中斷屏蔽觸發(fā)器,總稱為中斷屏蔽寄存器。與單級中斷不同,在多級中斷中,中斷屏蔽寄存器的內(nèi)容是一個很重要的程序現(xiàn)場,因此在響應(yīng)中斷時,需要把中斷屏蔽寄存器的內(nèi)容保存起來,并設(shè)置新的中斷屏蔽狀態(tài)。一般在某一級中斷被響應(yīng)后,要置“1 ”(關(guān)閉)本級和優(yōu)先權(quán)低于本級的中斷屏蔽觸發(fā)器,置“0”(開放)更高級的中斷屏蔽觸發(fā)器,以此來實現(xiàn)正常的中斷嵌套。 (2) 多級中斷中的每一級可以只有一個中斷源,也可以有多個中斷源。在多級中斷之間可以實現(xiàn)中斷嵌套,但是同一級內(nèi)有不同中斷源的中斷是不能嵌套的,必須是處理完一個中斷后再響應(yīng)和處理同一級內(nèi)其他中斷源。 (3)設(shè)置多級中斷的系統(tǒng)一般都希望有較快的中斷響應(yīng)時間,因此首先響應(yīng)哪一級中斷和哪一個中斷源,都是由硬件邏輯實現(xiàn),

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論