微機原理第7章_第1頁
微機原理第7章_第2頁
微機原理第7章_第3頁
微機原理第7章_第4頁
微機原理第7章_第5頁
已閱讀5頁,還剩146頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 使用中小規(guī)模集成電路構(gòu)成接口電路,電路結(jié)構(gòu)復雜,實現(xiàn)煩瑣,可靠性差。隨著半導體技術(shù)的發(fā)展,出現(xiàn)了專用的接口芯片。它將接口電路及其附屬電路集成到一個芯片中,并設(shè)有與CPU總線相匹配的電路,使接口芯片可以方便地連接到總線上。另外這類芯片一般多是的,可通過軟件控制芯片的工作方式,使用靈活方便。 8255A是是INTEL系列的并行接口芯片,它是可系列的并行接口芯片,它是可編程的,可以通過軟件控制芯片的工作方式和工作編程的,可以通過軟件控制芯片的工作方式和工作過程,使用靈活方便。過程,使用靈活方便。 8255A與外設(shè)相連接的有 個口,即,3個口均為,每個端口都可由程序設(shè)定為各種不同的工作方式和數(shù)據(jù)傳輸

2、方向。 有一個8位數(shù)據(jù)輸入鎖存器和一個8位數(shù)據(jù)輸出鎖存/緩沖器,所以,用端口A作為輸入或輸出時,數(shù)據(jù)均具備鎖存能力; 有一個8位數(shù)據(jù)輸入緩沖器和一個8位數(shù)據(jù)輸出鎖存/緩沖器; 有一個8位數(shù)據(jù)輸入緩沖器和一個8位數(shù)據(jù)輸出鎖存/緩沖器,可以分成兩組獨立4位端口,并具備位控功能。 8255A將這三個口分為兩組:A組(A口的8位和C口的高4位)、B組(B口的8位和C口的低4位),分別由組和組控制電路控制 。 這兩組控制電路根據(jù)CPU發(fā)出的方式控制字來確定8255A的工作方式,每個控制組都接受來自讀/寫控制邏輯的命令,接受來自內(nèi)部數(shù)據(jù)線的控制字,然后向各有關(guān)端口發(fā)出相應的控制命令。 用來控制數(shù)據(jù)傳送過程

3、,包括地址線A1、A0,片選信號CS和讀、寫控制信號RD、WR,復位信號RESET等,完成內(nèi)部端口的選擇和讀寫和復位操作。 數(shù)據(jù)總線緩沖器是8位雙向三態(tài)緩沖器, 8255A與系統(tǒng)總線之間的命令、數(shù)據(jù)、控制字等信息都是通過它來傳送的,它是系統(tǒng)總線與8255A之間交換信息的必經(jīng)之路。VCC和和GND,接接5V電源。電源。PA0-7,PB0-7,PC0-7,端口端口A、B、C的外部引出的外部引出信號??梢栽O(shè)置不同數(shù)據(jù)信號??梢栽O(shè)置不同數(shù)據(jù)傳輸方向。傳輸方向。 復位信號,高電平有效。復位使內(nèi)部端口輸出寄存器,A、B、C端口設(shè)置為。 雙向數(shù)據(jù)信號線,用于8255A與系統(tǒng)數(shù)據(jù)線相連,傳送CPU與8255A

4、之間的數(shù)據(jù)、控制信息、狀態(tài)信息。 8255A讀信號,低電平有效。當有效時,CPU從8255A的指定端口讀取數(shù)據(jù)或狀態(tài)信息。通常接系統(tǒng)總線的讀選通信號。 8255A寫信號,低電平有效。當有效時,CPU向8255A指定端口寫入控制字或數(shù)據(jù)。通常接系統(tǒng)總線的寫選通信號。 片選信號,當它為低電平(有效)時,8255A才能參與總線操作。內(nèi)部端口選擇信號。當片選有效選中8255A時,由A1A0的編碼來決定是選中A口、B口、C口,還是選中控制字寄存器。 8255A是可編程的并行接口,可以利用軟件編程來指定8255A的工作方式。只要將不同的控制字裝入芯片中的控制寄存器,即可確定8255A的工作方式。 8255

5、A共有兩個控制字:。這兩個控制字均需寫入控制端口,在控制字中用來區(qū)分。 若控制字的 ,則為控制字; 若控制字的,則是C口的控制字。 8255A的方式選擇控制字主要用于設(shè)置A組和B組的工作方式,以及A、B、C端口的數(shù)據(jù)傳輸方向。 設(shè)置A組為方式0輸出,B組為方式0輸入,端口C全部用于輸出。寫出方式選擇控制字。方式選擇控制字 8255A的端口C作為輸出口使用時,可以通過置1/置0控制字對端口的各位 進行控制。 通過置1/置0控制字設(shè)置PC7為1,PC3為0。設(shè)8255A的端口號為8000H8003H??刂谱諴C7置1: 0000 1111B = 0FHPC3置0: 0000 0110B = 06H

6、非位控方式 8255A有三種基本的工作方式,這些工作方式可用軟有三種基本的工作方式,這些工作方式可用軟件編程來指定。件編程來指定。l 其中其中A組可以工作在組可以工作在3種方式,而種方式,而B組只有前組只有前2種工作種工作方式。方式。 在方式0下,8255A與外設(shè)相連的A、B、C三個端口均可被定義為輸入或輸出傳送方式,沒有固定用于應答的聯(lián)絡(luò)信號。方式0適合無條件傳輸。 兩個8位端口和兩個4位端口,輸入輸出有種不同的組合。 輸出是鎖存的,輸入是不鎖存的。 在這種方式下CPU可以通過簡單的輸入/輸出指令對各端口進行讀寫操作。功能上類似于前面介紹的使用鎖存器和三態(tài)門構(gòu)成的簡單接口電路。 8255A的

7、總線接口的時序與8088/8086總線時序一致,可以直接連接到CPU總線上,使用方便。輸入/輸出過程與前面介紹的使用鎖存器和三態(tài)門構(gòu)成的簡單接口電路基本相同。使用8255A的C口擴展8位獨立式按鍵,由A口直接驅(qū)動一位共陽極LED數(shù)碼管,當某鍵按下時顯示該鍵的序號,優(yōu)先級由K0至K7依次降低。7段碼字模表存放在內(nèi)存TABLE開始的單元,8255A口地址為300H303H。 使用8255A設(shè)計數(shù)碼轉(zhuǎn)換器。B口輸入的數(shù)據(jù)經(jīng)CPU轉(zhuǎn)換后由A口輸出。輸入/輸出的對應關(guān)系存放在內(nèi)存TABLE開始的256字節(jié)數(shù)碼轉(zhuǎn)換表中。設(shè)8255A的端口地址為80H,81H,82H,83H。方式選擇控制字 在方式1下,A

8、口和B口作為數(shù)據(jù)的輸入和輸出口,同時利用C口的某些位固定作為控制和狀態(tài)信號,這種方式常用于中斷和程序查詢傳送。 可提供一個或兩個選通端口,每個包括一個位數(shù)據(jù)口和三條控制線,并能提供中斷邏輯。 端口可設(shè)置為輸入或輸出。組數(shù)據(jù)的輸入/輸出均有鎖存功能,組數(shù)據(jù)的輸出均有鎖存功能而輸入不具備鎖存功能。 C口剩余位可作為一般輸入/輸出口使用。 當A口和B口設(shè)定為輸入時,各指定了C口的3根線作為8255A與外設(shè)及CPU之間的聯(lián)絡(luò)信號,如圖所示。B口8位STBBIBFBINTRBD7D0RDINTEBPC0PC2PC1PB7PB08位STBAIBFAINTRAI/OD7D0RDA口INTEAPC3PC4PC

9、5PA7PA0PC7、PC6輸入選通信號,低電平有效。它有效時,表示外設(shè)的數(shù)據(jù)已準備好,同時將外設(shè)送來的數(shù)據(jù)鎖存到8255A端口的輸入數(shù)據(jù)緩沖器中,等待CPU讀取。輸入緩沖器滿信號,高電平有效。當它有效時,說明輸入緩沖器中鎖存有信息,且尚未被CPU取走,通知外設(shè)不能再傳送新數(shù)據(jù);只有當它為低電平時,即表示CPU已讀取了數(shù)據(jù),輸入緩沖器變空,此時才允許外設(shè)傳送新的數(shù)據(jù)。中斷請求信號,高電平有效。它有效時,請求CPU從8255A讀取外設(shè)已送入的數(shù)據(jù)。中斷允許信號,它是一個內(nèi)部控制位。通過對(端口A)或者(端口B)置1/置0來開放/禁止端口輸入中斷請求。通用輸入輸出信號,如果A組和B組沒有全部工作在

10、方式1,C口的其它剩余位可作為通用輸入輸出信號使用。 當外設(shè)準備好數(shù)據(jù),在向數(shù)據(jù)端口送出數(shù)據(jù)后,送一個選通信號,將數(shù)據(jù)置入輸入緩沖器并使8255A的IBF為高電平,告訴外設(shè)當前輸入緩沖器已滿,暫時不要送入數(shù)據(jù);CPU也可以通過對C口對應位的讀操作了解是否有數(shù)據(jù)輸入。如果INTE為1,STB后沿將使INTR有效,向CPU發(fā)出中斷請求信號,待CPU響應這一中斷請求時,可以在中斷服務程序中安排IN指令對數(shù)據(jù)端口(A或B)實施讀操作,此操作將IBF置“0”,可以進行下一個數(shù)據(jù)的傳輸。 當A口與B口設(shè)定為方式1輸出時,也各指定了C口的3根線為信號線,其引腳定義和端口結(jié)構(gòu)如圖所示。 輸出緩沖器滿信號,低電

11、平有效。它有效時,表示CPU已將數(shù)據(jù)寫到8255A的輸出端口,通知外設(shè)來取數(shù)。外設(shè)送來的響應信號,低電平有效。當它為低電平時,表示外設(shè)已經(jīng)接收到了CPU送來的數(shù)據(jù)。中斷請求信號輸出,高電平有效。當它有效時,請求CPU向8255A端口寫入數(shù)據(jù)。中斷允許控制位,它是一個內(nèi)部控制位。通過對(端口A)或者(端口B)置1/置0來開放/禁止端口輸出中斷請求。通用輸入輸出信號,如果A組和B組沒有全部工作在方式1,C口的其它剩余位可作為通用輸入輸出信號使用。 當外設(shè)接受了由CPU送給8255A的數(shù)據(jù)后,對8255A發(fā)送一個響應信號ACK,此信號將OBF復位為高電平,如果INTE置成1,ACK將相應端口的INT

12、R置高向CPU發(fā)出中斷請求,請求CPU再輸出后面的數(shù)據(jù)??梢栽谥袛喾粘绦蛑邪才臤UT指令對數(shù)據(jù)端口(A或B)寫入后續(xù)字節(jié)。8255A口地址D0HD3H。方式選擇控制字 81H初始化:方式選擇控制字 A0H初始化: 在方式2下,即能發(fā)送數(shù)據(jù)又能接收數(shù)據(jù),CPU可以通過8位數(shù)據(jù)線與外設(shè)進行雙向通信。方式2只限于端口A使用,它用A口作為雙向數(shù)據(jù)端口,使用C口的5根線(PC3PC7)配合進行信息傳送。當A口工作在方式2時,B口仍可以工作在方式0或方式1。 方式2只適用于端口A。 端口A工作于方式2時,端口C用5個數(shù)位自動配合端口A提供控制信號和狀態(tài)信號。 A口對輸入和輸出的數(shù)據(jù)都是鎖存的。 在方式2

13、下,C口提供的聯(lián)絡(luò)信號實際上就是A口在方式1輸入和輸出時兩組信號線的組合。因此,各個引腳的定義也與方式1的相同,只不過中斷請求信號INTR既可在輸入時向CPU請求中斷,也可在輸出時向CPU請求中斷。其引腳定義和端口結(jié)構(gòu)如圖所示。 輸入選通信號,低電平有效。它有效時,外設(shè)送來的數(shù)據(jù)鎖存到8255A端口的輸入數(shù)據(jù)緩沖器中。輸入緩沖器滿信號,高電平有效。當它有效時,說明輸入緩沖器中已鎖存有信息。輸出緩沖器滿信號,低電平有效。它有效時,表示CPU已將數(shù)據(jù)寫到8255A的輸出端口,通知外設(shè)來取數(shù)。外設(shè)送來的響應信號,低電平有效。輸出中斷允許信號,由PC6置1/置0設(shè)置。輸入中斷允許信號,由PC4置1/置

14、0設(shè)置。中斷請求信號,高電平有效。它有效時向CPU申請中斷。如果輸入和輸出中斷均允許,CPU需根據(jù)和判斷中斷的來源。 工作在方式2的A口,可以認為是前面方式1的輸入和輸出相結(jié)合而分時工作的。其工作過程和方式1的輸入輸出過程一樣。在PA7PA0上,可能出現(xiàn)8255A口輸出數(shù)據(jù)到外設(shè),也可能出現(xiàn)外設(shè)通過PA7PA0的數(shù)據(jù)送給8255A。這就要防止PA7PA0上的數(shù)據(jù)線競爭問題,在方式2輸出時只有在ACK為低電平時才會輸出數(shù)據(jù),其余狀態(tài)均為高阻態(tài) 。 方式2是一種雙向工作方式,如果一個并行外部設(shè)備既可以作為輸入設(shè)備,又可以作為輸出設(shè)備,并且輸入輸出動作不會同時進行,那么,將這個外設(shè)和8255A的端口

15、A相連,并使它工作于方式2,就會非常合適。比如,磁盤驅(qū)動器就是這樣一個外設(shè),主機即可以往磁盤輸出數(shù)據(jù),也可以從磁盤輸入數(shù)據(jù),但數(shù)據(jù)輸出過程和數(shù)據(jù)輸入過程總是不重合的,所以,可以將磁盤驅(qū)動器的數(shù)據(jù)線與8255A的PA7PA0相連,再使PC7PC3和磁盤驅(qū)動器的控制線和狀態(tài)線相連即可。 在CPU執(zhí)行程序的過程中,由于某種突發(fā)事件的發(fā)生,使CPU暫時停止正在執(zhí)行的程序,轉(zhuǎn)向?qū)υ撏话l(fā)事件進行處理,對這個事件處理結(jié)束后又能回到原中止的程序,接著中止前的狀態(tài)繼續(xù)執(zhí)行原來的程序,這一個過程就稱為。把引起中斷的原因或觸發(fā)中斷請求的來源稱為。 8086可以處理不同的中斷,每個中斷對應一個(0255),CPU根據(jù)

16、中斷類型碼區(qū)分不同中斷。從中斷的來源來分這256個中斷可分為硬件中斷和軟件中斷兩大類。 是通過外部硬件產(chǎn)生的,因此硬件中斷又稱外部中斷。硬件中斷可分為非屏蔽中斷和可屏蔽中斷兩類。 通過CPU的 引腳輸入,不受中斷允許標志 的控制,總能被響應,非屏蔽中斷一般只有一個。 通過 引腳進入,只有在中斷允許標志 時,可屏蔽中斷才能被響應。IF=0時,可屏蔽中斷受到禁止。在一個系統(tǒng)中通過中斷控制器(8259A)的配合工作可屏蔽中斷可有多個。 CPU根據(jù)某條指令或者軟件對標志寄存器中的某個標志的設(shè)置而產(chǎn)生,從軟件中斷的產(chǎn)生過程來說,完全和硬件電路無關(guān),象除數(shù)為0、單步中斷、由中斷指令引起的中斷都是軟件中斷。

17、 中中 斷斷優(yōu)優(yōu) 先先 級級內(nèi)中斷(除法錯,內(nèi)中斷(除法錯,INTOINTO,INTINT)最最 高高 最最 低低非屏蔽中斷非屏蔽中斷 NMINMI可屏蔽中斷可屏蔽中斷 INTRINTR單步中斷單步中斷 位于存儲空間的,它是8086中斷系統(tǒng)的基礎(chǔ)。這個表可以容納256個中斷服務程序的入口地址,每個地址包括段地址和偏移量共4個字節(jié),按照中斷類型碼順序由內(nèi)存0段0單元開始依次順序存放。 各中斷處理子程序入口地址在地址表中的存放位置(地址偏移量)稱為,實際上中斷向量就是指各中斷處理程序入口地址在地址表中的存放地址。 中斷類型碼為20H的中斷,它的中斷向量為80H,中斷服務程序入口地址存放在0000:

18、0080H處的連續(xù)4個內(nèi)存單元中。 256個中斷中的前5個為,它們有固定的定義和處理功能。其中非屏蔽中斷為類型2,其余4個中斷均為軟件中斷,類型0的中斷是除數(shù)為零中斷,當除法溢出時也會引起這個中斷。類型1為單步中斷,類型3為斷點中斷,這兩個中斷都是用于調(diào)試程序的。類型4為溢出中斷 。 從類型5到類型31共27個中斷為,為了保持系統(tǒng)間的兼容性以及當前系統(tǒng)與未來系統(tǒng)的兼容性,一般不要對這些中斷自行定義。 其余類型中斷可由用戶自行定義和使用。 如果系統(tǒng)中使用的中斷比較少,剩余的地址表空間可以用于其它用途(存放代碼和數(shù)據(jù))。 硬件中斷是由外部設(shè)備通過,引腳送入的。 從引腳進入的中斷是,它不受中斷允許標

19、志IF的影響,非屏蔽中斷類型號為2,中斷向量為8,非屏蔽中斷處理程序入口地址存放在0008H00BH這4個單元中。 當NMI引腳上出現(xiàn)中斷請求時,不管CPU當前正在執(zhí)行什么程序都會響應中斷,進入對應中斷處理程序執(zhí)行??梢奛MI優(yōu)先級非常高,即使在可屏蔽中斷處理過程中,非屏蔽中斷也會被響應。 一般設(shè)備發(fā)出的中斷都是從CPU的引腳送入的。當CPU接收到一個可屏蔽中斷請求,如果IF=1,那么CPU會在執(zhí)行完當前指令后響應中斷,執(zhí)行中斷服務程序;如果IF=0,中斷不被響應。 IF標志的設(shè)置和清除可以通過STI和CLI指令來設(shè)置和清除。 在一個系統(tǒng)中可屏蔽中斷可以有很多個,這些中斷往往有主次之分,因而要

20、用到中斷優(yōu)先級管理,當有幾個可屏蔽中斷同時到來時,CPU首先響應和處理優(yōu)先級別最高的中斷,當CPU正在處理某個中斷時,如果外部又到來一個優(yōu)先級更高的中斷請求,那么CPU又會轉(zhuǎn)向處理更高級中斷,實現(xiàn)中斷嵌套。在8086/8088系統(tǒng)中,多使用8259A中斷控制器實現(xiàn)對多個中斷源的管理。 當CPU接收到外部中斷請求信號后,如果允許中斷,就會響應這個請求,轉(zhuǎn)入中斷處理子程序。這個過程就是過程。 當CPU在引腳上接收到一個中斷請求信號并且當前IF=1(允許中斷),CPU就會在當前指令執(zhí)行完后,開始響應外部中斷請求。 首先CPU在INTA引腳上發(fā)出兩個負脈沖,外部器件接收到第二個負脈沖后,立即往數(shù)據(jù)總線

21、上輸送中斷類型碼供CPU讀取,CPU在響應中斷過程中要依次做以下幾件事。 從數(shù)據(jù)總線上讀取中斷類型碼,將其存入內(nèi)部暫存器。 將標志寄存器值推入堆棧。 將中斷允許標志IF和單步標志TF清零。清IF可以在中斷響應過程中暫時屏蔽外部其它中斷,以免中斷響應過程被另一個中斷請求打斷。清TF是為了避免CPU以單步方式執(zhí)行中斷處理子程序。 將斷點保護到堆棧中。斷點是指在響應中斷時,主程序中將要執(zhí)行的下一條指令的地址,包括代碼段寄存器CS的值和指令指針I(yè)P的值。只有保護了斷點,才能在中斷子程序執(zhí)行完后正確返回主程序繼續(xù)執(zhí)行。 根據(jù)暫存器中存入的中斷類型碼獲得中斷向量,再由中斷向量從中斷入口地址表中取得中斷子程

22、序入口地址,并轉(zhuǎn)入相應的中斷處理子程序。 如類型碼20H,中斷向量80H,將內(nèi)存中0080H0083H這4個字節(jié)內(nèi)容作為中斷子程序入口地址,前2個字節(jié)裝入IP,后兩個裝入CS,這樣CPU要執(zhí)行的下一條指令(由CS的IP指出)就是中斷處理子程序的第一條指令。 CPU響應非屏蔽中斷()的過程與響應的過程基本相同,但它不需理會中斷允許標志IF。另外在響應非屏蔽中斷時,并不從設(shè)備中讀取中斷類型碼,因為由NMI進入的中斷請求只能有一個,它,中斷向量為8,直接從地址表08H0BH這4個單元獲得中斷處理子程序入口地址,轉(zhuǎn)入相應中斷處理程序執(zhí)行。 ,在上升沿后要求保持至少2個時鐘周期高電平。 當一個中斷被響應

23、并進入中斷處理程序后,如果發(fā)生非屏蔽中斷,CPU仍會響應,中斷當前執(zhí)行的中斷服務程序,轉(zhuǎn)向執(zhí)行非屏蔽中斷服務程序。 如果在可屏蔽中斷處理程序中,將,那么在可屏蔽中斷程序執(zhí)行過程中還可以響應INTR引腳上進入的可屏蔽中斷,實現(xiàn)。 中斷處理程序結(jié)束時中斷返回指令會按照與中斷響應相反的過程返回斷點,先彈出IP和CS,再彈出標志,這些由硬件自動完成,不需人為干預。 有些情況下,即使中斷允許標志IF為1,CPU也不能馬上響應中斷(可屏蔽),而是要等待下一條指令執(zhí)行完后才能響應中斷,主要有以下幾種情況: ,CPU是將它與其后一條指令作為一體執(zhí)行,必須等其后一條指令執(zhí)行完才能響應中斷。 ,也必須等下一條指令

24、執(zhí)行完后才能響應中斷。 這主要是為了保證堆棧指針的正確指示,所以如果要修改堆棧地址,這樣做才能保證兩個動作之間不被中斷,從而確保堆棧區(qū)的正確指示。 當遇到時,允許在指令執(zhí)行過程中進入中斷,但必須在一個基本動作完成后才能響應中斷。中斷執(zhí)行完返回后會繼續(xù)執(zhí)行原來的等待或串操作指令。 因此,在設(shè)計中斷子程序時,要為等待指令和串操作指令的執(zhí)行中途可能被中斷而保護好有關(guān)寄存器,象CX,AX,SI,DI等。否則中斷返回后,無法保證串操作正常執(zhí)行,象串操作中經(jīng)常使用CX作為執(zhí)行次數(shù)的計數(shù)器(循環(huán)計數(shù)器)。如果在中斷子程序中用到CX又沒對其實施保護,中斷返回后CX內(nèi)容會發(fā)生變化,不能正確表示串操作的執(zhí)行次數(shù),

25、不能正常控制串操作的執(zhí)行。 單步中斷標志TF。單步中斷是一個專用中斷,當TF為1時,在執(zhí)行完一條指令后,能夠自動產(chǎn)生中斷類型碼為1的單步中斷,在這個中斷處理程序中可以顯示各寄存器的內(nèi)容,單步中斷主要用于調(diào)試程序中。使用單步中斷的目的是單步執(zhí)行主程序,因此進入中斷處理程序后,已由硬件自動將TF清0,保證CPU連續(xù)執(zhí)行中斷處理程序。 中斷請求信號INTR至少維持兩個時鐘周期高電平,中斷才可能被響應。 只有在最小模式才從INTA引腳發(fā)中斷響應脈沖,在最大模式通過S2 ,S1 ,S0發(fā)出中斷響應,通過總線控制器送給外設(shè)。 如果同時出現(xiàn)中斷請求及總線保持請求,CPU會首先響應總線保持請求,在中斷子程序執(zhí)

26、行過程中也能響應總線保持,但,此時會將LOCK引腳置為低電平阻止其它部件的總線請求。在此期間通過HOLD或RQ/GT線引入的總線保持請求不被響應。 外設(shè)在第一個中斷響應負脈沖到來時,準備中斷類型碼,在第二個負脈沖到來時,發(fā)出類型碼,CPU接收后,由類型碼獲得中斷向量進而取得中斷子程序入口地址。 ,能夠提供中斷類型碼的接口必須連在低8位數(shù)據(jù)線上。 在中斷響應期間,AD0AD15,BHE/S1,A19/S6A16/S3浮空,M/IO低電平,ALE仍在每個總線周期T1狀態(tài)輸出高電平。 8086系統(tǒng)中在兩個中斷響應總線周期間插入個空閑狀態(tài)(有時也可是2個),在8088系統(tǒng)中不插入空閑狀態(tài)。 非屏蔽中斷

27、不需取得中斷類型碼,軟件中斷通過中斷調(diào)用指令完成,也不需上述響應時序。中斷處理子程序一般有相同的結(jié)構(gòu)模式。 進入中斷子程序后,保護現(xiàn)場,把可能受影響的寄存器的值推入堆棧。 置位IF開放中斷,允許級別較高的中斷請求進入。 中斷處理的具體內(nèi)容,是中斷子程序的主要部分。 恢復現(xiàn)場,彈出被保護的寄存器的值。 中斷返回IRET,彈出標志及斷點值,返回主程序繼續(xù)執(zhí)行。 IRET一般是中斷子程序的最后一條指令,在8086/8088系統(tǒng)中,中斷子程序不同于其它程序可以浮動裝配,它必須是固定裝配的,起始地址由中斷入口地址表給出。 在8086/8088系統(tǒng)中提供了直接調(diào)用中斷處理子程序的軟件手段,這就是中斷指令,

28、通過中斷指令或其它軟件方式使CPU執(zhí)行中斷處理子程序的方法叫。 通過軟件中斷的方法,可以調(diào)用中斷類型碼為0255的任何一個中斷子程序,軟件中斷有如下特點。 用一條指令進入中斷處理子程序,并且中斷類型碼由指令提供,INT n ,其中n為中斷類型碼。 進入中斷時,不需要執(zhí)行中斷響應總線周期,也不從數(shù)據(jù)總線讀取中斷類型碼,其余過程同中斷響應過程。 不受中斷允許標志IF的影響,不論IF是0是1,任何一個中斷均可執(zhí)行。 正在執(zhí)行軟件中斷時,可以響應非屏蔽中斷請求,如果在軟件調(diào)用的中斷子程序中,開放中斷(IF置1)還可以響應外部硬件可屏蔽中斷請求。軟件中斷中也可調(diào)用其它軟件中斷。 軟件中斷沒有隨機性。硬件

29、中斷是由外部設(shè)備發(fā)出中斷請求引起的,它的發(fā)生是不可預料的,具有隨機性,外部設(shè)備何時發(fā)出中斷請求CPU是不知道的,發(fā)生中斷時CPU內(nèi)部進行什么工作也是不確定的,通常主程序和中斷處理子程序之間不會有什么參數(shù)或結(jié)果要傳遞。而軟件中斷則不同,它何時產(chǎn)生完全由CPU決定。軟件中斷總是主程序執(zhí)行到某種條件時產(chǎn)生的,它非常類似子程序調(diào)用,這樣,它可以采用各種向子程序傳遞參數(shù)的方法進行參數(shù)傳遞。一般情況下,通過寄存器傳遞參數(shù)的方法是最常用的。 一般軟件中斷是指一般的通用中斷,實際是對應于中斷類型5255的中斷。 對于這類中斷可以使用 INT n 指令直接調(diào)用。這類指令都是指令,由指令直接提供中斷類型碼。例如要

30、調(diào)用類型碼為55H的中斷子程序,可以使用指令 來完成 。 特殊中斷指對應中斷類型碼為04的中斷,它們是專用中斷,分別對應除數(shù)為0中斷,單步中斷,硬件中斷,斷點中斷,溢出中斷。其中除數(shù)為0中斷、單步中斷不用INT類指令調(diào)用,其它幾種都可以通過中斷指令調(diào)用。 在遇到除數(shù)為0的情況或除法過程中產(chǎn)生溢出時,CPU會自動產(chǎn)生類型為0的中斷,它不是通過中斷指令來調(diào)用的。 CPU進入單步中斷的依據(jù)是標志寄存器中單步標志為1,單步中斷也不通過中斷指令來調(diào)用。 當TF=1時,CPU每執(zhí)行一條指令后會產(chǎn)生一次單步中斷,這個中斷進入過程和其它一般軟件中斷進入過程是完全相同的。進入后,TF標志會自動清除,保證CPU連

31、續(xù)執(zhí)行中斷處理子程序,這個中斷主要供調(diào)試使用,在中斷處理子程序中可以顯示各寄存器內(nèi)容。中斷返回時,由于彈出了標志寄存器的內(nèi)容,所以TF又恢復1,可以繼續(xù)單步執(zhí)行下一條指令,要停止單步執(zhí)行,可以在主程序中清除TF標志或在中斷子程序中改變堆棧中的標志寄存器中的TF位。 如果遇到串操作指令,則在單步狀態(tài)下,而不是在整個串操作指令結(jié)束后產(chǎn)生中斷。 斷點中斷與單步中斷類似,也是用于調(diào)試程序中,斷點中斷可以通過指令 調(diào)用,它是一個指令。 在調(diào)試一個程序時,經(jīng)常需要知道程序執(zhí)行到某處時結(jié)果是否正確。這時就可以在這個位置設(shè)置一個斷點,使CPU運行到斷點位置時暫停執(zhí)行程序,顯示出各寄存器狀態(tài),并轉(zhuǎn)入一個調(diào)試程序

32、,程序員可以通過它了解計算機內(nèi)部的各種情況。 設(shè)置斷點的過程實際上就是在用戶程序的指定點用斷點中斷指令I(lǐng)NT 3 (CCH)來代替用戶程序的原有指令,同時把用戶程序的原有指令妥善保存起來。這樣程序運行到斷點位置時就會執(zhí)行INT 3 產(chǎn)生斷點中斷。 進入中斷處理程序后可以執(zhí)行一些顯示寄存器內(nèi)容等調(diào)試程序。此外,斷點中斷處理程序還負責恢復在設(shè)置斷點時被INT 3所替換掉的那條指令。在中斷返回前還必須修改堆棧中的返回地址,以便中斷返回后能夠執(zhí)行那條曾被替換掉的指令。否則就會少執(zhí)行一條指令,甚至可能把多字節(jié)指令的下一字節(jié)作為另一個指令的首字節(jié),從而造成混亂。 溢出中斷通過中斷指令調(diào)用,INTO指令為一

33、個單字節(jié)指令,它總是跟在帶符號數(shù)的加法或減法運算過程后面。當運算后OF為1則表示發(fā)生溢出錯誤,此時執(zhí)行INTO就會進入類型為4的溢出中斷,當OF為0時,INTO指令也會引起類型4中斷,此時檢測完OF標志后會立即自動返回主程序。 8086系統(tǒng)中可以處理多個可屏蔽中斷,但中斷請求輸入端只有一個,這樣就需要使用外接的中斷控制器對外部多個中斷請求進行管理。8259A就是配合8086/8088工作的中斷控制器。 單片8259A能管理8級中斷,通過多片擴展能構(gòu)成64級主從式中斷系統(tǒng)。 8259A可編程,通過編程可使它工作在不同的方式,使用靈活方便。 NMOS工藝,單5V供電。電源和地,接 +5V電源和系統(tǒng)

34、地。 8位雙向數(shù)據(jù)線,與系統(tǒng)數(shù)據(jù)總線相連,由于要傳輸中斷類型碼,因此必須接在8086系統(tǒng)低8位數(shù)據(jù)總路線上。8259A的讀寫選通信號,與系統(tǒng)控制總線中的RD和WR相連,控制8259A的讀寫操作。 芯片選通信號,通過地址譯碼邏輯電路與系統(tǒng)地址總線相連。用來指出8259A內(nèi)部哪個端口被訪問。8259A內(nèi)部對應兩個端口,它們通過A0來區(qū)分: A0=0對應端口稱為, A0=1對應端口稱為。 在8088系統(tǒng)中,A0直接與地址總線的A0相連,對應8088的兩個相鄰地址;在 8086系統(tǒng)中,8259A與低8位數(shù)據(jù)總線相連,A0必須與地址總線A1相連,對應系統(tǒng)中的兩相鄰偶地址。與CPU的INTR相連,用來向C

35、PU發(fā)中斷請求。 用來接收來自CPU的中斷應答信號,與CPU的INTA引腳相連,在CPU中斷響應過程中,在第二個INTA負脈沖到來時,8259A向數(shù)據(jù)總線發(fā)出中斷類型碼。CPU在第二個負脈沖結(jié)束時,讀取總線上的中斷類型碼。 外部中斷請求輸入端,在單片8259A系統(tǒng)中用于接收其它部件的中斷請求,在多片系統(tǒng)中與各從片的INT相連,接收從片的中斷請求。 從片選通信號,用來指出具體的從片,用于8259A的級聯(lián)方式。 雙向,當8259A工作于緩沖方式時,SP/EN作為輸出,用于控制系統(tǒng)數(shù)據(jù)總線驅(qū)動器,在8259A與CPU進行數(shù)據(jù)傳輸時,啟動驅(qū)動器。當8259A工作于非緩沖方式時,SP/EN作為輸入,如果

36、SP/EN為1,則為主片,否則為從片。 8259A的編程結(jié)構(gòu)可以分為上下兩個部分,上半部分為它的處理部件,下半部分為8259A的控制部分。 在8259A的控制部分中,有7個寄存器,它們都是8位的,這些寄存器都是可編程的,CPU可以對它們的內(nèi)容進行設(shè)置。 這7個寄存器可分為兩組,第一組寄存器為4個,用來容納,分別稱為。第二組寄存器為3個,用來容納,分別稱。初始化命令字一般在計算機啟動時由初始化程序設(shè)置,一旦設(shè)定在系統(tǒng)工作過程中一般不再改變;操作命令字由應用程序設(shè)定,用于對中斷處理過程作動態(tài)控制,在系統(tǒng)運行過程中,操作命令字可多次設(shè)置。 8259A的處理部件由、和組成。用于接收和處理從引腳IR0I

37、R7進入的中斷請求。 中斷請求寄存器用于接收外部中斷請求,它有8位,分別和引腳IR0IR7相對應,當某一引腳上有中斷請求后IRR寄存器中對應位置1,也就是對這一中斷進行了鎖存,鎖存之后邏輯電路根據(jù)中斷屏蔽寄存器中的對應位決定是否讓此請求通過。 如果IMR中對應位為0,則表示此中斷未加屏蔽,可以讓它通過而進入中斷優(yōu)先級裁決器作裁決,如果IMR中對應位為1表明中斷是受屏蔽的,不讓其進入中斷優(yōu)先級裁決器。中斷優(yōu)先級裁決器把新進入的中斷請求和當前正在處理的中斷進行比較。當前正在處理的中斷存放在當前中斷服務寄存器中,如果確認新進入的中斷請求具有足夠高的優(yōu)先級,中斷裁決器會通過相應的邏輯電路使8259A的

38、輸出為1,從而向CPU發(fā)出中斷請求。 CPU接收到中斷請求后,如果允許中斷就會執(zhí)行中斷響應過程,從INTA引腳向8259A回送兩個負脈沖作為響應信號。在到來時,8259A完成以下3個動作: 使IRR鎖存功能失效,從而對IR0IR7線上的中斷請求不予理采,直到第二個負脈沖到達時恢復IRR鎖存功能,防止在中斷響應期間進入新的中斷。 使當前中斷服務寄存器中相應位置位,為中斷優(yōu)先級裁決器以后的工作提供判斷依據(jù)。 清除IRR中的相應位(剛才設(shè)置的位)在到來時,8259A完成以下動作: 將存放在中斷類型寄存器ICW2中的中斷類型碼送到數(shù)據(jù)總線D7D0供CPU讀取。 如果8259A工作在中斷自動結(jié)束方式,在

39、第二個INTA負脈沖結(jié)束時,會將在第一個負脈沖到來時設(shè)置的當前中斷服務寄存器ISR中的相應位清0,表示中斷已結(jié)束。 按照優(yōu)先級設(shè)置方法來分有以下幾種工作方式 8259A最常用的工作方式,對8259A初始化后沒有設(shè)置其它優(yōu)先級方式,8259A默認按全嵌套方式工作。 當一個中斷被響應時,中斷類型碼被放到數(shù)據(jù)總線上,當前中斷服務寄存器ISR中的對應位ISn置1,然后進入中斷服務程序。一般情況下(除中斷自動結(jié)束方式外)在CPU向8259A發(fā)出中斷結(jié)束命令(EOI)前,此位一直保持1,為中斷優(yōu)先級裁決提供依據(jù)。 中斷優(yōu)先級裁決器總是將新收到的中斷請求和當前中斷服務寄存器中的IS位進行比較,判斷新收到的中

40、斷請求的優(yōu)先級是否比當前正在處理的中斷優(yōu)先級高,如果高則實行中斷嵌套,如果新收到的中斷請求和當前處理的中斷相同或更低,在全嵌套方式下不會響應。 特殊全嵌套方式和全嵌套方式只有一點不同,就是在特殊全嵌套方式下當處理某一中斷時,如果有同級中斷請求也會響應,而在全嵌套方式中,只有更高級的中斷請求來到時才會進行嵌套,而同級中斷到來時不會給予響應。 特殊全嵌套方式一般用在8259A級聯(lián)系統(tǒng)中,在這樣的系統(tǒng)中各從片的中斷請求輸出端INT與主片的中斷輸入端IRn相連。這樣由某一從片引入的各路中斷對于主片來說是同級中斷,在這種情況下對主片編程時讓它工作在特殊全嵌套方式,但從片采用全嵌套方式。這樣當來自某一從片

41、的中斷請求正在處理時,一方面和普通全嵌套方式一樣,對來自優(yōu)先級較高的主片其它引腳上的中斷請求是開放的,另一方面對來自同一從片的較高的優(yōu)先級中斷請求也會開放,優(yōu)先級由從片內(nèi)部的優(yōu)先級裁決電路裁決。 可見,在8259A級連系統(tǒng)中,在主片看來一個從片作為一級,盡管從片內(nèi)部可以判斷連在從片上各中斷請求的優(yōu)先級,但是要真正讓從片內(nèi)部的優(yōu)先級得到系統(tǒng)的確認則必須讓主片工作在特殊全嵌套方式。 優(yōu)先級自動循環(huán)方式一般用在系統(tǒng)中多個中斷源的場合,在這種方式下,優(yōu)先級隊列是在變化的,一個設(shè)備接受中斷服務后其優(yōu)先級自動降為最低。 在優(yōu)先級自動循環(huán)方式中,初始優(yōu)先級為IR0,IR1, IR7,如果IR4有中斷請求則處

42、理IR4,處理完IR4后,IR5成為最高優(yōu)先級,然后依次為IR6,IR7,IR0 IR4。 優(yōu)先級特殊循環(huán)方式和優(yōu)先級自動循環(huán)方式相比,只有一點不同,就是在優(yōu)先級特殊循環(huán)方式中,從而最高優(yōu)先級也同時確定。比如設(shè)置IR5為最低優(yōu)先級,那么IR6為最高優(yōu)先級,而在優(yōu)先級自動循環(huán)方式中初始最高優(yōu)先級為IR0。 按照對中斷源的屏蔽方式來分,8259A有以下幾種工作方式: 在普通屏蔽方式中,8259A的每個中斷請求輸入都可以通過對應屏蔽位的設(shè)置被屏蔽,從而使這個請求不能從8259A送到CPU。 8259A內(nèi)部有一個屏蔽寄存器,它的每一位對應一個中斷請求輸入,程序設(shè)計時可以通過設(shè)置操作命令字OCW1使屏蔽

43、寄存器中任一位置1或清0。當某一位為1時,對應的中斷就會受到屏蔽;清0時,對應的中斷就被開放。 在有些場合,希望一個中斷服務程序能夠動態(tài)改變系統(tǒng)優(yōu)先級結(jié)構(gòu),這時就可以通過中斷屏蔽寄存器來根據(jù)要求屏蔽較高級中斷或開較低級中斷。但僅改變中斷屏蔽寄存器的狀態(tài)是不夠的,即使開放了較低級中斷,這個中斷能否被響應還取決于當前中斷服務寄存器中ISn位,只要對應ISn不被清除,低級中斷仍不能被響應。特殊屏蔽方式就提供了解決這一問題的方法。 設(shè)置了特殊屏蔽方式后,。這樣就不只屏蔽了當前正在處理的中斷,而且真正開放了其它級別較低的中斷。 在8259A的應用中,不管用哪種優(yōu)先級方式工作,中斷結(jié)束處理都是必要的也是必

44、須的。當一個中斷請求得到響應時,8259A都會在當前中斷服務寄存器中設(shè)置相應位ISn,為此后中斷裁決器的工作提供了依據(jù)。當中斷處理結(jié)束時必須使ISn位清0,否則其后的中斷有可能不能得到正確響應,使得8259A的中斷控制功能不正常,這個。 這種方式只能用在系統(tǒng)中只有一片8259A且多個中斷不會嵌套的情況。 在中斷自動結(jié)束方式中,。這樣盡管系統(tǒng)正在為某個設(shè)備進行中斷服務,但對8259A來說,當前中斷服務寄存器中卻沒有對應位作指示,它可以接受同級或更低級中斷請求。這是最簡單的中斷結(jié)束方式,在這種方式下對ISn的清除是發(fā)生在第二個中斷響應脈沖INTA送到8259A后。 這種方式主要是為了防止沒有經(jīng)驗的

45、程序員忘記在中斷服務程序中給出中斷結(jié)束命令而設(shè)立的。 這種方式一般用在全嵌套方式下,通過中斷結(jié)束命令字結(jié)束中斷。 在這種方式下,當CPU用輸出指令向8259A發(fā)出一般中斷結(jié)束命令時,8259A會。在全嵌套方式中,最高級非零IS位對應了最后一次被響應和被處理的中斷,也就是當前正在處理的中斷,所以最高級非零IS位的復位對8259A來說相當于結(jié)束了當前正在處理的中斷。 在非全嵌套方式下,無法通過當前中斷服務寄存器確定哪一級中斷為最后響應和處理的中斷,也就是說,無法確定當前正在處理的是哪級中斷。這時就要采用特殊中斷結(jié)束方式,由CPU來確定究竟結(jié)束哪一中斷。 采用特殊中斷結(jié)束方式反映在程序中就是向825

46、9A發(fā)一條特殊中斷結(jié)束命令,這個。 在有關(guān)中斷結(jié)束方式的問題中還要說明一點,在級聯(lián)方式下,一般不用中斷自動結(jié)束方式,而用非自動結(jié)束方式,即一般中斷結(jié)束方式或特殊中斷結(jié)束方式,不管用哪種方式, 按照8259A和系統(tǒng)總線的連接來分,有下列兩種方式。 在8259A的應用系統(tǒng)中,如果8259A通過總線驅(qū)動器和數(shù)據(jù)總線相連,這就是緩沖方式。 在緩沖方式下,有一個對總線驅(qū)動器的啟動問題,為此將8259A的SP/EN端和總線驅(qū)動器允許端相連。因為在緩沖方式下會在8259A輸出狀態(tài)字或中斷類型碼的同時,在SP/EN端發(fā)出低電平,此低電平可作為總線驅(qū)動器的啟動信號開啟總線驅(qū)動器。 在規(guī)模較小的系統(tǒng)中可以不使用總

47、線驅(qū)動器,此時8259A直接與CPU總線相連,8259A可以工作在非緩沖方式下,此時SP/EN引腳作為輸入端,當系統(tǒng)中只有一片8259A時,SP/EN必須接高電平,當系統(tǒng)中有多片8259A時,主片的SP/EN接高電平,從片的SP/EN接低電平。 按照中斷請求的引入方法來分,8259A有如下工作方式。 在此方式下,8259A將中斷請求輸入端出現(xiàn)的作為中斷請求信號,中斷請求輸入端出現(xiàn)上升沿觸發(fā)信號以后,可以一直保持高電平。 在這種方式下,8259A把中斷請求輸入端出現(xiàn)的作為中斷請求信號,在電平觸發(fā)方式下,要注意的一點是當中斷輸入端出現(xiàn)一個中斷并得到響應后,輸入端必須及時撤消高電平,如果在CPU進入

48、中斷處理過程并開放中斷前未去掉高電平信號,則可能引起不應有的第二次中斷。外部設(shè)備仍然通過往8259A發(fā)中斷請求信號要求CPU服務,但8259A不使用INT信號向CPU發(fā)中斷請求信號。8259A輸入端的中斷請求信號可以是上升沿也可以是高電平,取決于前面介紹的兩種工作方式。 CPU內(nèi)部的中斷觸發(fā)器IF復位,禁止了對CPU的中斷請求。 CPU要用來確認中斷源,從而實現(xiàn)對設(shè)備的服務。 中斷查詢方式既有中斷的特點,又有查詢的特點。從外設(shè)來看,仍然是靠中斷方式來請求服務,并且可以使用邊沿觸發(fā)或電平觸發(fā)。而對CPU來講是靠查詢方式來確定是否有設(shè)備要求服務,同時靠查詢來確定為哪個設(shè)備服務。 在查詢方式中,CP

49、U向8259A發(fā)出查詢命令字,然后從8259A中讀出查詢字,從而確定為哪個外部設(shè)備服務,具體操作將在命令字一節(jié)中介紹。 采用查詢方式可以引入無數(shù)個服務請求,而中斷方式一般不超過64個(兩級)。初始化命令字通常是在系統(tǒng)開機時由初始化程序?qū)懭耄谙到y(tǒng)工作過程中一般保持不變。初始化命令字有嚴格的寫入規(guī)則和格式。 ,必須寫入偶地址端口(A00)中。 在8086/8088系統(tǒng)中不起作用,可設(shè)為1或0,不會對8259A在8086/8088系統(tǒng)中的應用產(chǎn)生影響。 固定為1 1,用于區(qū)分寫入偶端口的是ICW1還是OCW2,OCW3,所以D4是ICW4的標識位,D41時作為指示ICW1的標志。 LTIM用于設(shè)定

50、中斷請求信號的形式。 LTIM0 表示中斷請求為觸發(fā)方式。 LTIM1 表示中斷請求為觸發(fā)方式。 ADI,在8086/8088系統(tǒng)中不起作用。 SNGL 用來指出本片8259A是否與其它8259A處于級聯(lián)狀態(tài),當系統(tǒng)中只有一片8259A時D1為1,當系統(tǒng)中有多片8259A工作于聯(lián)級方式,D1應設(shè)為0。 IC4 此位用來指出后面是否設(shè)置ICW4,如果需要設(shè)置ICW4應將IC4置1。由于ICW4中D0位用于確定應用系統(tǒng)為8086/8088,所以在8086/8088系統(tǒng)中ICW4需設(shè)置,IC4應為1。 ,必須寫到8259A的奇地址端口(A01) 實際上,中斷類型碼的具體值不但和ICW2有關(guān),也與引入

51、中斷的引腳IR0IR7有關(guān), ICW2一旦確定,8259A 8個中斷請求輸入引腳IR0IR7對應8個中斷類型碼也隨之確定。 ICW2低3位并不影響中斷類型碼的具體數(shù)值,中斷類型碼的低3位由引入中斷請求的引腳IR0IR7決定。 如果ICW2設(shè)為40H則8個中斷類型碼為40H47H,如果ICW2為45H,8個中斷類型碼仍為40H47H。 ,必須寫到8259A的奇地址端口中(A01),只有8259A工作于多片級聯(lián)方式時才需設(shè)置ICW3,而8259A的單片或多片級聯(lián)工作方式取決于ICW1的SNGL位,在SNGL1時不需設(shè)ICW3。ICW3的格式對于主片和從片是不同的。 對應IR0IR7各引腳的連接情況

52、,如果某一引腳上連有從片則對應位為1,未連從片則對應位為0,這就使得8259A主片在使用某些引腳連接從片的同時,可以使用其它輸入引腳直接接受外部設(shè)備的中斷請求。 對從片是無關(guān)位,一般置0。 的值必須與從片INT輸出端與主片IRn輸入端的連接關(guān)系一致,如果從片與主片IR5相連,則這3位的編碼值應為5即101。在級聯(lián)系統(tǒng)中,除各從片的INT輸出端與主片IRn輸入端相連外,主片的CAS0CAS2應與各從片CAS0CAS2互相連在一起。主片CAS0CAS2為輸出,各從片CAS0CAS2為輸入。主片與各從片的INTA輸入端應都與CPU的INTA信號輸出端相連。這樣,在CPU發(fā)出第一個中斷響應負脈沖時,主

53、片除完成前面所介紹的三個例行動作外,還會從CAS0CAS2發(fā)出一個編碼信號,此編碼值指出了發(fā)出中斷請求的從片,從片接收到編碼后與自身ICW3中的D2D0比較,若相等這個從片則在第二個INTA負脈沖到來時將自己的中斷類型碼送到數(shù)據(jù)總線。,也要求寫入奇地址端口(A01),。 總要求置0 SFNM,如為1,則為特殊全嵌套方式,一般在使用多片8259A的系統(tǒng)中采用特殊全嵌套方式。 BUF,如為1,則為緩沖方式。 M/S,此位在緩沖方式下用來表示本片為主片還是從片。 當BUF1時,M/S1則表示本片為主片, M/S0則表示本片為從片。 AEOI,如果AEOI為1,則設(shè)置中斷自動結(jié)束方式。在此方式下,第二

54、個中斷響應負脈沖結(jié)束時,自動清除當前中斷服務寄存器ISR中相應位,從而允許其它任何級別中斷進入。 PM,用于確定應用系統(tǒng)CPU類型,如果PM為1則表示8259A當前所在系統(tǒng)為8086/8088,如果為0則表示系統(tǒng)為8080/8085。 初始化命令字對端口地址的規(guī)定,ICW1必須寫入偶地址端口,ICW2ICW4必須寫入奇地址端口。 ICW1ICW4設(shè)置次序是固定的,不可顛倒。 ICW1和ICW2對任何系統(tǒng)必須設(shè)置,只有在級聯(lián)方式下才需設(shè)ICW3(對主片、從片都要設(shè)),只有在8086/8088系統(tǒng)或特殊全嵌套方式、緩沖模式、中斷自動結(jié)束方式這些情況下才需設(shè)置ICW4,是否設(shè)置ICW3、ICW4在I

55、CW1中的指定位(SNGL,IC4)中作出了說明。 在8088系統(tǒng)中擴展一片8259A,端口地址為80H、81H,中斷請求邊沿觸發(fā)方式,采用全嵌套方式,系統(tǒng)中使用非緩沖方式連接,中斷類型碼為18H1FH。ICW1 采用邊沿觸發(fā)方式,單片方式工作,需要設(shè)置ICW4。0001 0011BICW2 中斷類型碼,高5位00011B,低3位決定于引入中斷的引腳。 0001 1000BICW3 不需設(shè)置ICW4 不用特殊全嵌套方式,非緩沖方式,8086/8088系統(tǒng)。 0000 0001B 8259A有3個操作命令字OCW1OCW3,對操作命令字的設(shè)置沒有順序要求,但對端口地址有嚴格要求,。 ,寫入奇地址

56、端口(A01) M0M7分別與中斷請求輸入端IR0IR7對應,若某位為1,對應于這一位的中斷請求被,若為0表示對應中斷得到。 OCW106H,則IR2,IR1引腳上中斷請求被屏蔽,其它引腳上的中斷請求被開放。 用來設(shè)置優(yōu)先級循環(huán)方式和中斷結(jié)束方式,寫入偶地址端口(A00) R1。采用優(yōu)先級循環(huán)方式,0為非循環(huán)方式。 EOI為中斷結(jié)束命令位,當EOI為1時,使當前中斷服務寄存器中對應ISn位清0。在一般中斷結(jié)束方式下清除當前最高級中斷對應ISn位,在特殊中斷結(jié)束方式下清除由L2L0指出的特定ISn位。SL 決定L2L0 是否有效,SL1有效,SL0無效。 L2L0 ,有兩種作用,當OCW2給出特

57、殊中斷結(jié)束命令時,L2L0指出要清除當前中斷服務寄存器中哪一個位,當OCW2給出特殊優(yōu)先級循環(huán)方式命令字時,L2L0指出起始最低優(yōu)先級。EOI1 R0 SL0,用于全嵌套方式下結(jié)束當前中斷,這個命令使當前中斷服務寄存器中優(yōu)先級最高的ISn位清除(常用,20H)。EOI1 R0 SL1,L2L0設(shè)置一定的值,清除ISR中由L2L0編碼指出的位,用于非全嵌套方式下。一般中斷結(jié)束命令字是最常用的,對于R1的情況,主要用于設(shè)置優(yōu)先級循環(huán)方式。 它有三方面功能,設(shè)置和撤消特殊屏蔽方式、設(shè)置中斷查詢方式、設(shè)置對8259A內(nèi)部寄存器的讀寫命令,寫入偶地址(A00)。 ESMM 特殊屏蔽模式允許位。 SMM

58、特殊屏蔽模式位。 ESMM1 SMM1 時設(shè)置為特殊屏蔽模式 ESMM1 SMM0 時取消特殊屏蔽模式 特殊屏蔽方式下,在設(shè)置屏蔽位時會同時清除ISR中的相應位。 P 查詢方式位,P1時構(gòu)成對8259A的中斷查詢命令。在查詢方式下,CPU不靠8259A的中斷請求信號INT申請中斷,而是靠讀取中斷查詢字獲得外設(shè)中斷請求信息。 RR 用于對寄存器的查詢。 RIS 用于指定查詢的寄存器。查詢命令是通過使OCW3的來構(gòu)成的,CPU發(fā)出查詢命令后再執(zhí)行一條輸入指令就可以從中讀出中斷查詢字,并將當前中斷服務寄存器ISR中相應位置1,這個查詢字的低3位編碼指出了當前級別最高的中斷請求。A00 I1,有中斷請

59、求,0無中斷請求 W2W0 編碼指出當前級別最高的中斷請求。使用中斷查詢方式可以在系統(tǒng)中擴展更多的8259A,使中斷輸入超過64級。通過查詢等待外部設(shè)備的服務請求(8259端口號:60H,61H)RIS0 構(gòu)成讀IRR命令RIS1 構(gòu)成讀ISR命令 讀命令送出后,可以從8259A讀取相應寄存器的值。 在8088非緩沖系統(tǒng)中擴展一片8259A,采用全嵌套方式工作,中斷請求為邊沿觸發(fā)方式。中斷類型碼 50H57H,只開放IR0和IR7。8259A端口地址80H,81H。 INTAINTRD0-D7A1-A7A0M/IORDWR+5VIR0IR7INTAINTD0-D7CSA0RDWRSP/EN地址

60、地址譯碼器譯碼器 1ADIIC4T7T6T5T4T3 IR7IR6IR5IR4IR3IR2IR1IR000000ID2ID1ID0000SFNMBUFM/SAEOIuPMM7M6M5M4M3M2M1M0RSLEOI00L2L1L00SMM01PRRRIS 在微型計算機系統(tǒng)中經(jīng)常要用到周期性的或非周期性的定時信號。定時信號可以用軟件和硬件兩種方法獲得。 用軟件方法定時,一般是根據(jù)所需時間常數(shù)來設(shè)計一個延遲子程序。延遲子程序需要作精密的計算和精確地測試,并且難以獲得很高的精度,一般用于對延遲精度要求低的場合。另外在延遲期間CPU一直被占用,降低了CPU的效率。 用硬件方法定時,要使用到定時器/計數(shù)

溫馨提示

  • 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

提交評論