復試科目課件計算機原理_第1頁
復試科目課件計算機原理_第2頁
復試科目課件計算機原理_第3頁
復試科目課件計算機原理_第4頁
復試科目課件計算機原理_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理盧偉Email:Office:大黑樓B705TEL:84706161大連理工大學自動化系第六章中斷系統(tǒng)6.1基本概念6.28086/8088的中斷系統(tǒng)6.3可編程中斷控制器Intel8259A

6.1基本概念1、中斷的定義當CPU正常運行時,系統(tǒng)外部、內(nèi)部或現(xiàn)行程序本身若出現(xiàn)緊急事件,處理器必須立即強行中止現(xiàn)行程序的運行,改變機器的工作狀態(tài)并啟動相應的程序來處理這些事件,然后再恢復原來的程序運行,這一過程稱為中斷。2、中斷源和中斷請求能夠向CPU發(fā)出中斷請求的中斷來源稱為中斷源。I/O設備(CRT、打印機等)、數(shù)據(jù)設備(磁盤、磁帶等)、實時時鐘、故障信號、軟件中斷等都是中斷源。中斷源一般分為硬件中斷源和軟件中斷源。中斷源能發(fā)出中斷請求信號到CPU,所以中斷源中一般要求有中斷請求觸發(fā)器,請求信號有邊沿請求和電平請求兩種。3、中斷系統(tǒng)的目的維持系統(tǒng)正常工作,提高系統(tǒng)效率;實時處理;為故障處理作準備。4、中斷分類中斷分外部中斷和內(nèi)部中斷兩大類;其中外部中斷分為兩類:⑴可屏蔽中斷INTR,由標志寄存器中的IF位控制;⑵不可屏蔽中斷NMI,不受IF位控制。5、中斷系統(tǒng)功能⑴中斷處理:發(fā)現(xiàn)中斷請求、響應中斷請求、執(zhí)行中斷服務程序、中斷返回。⑵中斷控制:中斷優(yōu)先權(quán)排隊、中斷嵌套6.1基本概念當系統(tǒng)中有多個中斷時,有可能出現(xiàn)兩個或兩個以上的中斷源同時提出中斷請求,這時要求CPU根據(jù)中斷優(yōu)先權(quán)由高到低依次處理。中斷嵌套如下圖所示。假定有兩個中斷源A和B,A的級別高于B,當CPU正在處理B中斷時,允許A能中斷B的中斷處理,轉(zhuǎn)去執(zhí)行A的中斷服務程序,在高級中斷A處理完后,返回到原來打斷處,繼續(xù)處理B的中斷服務程序。圖中為兩級中斷,還可以進行多級中斷。

6.1基本概念二、中斷處理過程1、中斷檢測中斷源向CPU發(fā)中斷請求是隨機的,大多數(shù)CPU在現(xiàn)行指令周期結(jié)束時檢測有無中斷請求。8086CPU在每條指令的最后一個時鐘周期檢測中斷請求信號輸入線INTR。2、CPU響應中斷的條件

CPU檢測到INTR上有中斷請求,要響應它需滿足以下條件:⑴CPU開放中斷,也就是標志寄存器中的(可用開中斷指令STI置1),表示開放可屏蔽中斷;IF位=0(用關(guān)中斷指令CLI清0),表示關(guān)閉可屏蔽中斷。⑵CPU在現(xiàn)行指令結(jié)束后響應中斷6.1基本概念3、CPU響應中斷及處理過程滿足上述條件后,CPU響應中斷,轉(zhuǎn)入中斷周期,完成以下操作:1.關(guān)中斷

CPU在響應中斷時,發(fā)出中斷響應信號INTA,同時內(nèi)部自動地關(guān)中斷,以禁止接受其他的中斷請求。2.保存斷點把斷點處的指令指針I(yè)P值和CS值壓入堆棧,以使中斷處理完后能正確地返回主程序斷點。

CPU響應中斷時,會停止當前執(zhí)行程序,轉(zhuǎn)去執(zhí)行中斷服務程序,原程序被打斷的地方稱為“斷點”。斷點地址是指中斷處理程序結(jié)束后,返回原程序恢復執(zhí)行的第一條指令的地址,又稱“返回地址”。6.1基本概念6.1基本概念3.識別中斷源

CPU要對中斷請求進行處理,必須找到相應的中斷服務程序的入口地址,這就是中斷的識別。4.保護現(xiàn)場為了不使中斷服務程序的運行影響主程序的狀態(tài),必須把斷點處有關(guān)寄存器(指在中斷服務程序中要使用的寄存器)的內(nèi)容以及標志寄存器的狀態(tài)壓入堆棧保護?,F(xiàn)場是指進入中斷服務程序之前CPU各個寄存器的狀態(tài)。5.執(zhí)行中斷服務程序在執(zhí)行中斷服務程序中,可在適當時刻重新開放中斷,以便允許響應較高優(yōu)先級的中斷。6.恢復現(xiàn)場并返回即把中斷服務程序執(zhí)行前壓入堆棧的現(xiàn)場信息彈回原寄存器,然后執(zhí)行中斷返回指令,從而返回主程序繼續(xù)運行。需要說明的是,在上述中斷響應及處理的6項操作中,前3項是中斷響應過程,一般由中斷系統(tǒng)硬件負責完成;后3項是中斷處理過程,通常是由用戶或系統(tǒng)程序設計者編制的中斷處理程序(軟件)負責完成。針對一個具體的系統(tǒng)或機型,中斷服務程序設計者應該清楚該系統(tǒng)在中斷響應時,中斷響應硬件完成了哪些操作(如標志寄存器是否已被壓入堆棧),還需中斷處理軟件(中斷服務程序)完成哪些操作。6.1基本概念6.1基本概念三、中斷優(yōu)先級和中斷嵌套

1、中斷優(yōu)先級:在實際系統(tǒng)中,多個中斷請求可能同時出現(xiàn),但中斷系統(tǒng)只能按一定的次序來響應和處理,這時CPU必須確定服務的次序,即根據(jù)中斷源的重要性和實時性,照顧到操作系統(tǒng)處理的方便,對中斷源的響應次序進行確定。這個響應次序稱為中斷優(yōu)先級(priority)。通常,可用軟件查詢法確定中斷優(yōu)先級,也可用硬件組成中斷優(yōu)先級編碼電路來實現(xiàn)?,F(xiàn)代PC機中多采用可編程中斷控制器(如8259A)來處理中斷優(yōu)先級問題。(1)軟件查尋法確定中斷優(yōu)先級采用軟件查詢法解決中斷優(yōu)先級只需要少量硬件電路。如下圖所示,系統(tǒng)中有多種外部設備,將這些設備的中斷請求信號相“或”,從而產(chǎn)生一個總的中斷請求信號INTR發(fā)給CPU。

磁盤磁帶CRT顯示鍵盤輸入打印輸出電源故障紙帶輸入保留INTR當CPU響應中斷請求進入中斷處理程序后,必須在中斷處理程序的開始部分安排一段帶優(yōu)先級的查詢程序,查詢的先后順序就體現(xiàn)了不同設備的中斷優(yōu)先級,即先查的設備具有較高的優(yōu)先級,后查的設備具有較低的優(yōu)先級。一般來說總是先查速度較快或是實時性較高的設備。軟件查詢的流程如下圖所示。6.1基本概念保護現(xiàn)場恢復現(xiàn)場A申請服務?B申請服務?C申請服務?外設A中斷服務程序NNN外設B中斷服務程序外設C中斷服務程序YYY軟件查詢方式實現(xiàn)對中斷優(yōu)先級的控制6.1基本概念(2)菊花鏈優(yōu)先級排隊電路菊花鏈優(yōu)先級排隊電路是一種優(yōu)先級管理的簡單硬件方案。它是在每個設備接口設置一個簡單的邏輯電路,以便根據(jù)優(yōu)先級順序來傳遞或截留CPU發(fā)出的中斷響應信號INTA,以實現(xiàn)響應中斷的優(yōu)先順序。典型的菊花鏈優(yōu)先級結(jié)構(gòu)如下圖所示。6.1基本概念菊花鏈優(yōu)先級排隊電路中斷請求CPU

INTR接口設備3接口設備2接口設備1菊花鏈邏輯菊花鏈邏輯菊花鏈邏輯中斷相應信號集電極開路門+5V6.1基本概念中斷請求信號(高電平有效)中斷響應信號(低電平有效)INTR菊花鏈邏輯6.1基本概念2.中斷嵌套當CPU正在執(zhí)行優(yōu)先級較低的中斷服務程序時,允許響應比它優(yōu)先級高的中斷請求,而將正在處理的中斷暫時掛起,這就是中斷嵌套。此時,CPU首先為級別高的中斷服務,待優(yōu)先級高的中斷服務結(jié)束后,再返回到剛才被中斷的較低的那一級,繼續(xù)為它進行中斷服務。如下圖所示。STIIRETSTIIRET............6.1基本概念中斷嵌套的深度(中斷服務程序又被中斷的層次)受到堆棧容量的限制。所以在編寫中斷服務程序時,必須要考慮有足夠的堆棧單元來保留多次中斷的斷點信息及有關(guān)寄存器的內(nèi)容。6.1基本概念一、中斷分類

8086/8088的中斷系統(tǒng)如下圖所示。

1、外部中斷

8086/8088CPU有兩條引腳提供外部中斷源請求中斷:一條是高電平有效的可屏蔽中斷INTR;另一條是正跳變有效的非屏蔽中斷NMI。外部中斷又稱硬件中斷。⑴可屏蔽中斷:可屏蔽中斷是由用戶定義的外部硬件中斷,受中斷標志位IF的控制。⑵非屏蔽中斷:不受中斷標志位IF的控制。

2、內(nèi)部中斷內(nèi)部中斷又稱軟件中斷,主要來自CPU內(nèi)部的軟件中斷。6.28086/8088的中斷系統(tǒng)INTn指令中斷邏輯斷點中斷(INT3)溢出中斷(INTO,OF=1)單步中斷(TF=1)除法錯中斷軟件中斷非屏蔽中斷請求中斷控制器(8259A)NMIINTRIRQ0....IRQ7可屏蔽中斷

硬件中斷6.28086/8088的中斷系統(tǒng)二、中斷向量表1、中斷向量的定義所謂中斷向量,實際上就是中斷服務程序的入口地址,每個中斷類型對應一個中斷向量。每個中斷向量占4字節(jié)的存儲單元。其中,前兩個字節(jié)單元存放中斷服務程序入口地址的偏移量(IP),低字節(jié)在前,高字節(jié)在后;后兩個字節(jié)單元存放中斷服務程序入口地址的段基值(CS),也是低字節(jié)在前,高字節(jié)在后。2、中斷向量表存放中斷向量的存儲區(qū)稱為中斷向量表。通常在存儲器的低地址區(qū)。3、8086/8088的中斷向量表

8086/8088有256種中斷類型,類型號為0-255(或0-FFH),共有256個中斷向量,每個占4個存儲單元,所以需要1024個字節(jié),在存儲器的最低端,地址從00000H-003FFH,這塊地址空間就是中斷向量表。6.28086/8088的中斷系統(tǒng)CSIPCSIPCSIPCSIPCSIPCSIPCSIP︽︾︽︾︽︾︽︾類型32類型31(十進制)供用戶定義的中斷(共224個)類型5類型4類型3類型2類型1類型0保留的中斷(共27個)專用的中斷(共5個)0000:03FFH0000:007FH0000:007EH0000:0014H0000:0013H0000:0010H0000:000FH0000:000CH0000:000BH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H溢出中斷斷點中斷非屏蔽中斷單步中斷除數(shù)為0中斷8086/8088的中斷向量表在中斷向量表中,各中斷向量按中斷類型碼從0到255順序存放。知道了中斷類型號,便可計算出相應的中斷向量在表中存放的位置,稱為中斷向量表地址,或稱為中斷向量指針。從中斷向量表地址中取出中斷向量,便得到了該中斷類型號的中斷服務程序入口地址。即中斷類型號×4=中斷向量指針的低地址(中斷向量指針的低地址)→(IP)中斷類型號×4+2=中斷向量指針的高地址(中斷向量指針的高地址)→(CS)CPU響應中斷時,只需要把中斷類型碼N左移2位(乘以4),即可得到中斷向量在中斷向量表中的對應地址4N(該中斷向量所占4個字節(jié)單元的第一個字節(jié)單元的地址),然后把由此地址開始的兩個低字節(jié)單元的內(nèi)容裝入IP寄存器:IP←(4N,4N+1);再把兩個高字節(jié)單元的內(nèi)容裝入CS寄存器:CS←(4N+2,4N+3)。這就是使程序轉(zhuǎn)入中斷類型碼為N的中斷服務程序的控制過程,至于中斷類型碼N的來源,對于不同的中斷類型(內(nèi)部中斷、外部中斷),情況有所不同,詳見后述。6.28086/8088的中斷系統(tǒng)87H65H43H21H0000:009FH0000:009CH例如,中斷類型碼為27H的中斷所對應的中斷向量應存放在從0000H:009CH開始的4個連續(xù)字節(jié)單元中。如果相應存儲單元的內(nèi)容如下圖所示,那么27H號中斷的中斷服務程序的入口地址即為8765H:4321H。6.28086/8088的中斷系統(tǒng)4、8086/8088中斷的分類⑴前5個是專用中斷(類型0-4)

類型0:除數(shù)為0中斷類型1:單步中斷類型2:NMI中斷類型3:斷點中斷類型4:溢出中斷

⑵保留的中斷(類型號05-3FH):這是Intel公司為軟件、硬件開發(fā)保留的中斷類型,大部分用于系統(tǒng)中斷,如20H-3FH為DOS中斷調(diào)用。

⑶供用戶定義的中斷(類型號40H-FFH):使用用戶自己定義的中斷,用戶必須把該中斷的中斷向量填寫到中斷向量表中。填寫方法有兩種:①用指令填寫②用DOS功能調(diào)用來設置中斷向量(設置中斷向量:21號中斷的25H子功能;取中斷向量:21號中斷的35H子功能;)6.28086/8088的中斷系統(tǒng)三、外部中斷由外部的中斷請求信號啟動的中斷,稱為外部中斷,也稱硬件中斷。8086CPU為外部中斷提供兩條引線,即NMI和INTR,用來輸入中斷請求信號。

1、非屏蔽中斷(NMI):不受中斷標志位的控制,中斷類型號為2,所以中斷向量放在0000:0008開始的4個單元中。NMI中斷一般用于緊急情況的處理。

2、可屏蔽中斷(INTR):受中斷標志位的控制,IF=1,CPU才能響應INTR中斷。CPU響應INTR中斷時,往INTA引腳上發(fā)兩個負脈沖,外設接到第二個負脈沖后,立即往數(shù)據(jù)總線上送出中斷類型碼,供CPU讀取。中斷響應需要兩個總線周期,如下圖所示。6.28086/8088的中斷系統(tǒng)四、內(nèi)部中斷內(nèi)部中斷即軟件中斷,它是由于CPU執(zhí)行了INTn(含INT3)、INTO指令,或者由于除法出錯以及進行單步操作所引起的中斷,主要包括INTn指令中斷、斷點中斷、溢出中斷、除法錯中斷以及單步中斷。它不受IF標志的控制,但單步中斷受TF標志的控制。6.28086/8088的中斷系統(tǒng)T1T2T3T4TITITIT1T2T3T4第一個總線周期第二個總線周期三個空閑狀態(tài)中斷類型碼CLK____INTAAD7~AD0(1)INTn指令中斷

8086系統(tǒng)提供了直接調(diào)用中斷處理子程序的手段,這就是中斷指令I(lǐng)NTn。指令中的中斷類型碼n告訴CPU調(diào)用哪個中斷處理子程序。(2)除法錯中斷(類型0)在執(zhí)行除法指令DIV或IDIV后,若所得的商超出了目標寄存器所能表示的范圍,比如用數(shù)值0作除數(shù),則CPU立即產(chǎn)生一個0型中斷。(3)溢出中斷(類型4)若上一條指令執(zhí)行的結(jié)果使溢出標志位OF置1,則緊接著執(zhí)行INTO指令時,將引起類型為4的內(nèi)部中斷,CPU將轉(zhuǎn)入溢出錯誤處理;若OF=0時,則INTO指令執(zhí)行空操作,即INTO指令不起作用。INTO指令通常安排在算術(shù)運算指令之后,以便在發(fā)生溢出時能及時處理。6.28086/8088的中斷系統(tǒng)(4)單步中斷(類型1)當把CPU標志寄存器的TF位置為1以后,CPU便處于單步工作方式。在單步工作方式下,CPU每執(zhí)行完一條指令,就會自動產(chǎn)生一個1型中斷,進入1型中斷處理程序。此處理程序顯示CPU內(nèi)部各寄存器的內(nèi)容并告知某些附帶的信息。(5)斷點中斷(類型3)

和單步中斷類似,斷點中斷也是一種調(diào)試程序的手段,并且常常和單步中斷結(jié)合使用。對一個大的程序,不可能對整個程序全部用單步方式來調(diào)試,而只能先將程序中的某一錯誤確定在程序中的一小段中,再對這一小段程序用單步方式跟蹤調(diào)試。斷點中斷就是用來達到這個目的的。在所有INTn形式的指令中,只有斷點中斷指令I(lǐng)NT3是一條單字節(jié)長的指令,其他中斷指令都是兩字節(jié)指令。6.28086/8088的中斷系統(tǒng)內(nèi)部中斷的特點是:(1)中斷類型碼由CPU內(nèi)部自動提供(含從INTn指令中自動提取),不需要執(zhí)行中斷響應總線周期(INTA總線周期)去讀取中斷類型碼。(2)除單步中斷外,所有內(nèi)部中斷都不可以用軟件的方法來禁止(屏蔽)。單步中斷可以通過軟件將TF標志置1或清0來予以允許或禁止。(3)除單步中斷外,所有內(nèi)部中斷的優(yōu)先級都比外部中斷高。6.28086/8088的中斷系統(tǒng)五、中斷響應和中斷處理過程如下圖所示。可屏蔽中斷要多兩個步驟,即要先判斷IF是否為1,若IF=1則進入中斷響應,此時CPU要讀取中斷類型碼,然后進入所有中斷都要做的事:⑴將標志寄存器FR的內(nèi)容壓入堆棧⑵將中斷允許標志IF和單步標志TF清零⑶將斷點保護到堆棧中。所謂斷點就是指響應中斷時,主程序中當前指令下面的一條指令的段寄存器CS的值和指令指針寄存器IP的值壓入堆棧,先壓CS,再壓IP的值。⑷根據(jù)當前中斷的中斷類型碼查中斷向量表,得到中斷向量(中斷服務程序入口地址)分別裝入CS和IP,從而轉(zhuǎn)到相應的中斷服務程序。⑸執(zhí)行中斷服務程序,結(jié)束后恢復斷點,從而繼續(xù)執(zhí)行原來的程序。6.28086/8088的中斷系統(tǒng)中斷優(yōu)先級除法錯,INTn,INTO最高NMIINTR單步最低8086/8088中斷優(yōu)先級YYYYNNNNNYY①①Y②③④⑤⑥執(zhí)行IRET指令NN結(jié)束當前指令除法錯,INTO,INTn?NMIINTR?TF=1?執(zhí)行下一條指令I(lǐng)F=1?內(nèi)部自動形成中斷類型碼N讀中斷類型碼N標志壓入堆棧令TEMP=TF清除IF和TFCS和IP壓入堆棧(4N,4N+1)IP(4N+2,4N+3)CS執(zhí)行中斷處理程序IP、CS出棧標志寄存器出棧返回被中斷的主程序有NMI?TEMP=1?8086/8088中斷響應和中斷處理過程需要說明的是,在圖13.12所示的中斷響應和處理過程中,其中的①~⑥步(含①′)是由處理器內(nèi)部的中斷系統(tǒng)硬件自動完成的,即無需程序員的直接控制和干預;其后的中斷處理過程則是通過執(zhí)行中斷服務程序(軟件)來完成的。6.28086/8088的中斷系統(tǒng)六、可屏蔽中斷的響應和處理過程1、INTR中斷的全過程首先中斷請求信號INTR由外部設備產(chǎn)生,并送到8086的INTR引腳上。如果IF=1,則在CPU完成正在執(zhí)行的指令后,便開始響應中斷,(同時把下一跳指令的CS,IP壓入堆棧)步驟如下:⑴CPU讀取中斷類型號n。CPU通過INTA發(fā)中斷響應信號給接口,并啟動中斷過程。這個響應信號將使發(fā)中斷請求的接口把一個字節(jié)的中斷類型號通過數(shù)據(jù)總線送給CPU;⑵按先后順序把PSW(即FR)、CS和IP壓入堆棧;⑶清除IF和TF標志;⑷把4×n+2的字存儲單元中的內(nèi)容讀入CS中,把4×n的字存儲單元中的內(nèi)容讀入IP中,即得到中斷向量;⑸CPU從新的CS:IP值開始執(zhí)行中斷服務程序,若允許中斷嵌套,則一般在中斷服務程序中保存寄存器后,就安排一條STI指令,以便響應優(yōu)先權(quán)較高的中斷。在中斷服務程序末尾安排一條IRET返回指令。

6.28086/8088的中斷系統(tǒng)外設接口⑨IRET指令使舊的IP、CS、PSW彈出堆棧4N4N+2新的(IP)新的(CS)舊的(IP)舊的(CS)舊的(PSW)⑤現(xiàn)行PSW、CS、IP壓棧INTR____INTAIPCSPSW(FR)中斷類型碼寄存器②CPU完成現(xiàn)行指令,發(fā)出中斷響應信號Q中斷請求Q中斷屏蔽①接口發(fā)中斷請求信號INTR③CPU讀取中斷類型碼N被中斷的程序.....IRET中斷服務程序...存儲器中斷向量表︽︾︽︾︽︾16位④清除IF和TF⑦轉(zhuǎn)入中斷服務程序⑩返回被中斷的程序⑧開放中斷(可選)CPU⑥取CS、IP新值STI...︽︾可屏蔽中斷全過程至于不可屏蔽NMI中斷,與上述操作基本類似,只是不需讀取中斷類型碼,因為它的中斷類型碼由CPU內(nèi)部自動產(chǎn)生。2、中斷類型號的獲得⑴除法錯誤、單步中斷、非屏蔽中斷、斷點中斷和溢出中斷分別由CPU內(nèi)部自動提供中斷類型號(0-4)。⑵軟件中斷則是從指令流中,即在第2個字節(jié)中讀得中斷類型號。⑶外部中斷INTR可以用不同的方法獲得中斷類型號,通常由硬件提供,如8259A芯片可以將中斷類型號送到數(shù)據(jù)總線上,由CPU讀取而獲得。6.28086/8088的中斷系統(tǒng)6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)Intel8259A用于管理和控制8086/8088的外部中斷請求,實現(xiàn)優(yōu)先級判決,提供中斷類型碼,屏蔽中斷輸入等功能。使用單片8259A可以管理8級中斷,采用級聯(lián)方式,可擴充到64級(用9片8259A)。封裝形式28腳雙列直插(28-pinDIP),DIP:Dual-In-linePackage,如下頁圖所示。IR0IR7單片

INTINTA8259AINTRINTACPU...中斷請求

CPU8259A.....IR0IR7級聯(lián)主8259AIR0從...IR7

8259AIR0從...IR7INTAINTR123456789101112131428272625242322212019181716158259A

CS

WRRDD7D6D4D5D2D3D0D1CAS0CAS1GNDINTAIR7IR6IR4IR5IR2IR3IR0IR1INTCAS2SP/ENVCCA06.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)

--片選信號(ChipSelect)低電平有效,來自地址譯碼器的輸出只有有效時,CPU才能對8259A進行讀寫操作。--寫信號,低電平有效,來自CPU的輸出;當有效且有效時,使8259A接受CPU送來的命令字。--讀信號,低電平有效,來自CPU的輸出;當有效且有效時,使8259A將狀態(tài)信息放到數(shù)據(jù)總路線上,供

CPU檢測。D7-D0--雙向數(shù)據(jù)總線,接到系統(tǒng)數(shù)據(jù)總線的D7-D0上,用來傳送控制字、狀態(tài)字和中斷類型號。IR7-IR0

--中斷請求信號,輸入,來自外部接口電路。(單片時)INT

--向CPU發(fā)出的中斷請求信號。(單片時)CSWRCSWRRD6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)一、8259A的引腳如上頁圖所示,它有28個引腳,為標準芯片,即左下角為地,右上角為電源。WRRDRDCSCS--中斷響應信號,由此接收CPU發(fā)來的中斷響應脈沖。INTAA0

--地址輸入信號,用于對8259A內(nèi)部寄存器的尋址。CAS2-CAS0

--級聯(lián)線(CASCADE

LINES),傳送3位標識碼,用于區(qū)分特定的從控制器。雙向:對于主片為輸出,對于從片為輸入。--從片/允許緩沖器信號。雙功能引腳:作為輸入時,8259A作為主片(=1)8259A作為從片(=0)作為輸出時,用來啟動(允許)數(shù)據(jù)總線收發(fā)器(如8286)。究竟是作為輸入還是輸出,取決于8259A是否工作于“緩沖方式”(即8259A是否通過一個“數(shù)據(jù)總線收發(fā)器”與系統(tǒng)總線相連)SP/EN6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)SP/ENSP/EN

二、8259A的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器讀/寫控制電路級連緩沖器/比較器中斷服務寄存器(ISR)中斷請求寄存器(IRR)優(yōu)先權(quán)判別器(PR)中斷屏蔽寄存器(IMR)控制邏輯

SP/EN。。。IR0IR1IR2IR6IR7內(nèi)部總線CAS0CAS1CAS2____INTAINT

WR

RDCSA0D7~D06.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)1、數(shù)據(jù)總線緩沖器2、讀寫控制電路,一片8259A只占用兩個端口地址,由A0來選擇,其它高位地址譯碼輸出作為片選信號CS。WR、RD分別為寫信號和讀信號。3、級聯(lián)緩沖器/比較器,擴充中斷用。4、中斷請求寄存器IRR,8位寄存器,每一位對應IR0-IR7,某根線上有中斷請求,則IRR中對應位置1。5、中斷服務寄存器ISR,CPU當前正處理的IRi中斷請求時,該寄存器i位置1(i=0-7)。6.中斷屏蔽寄存器IMR,當IMR的第i位為1時,禁止IRi來的中斷請求。7、優(yōu)先級判別器PR,當有多個中斷同時請求中斷時,判別當前優(yōu)先級最高的中斷請求進入系統(tǒng)。8、控制邏輯,控制芯片內(nèi)個部件協(xié)調(diào)一致地工作。控制邏輯中包含兩個寄存器組:初始化命令寄存器組:ICW1~ICW4

操作命令寄存器組:OCW1~OCW36.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)三、8259A的工作方式1中斷觸發(fā)方式,電平觸發(fā)方式或邊沿觸發(fā)方式(由低到高的正跳變),利用初始化命令字ICW1來設置。2中斷結(jié)束方式,中斷請求處理結(jié)束時,需將ISR中相應位清零。⑴自動中斷結(jié)束方式(自動EOI方式),中斷處理結(jié)束時自動將ISR中相應位清零,只需將初始化命令字ICW4中的AEOI置為1即可實現(xiàn)這種方式。⑵普通中斷結(jié)束方式(普通EOI方式),用在8259A的全嵌套方式下,即在CPU處理完一個中斷請求時需8259A發(fā)送一個EOI命令,8259A收到EOI后,將ISR中最高優(yōu)先級的置1位清零(即當前正在處理的中斷)。用操作命令字OCW2中的EOI=1,SL=0,R=0的設置來實現(xiàn)。⑶特殊中斷結(jié)束方式,在非全嵌套方式下,通過向8259A發(fā)一條特殊中斷結(jié)束命令來判斷要清除ISR中置1位中的哪一位。用操作命令字OCW2中的EOI=1,SL=1,R=0的設置來實現(xiàn),此時OCW2中的L2、L1、L0這3位指出了到底要清除ISR中的哪一位。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)3、優(yōu)先級管理方式⑴全嵌套方式:全嵌套方式是8259A初始化后自動進入的基本工作方式。此時優(yōu)先級從IR0到IR7依次降低。當某一中斷處理時,可響應比它高的中斷,但禁止比它低的或同級中斷進入。當某一中斷請求處理結(jié)束時,CPU向8259A發(fā)送中斷結(jié)束命令EOI,以使ISR中相應位清零。⑵特殊全嵌套方式:與⑴的普通全嵌套方式差不多,區(qū)別是CPU處理某一中斷時,允許比它高的和與它同級的中斷請求進入,而只禁止比它低的中斷請求。⑶自動循環(huán)方式(普通EOI循環(huán)方式):在這種方式下,任何一級中斷請求被處理完后,CPU向8259A發(fā)送中斷結(jié)束命令EOI,以使ISR中優(yōu)先級最高的置1位清零,并重新賦給它最低優(yōu)先級,而將最高優(yōu)先級賦給比它低一級的中斷請求,其它中斷請求的優(yōu)先級則以循環(huán)方式類推。⑷特殊EOI循環(huán)方式,用戶根據(jù)要求用置優(yōu)先級命令指定最低優(yōu)先級,例如設置IRi為最低優(yōu)先級,則最高優(yōu)先級為IRi+1,其它各級按循環(huán)方式類推。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)4、中斷屏蔽方式⑴普通屏蔽方式,將IMR中某一位或幾位置1,則其對應的中斷被屏蔽(即這些中斷被禁止)。⑵特殊屏蔽方式,一般情況處理一個中斷時,禁止同級或低級中斷進入,但有些場合,在處理某個中斷時,僅希望對本級屏蔽,可以響應高級或低級中斷,此時采用這種方式。特殊屏蔽方式通過操作命令字OCW3中的ESMM和SMM同時置為1,并將IMR對應于本級中斷的位置1來實現(xiàn)。5、連接系統(tǒng)總線的方式(1)緩沖方式(ICW4的BUF=1)8259A通過總線驅(qū)動器(如8286)和數(shù)據(jù)總線相連。在緩沖方式下,8259A的作為輸出(有效),此時,由ICW4的M/S位來定義(標識)本8259A是主片還是從片。SP/ENEN6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)(2)非緩沖方式(ICW4的BUF=0)即8259A直接與數(shù)據(jù)總線相連。在“非緩沖方式下”,8259A的作為輸入(有效)。此時,由端來標識本8259A是主片還是從片。在“非緩沖方式下”,ICW4的BUF=0,M/S位無意義。SP/ENSPSP/EN四、8259A的控制字及編程使用8259A的控制寄存器可分為兩組,一組是初始化命令字ICW1-ICW4;另一組是操作命令字OCW1~OCW3。每片8259A具有兩個內(nèi)部端口地址,一個偶地址端口(A0=0),一個奇地址端口(A0=1),其他高位地址碼由用戶定義,用來產(chǎn)生8259A的片選信號。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)1、初始化命令字,初始化命令字用來對8259A初始化,有四個,設置次序依次為:ICW1、ICW2、ICW3和ICW4。(1)ICW1ICW1使用偶地址端口(A0=0),其中D4位為特征位(標志位),此時該位固定為1,表示當前寫入的是ICW1(OCW1也用偶地址端口寫入,但OCW1的D4位為0)。ICW1的格式如下:A7A6A51LTIMADISNGLIC40ICW1A0D7D6D5D4D3D2D1D06.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)解釋:IC4

規(guī)定初始化時是否要寫入ICW4。IC4=0表示不寫入ICW4,IC4=1表示寫入ICW4。SNGL規(guī)定8259A的用法。SNGL=0表示為級聯(lián)方式,同時要寫入ICW3;SNGL=1表示為單片方式,不要寫入ICW3。ADI為配合8085工作時選用CALL指令字節(jié)數(shù)而設,8086不用這一位。LTIM規(guī)定中斷檢測方式.LTIM=0表示邊沿觸發(fā),LTIM=1表示電平觸發(fā)。A5~A7在8085微處理器中用這幾位作中斷向量字,8086不用這三位。(2)ICW2ICW2使用奇地址端口(A0=1),緊跟在ICW1之后設置。ICW2的格式如下:6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)A15/T7A14/T6A13/T5A12/T4A11/T3A10A10A101ICW2A0D7D6D5D4D3D2D1D0對于8086系統(tǒng),ICW2的D7~D3位用來確定中斷類型碼N的高5位T7~T3位,低3位D2~D0無定義;對于非8086系統(tǒng),ICW2的8位全部用來作中斷向量地址的高8位A15~A8。在8086系統(tǒng)中,8259A在中斷響應周期的第二個總線周期內(nèi),從數(shù)據(jù)總線上向CPU送出8位中斷類型碼N的值。其中高5位D7~D3即T7~T3,由ICW2在初始化編程時設定;低3位D2~D0則由8259A根據(jù)中斷進入的引腳序號而自動填入,從IR0~IR7依次為000~111。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)(3)ICW3ICW3只在級聯(lián)方式中使用,端口地址為奇地址,其格式如下:S7S6S5S4S3S2/ID2S1/ID1S0/ID01ICW3A0D7D6D5D4D3D2D1D0對于主片8259A,ICW3表示哪些IRi引腳接有從片8259A。接有從片8259A的相應S位置1,否則置0。例如,若IR2、IR6上接有從片8259A,且其他IR引腳未接有從片8259A,則ICW3為01000100。對于從片8259A用ICW3中的ID2~ID0表示本8259A接在主片8259A的哪一根IR引腳上。與IR0~IR7分別對應的ID碼為000~111。例如,若從片8259A接在主片8259A的IR6上,則從片8259A的ICW3應設定為:ID2=1,ID1=1,ID0=0。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)(4)ICW4在8086系統(tǒng)中必須設置ICW4,端口地址為奇地址,其格式如下:000SFNMBUFM/SAEOIuPM1ICW4A0D7D6D5D4D3D2D1D0其中,μPM規(guī)定是哪種系統(tǒng)。μPM=0表示是8080/8085系統(tǒng),μPM=1表示是8086系統(tǒng)。AEOI表示中斷結(jié)束方式。AEOI=0為普通EOI方式,AEOI=1表示自動EOI方式。BUF表示本8259A工作于緩沖方式還是非緩沖方式。BUF=1為緩沖方式,BUF=0為非緩沖方式。(BUFFER)6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)其中,μPM規(guī)定是哪種系統(tǒng)。μPM=0表示是8080/8085系統(tǒng),μPM=1表示是8086系統(tǒng)。AEOI表示中斷結(jié)束方式。AEOI=0為普通EOI方式,AEOI=1表示自動EOI方式。BUF表示本8259A工作于緩沖方式還是非緩沖方式。BUF=1為緩沖方式,BUF=0為非緩沖方式。(BUFFER)在緩沖方式下,SP/EN引腳作為輸出能使信號給總線收發(fā)器。此時,由M/S位來定義本8259A是主片還是從片。所謂8259A工作于緩沖方式,是指在多片8259A級聯(lián)的大系統(tǒng)中,8259A通過總線收發(fā)器(驅(qū)動器)和數(shù)據(jù)總線相連。M/S位用來在緩沖方式下規(guī)定本8259A是主片還是從片。M/S=0表示是從片,M/S=1表示是主片。在非緩沖方式(BUF=0)下,M/S位無效。SFNM表示中斷嵌套方式。SFNM=0表示全嵌套方式,SFNM=1表示特殊全嵌套方式。8259A的初始化命令字(ICW)是在加電之后由CPU按特定的順序?qū)懭氲?。也就是說,各初始化命令字的識別一方面依賴于地址信號A0和初始化命令字中的特定標識位,另一方面也與寫入的先后次序有關(guān)。8259A的初始化順序及相應的尋址標志如下圖所示。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)開始ICW1(A0=0D4=1)ICW2(A0=1)SNGL=0?(級聯(lián)方式?)ICW3(A0=1)IC4=1?ICW4(A0=1)準備好接受中斷NNYY①在初始化操作過程的開頭,總要依次寫入命令字ICW1和ICW2。②只有當ICW1中的SNGL位=0,才需寫入ICW3。對于主片和從片均需寫入ICW3,而且它們的格式不同。③只有當ICW1中的IC4=1時,才需寫入ICW4。對于8086系統(tǒng),ICW4總是需要設置的。在系統(tǒng)中,單片8259A與80x86CPU配置時,初始化要寫入的預置命令字是:ICW1、ICW2、ICW4;而級聯(lián)系統(tǒng)要寫入預置命令字是:ICW1、ICW2、ICW3和ICW4。初始化過程結(jié)束,8259A進入所設置的狀態(tài)后,才能寫入操作命令字(OCW)。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)2、操作命令字,有三個OCW1-OCW3,設置次序沒有規(guī)定先后,這點與ICW設置不同,使用時可根據(jù)需要靈活選擇不同的操作命令字寫入到8259A中。當然,也需注意奇、偶端口地址及有關(guān)標識位的規(guī)定。(1)OCW1OCW1為中斷屏蔽操作命令字,用來實現(xiàn)中斷屏蔽功能,要求寫入8259A的奇地址端口(A0=1)。OCW1的內(nèi)容被直接置入中斷屏蔽寄存器IMR中,其格式如下:M7M6M5M4M3M2M1M01OCW1A0D7D6D5D4D3D2D1D0其中M0~M7分別對應8259A的IR0~IR7。當OCW1中的Mi位為1時,則相應的IRi的中斷請求就被屏蔽。例如,若通過OCW1向中斷屏蔽寄存器寫入代碼11110000,將導致中斷輸入IR7~IR4被屏蔽掉,而IR3~IR0撤銷屏蔽。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)(2)OCW2OCW2用來設置優(yōu)先級循環(huán)方式和中斷結(jié)束方式。占用偶地址端口(A0=0)。OCW2的格式如下:RSLEOI00L2L1L00OCW2A0D7D6D5D4D3D2D1D0其中,D4D3=00是OCW2的標識位。R表示中斷優(yōu)先級是否按循環(huán)方式設置。R=1表示采用循環(huán)方式,R=0表示采用非循環(huán)方式。SL表示OCW2中的L2、L1、L0是否有效。SL=1表示有效,SL=0表示無效。EOI為中斷結(jié)束命令位。EOI=1使當前ISR寄存器的相應位清0。當ICW4中的AEOI為0時,ISR中的相應置1位就要由該命令位來清除。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)L2、L1、L0在SL=1時配合R、SL、EOI的設置,用來確定一個中斷優(yōu)先級的編碼。L2、L1、L0的8種編碼000~111分別與IR0~IR7相對應。由R、SL、EOI三位可以定義多種不同的中斷結(jié)束命令或優(yōu)先級循環(huán)方式。綜合起來,R、SL、EOI的設置與其代表的意義如下表所示。R、SL、EOI的設置及意義RSLEOI意義001普通EOI命令011特殊EOI命令101普通EOI循環(huán)命令111特殊EOI循環(huán)命令000自動EOI循環(huán)方式(復位)100自動EOI循環(huán)方式(置位)110置優(yōu)先權(quán)命令010無操作6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)(3)OCW3OCW3的端口為偶地址(A0=0),其格式如下:ESMMSMM01PPRRIS0OCW3A0D7D6D5D4D3D2D1D0其中D4D3=01是OCW3的特征位。ESMM是特殊屏蔽方式允許位,SMM是特殊屏蔽方式位。當ESMM為0時,SMM的值不起用。當ESMM為1時,由SMM位決定是否工作在特殊屏蔽方式。當ESMM=1,SMM=0時,表示8259A不是工作在特殊屏蔽方式。當ESMM=SMM=1時,表示8259A工作在特殊屏蔽方式。P是查詢命令(PollCommand)標識位。當P=1時,表示向8259A發(fā)查詢命令,查詢當前是否有中斷請求,以及在有中斷請求時,當前正在請求的中斷最高優(yōu)先級是哪一級。查詢的中斷狀態(tài)字的格式如下:6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)IR------------W2W1W00A0D7D6D5D4D3D2D1D00:無中斷請求1:有中斷請求當前正在請求的中斷的最高優(yōu)先級例6.1對8259A按下述要求進行初始化編程:(1)工作于8086系統(tǒng),單片8259A,邊沿觸發(fā)方式。(2)中斷類型碼初始值為08H,即IR0~IR7對應的中斷類型碼為08H~0FH。(3)中斷結(jié)束時,用普通中斷結(jié)束命令,固定優(yōu)先級。8259A的端口地址為20H,21H。6.3可編程中斷控制器8259A(8259AProgrammableInterruptController-PIC)實現(xiàn)上述要求的初始化程序如下:MOVAL,13H;ICW1,邊沿觸發(fā),

溫馨提示

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

評論

0/150

提交評論