微機原理及應(yīng)用 課件 第7章 中斷系統(tǒng)_第1頁
微機原理及應(yīng)用 課件 第7章 中斷系統(tǒng)_第2頁
微機原理及應(yīng)用 課件 第7章 中斷系統(tǒng)_第3頁
微機原理及應(yīng)用 課件 第7章 中斷系統(tǒng)_第4頁
微機原理及應(yīng)用 課件 第7章 中斷系統(tǒng)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理及應(yīng)用第7章中斷系統(tǒng)學(xué)習(xí)目標(biāo):掌握中斷技術(shù)的基本概念了解8086中斷系統(tǒng)及其對各種類型中斷的響應(yīng)流程了解8259A中涉及到的有關(guān)概念掌握8259A的編程應(yīng)用7.1中斷的基本概念返回7.1.1中斷、中斷源及中斷系統(tǒng)7.1.2中斷處理過程7.1.3中斷嵌套7.1.1

中斷、中斷源及中斷系統(tǒng)1.中斷CPU暫時停止正在運行的程序,轉(zhuǎn)去執(zhí)行請求CPU為之服務(wù)的內(nèi)/外部事件的服務(wù)程序,待該服務(wù)程序執(zhí)行完后,又返回到被暫停的程序繼續(xù)運行的過程,稱為中斷。簡言之,就是CPU正常運行程序時被“中間打斷”后繼續(xù)運行的過程。正在運行的程序通常稱為主程序,服務(wù)程序稱為中斷服務(wù)程序。7.1.1

中斷、中斷源及中斷系統(tǒng)1.中斷

CPU執(zhí)行程序時,

由于發(fā)生了某種隨機

的事件(外部或內(nèi)部)

,

引起CPU暫時中斷正在運行的程序,

轉(zhuǎn)去執(zhí)行一段特殊的服務(wù)

程序,

以處理該事件,

該事件處理完后又返回被中斷的程序

繼續(xù)執(zhí)行,

這一過程稱為中斷。。7.1.1

中斷、中斷源及中斷系統(tǒng)2.中斷源引起中斷的事件稱為“中斷源”。中斷源主要有以下幾類。(1)外部設(shè)備請求中斷。一般外部設(shè)備有鍵盤、磁盤驅(qū)動器、打印機等,工作告一段落發(fā)出中斷請求,要求CPU為它服務(wù)。(2)實時時鐘請求中斷。例如,定時/計數(shù)器,先由CPU發(fā)出指令,讓時鐘電路開始計數(shù)工作,待規(guī)定的時間到,時鐘電路發(fā)出中斷申請,CPU轉(zhuǎn)向中斷服務(wù)程序。(3)故障請求中斷。當(dāng)出現(xiàn)電源掉電、存儲出錯或溢出等故障時,發(fā)出中斷請求,CPU轉(zhuǎn)向執(zhí)行故障處理程序,如啟動備用電源報警等。(4)由軟件引起的,如程序錯、運算錯、為調(diào)試程序而特意設(shè)置的斷點等。3.中斷系統(tǒng)中斷系統(tǒng)是指實現(xiàn)中斷功能的軟硬件的統(tǒng)稱。為了滿足各種情況下的中斷請求,中斷系統(tǒng)應(yīng)具有以下功能。(1)能實現(xiàn)中斷響應(yīng)、中斷服務(wù)及中斷返回。當(dāng)某一中斷源發(fā)出中斷請求時,CPU能決定是否響應(yīng)這一中斷請求,若允許這一中斷請求,則CPU在保護斷點后將轉(zhuǎn)移到響應(yīng)的中斷服務(wù)程序中,中斷處理完后CPU返回原斷點處繼續(xù)執(zhí)行原程序。(2)能實現(xiàn)中斷優(yōu)先權(quán)排隊。當(dāng)有兩個或多個中斷源同時提出中斷請求時,中斷系統(tǒng)能根據(jù)各中斷源的性質(zhì)給出處理的先后順序,確保優(yōu)先級高的中斷請求先處理。(3)能實現(xiàn)中斷嵌套。若在中斷過程中又有新的優(yōu)先級較高的中斷源提出請求,則中斷系統(tǒng)要能讓CPU暫停執(zhí)行當(dāng)前中斷服務(wù)程序,而轉(zhuǎn)去處理優(yōu)先級高的中斷請求,處理完后再返回原級別較低的中斷服務(wù)程序中。7.1.2

中斷處理過程盡管不同微型計算機的中斷系統(tǒng)有所不同,但實現(xiàn)中斷過程基本相同。一個完整的中斷處理過程包括

中斷請求中斷排隊中斷響應(yīng)中斷處理中斷返回

圖7-1中斷處理過程流程圖圖7-2兩級中斷嵌套的示意圖7.1.3

中斷嵌套7.280x86中斷系統(tǒng)返回7.2.1外部中斷7.2.2內(nèi)部中斷7.2.3中斷向量和中斷向量表7.2.480x86中斷響應(yīng)過程80x86微機具有一個簡單而靈活的中斷系統(tǒng),可處理256種不同的中斷請求。這些中斷可分為外部中斷(硬件中斷)和內(nèi)部中斷(軟件中斷)。每一種又包括許多類型。各種類型的中斷被分配一個中斷類型號。80x86中斷源如圖7-3所示。7.280x86中斷系統(tǒng)7.2.1

外部中斷

由CPU外部硬件電路發(fā)出的電信號引起的中斷稱為外部中斷(亦稱硬件中斷),外部中斷又分為非屏蔽中斷和可屏蔽中斷。1.非屏蔽中斷NMI非屏蔽中斷NMI信號連到CPU的NMI引腳,其不受CPU中斷允許標(biāo)志位IF的控制,一旦發(fā)生,立即轉(zhuǎn)至中斷類型號為2的中斷處理服務(wù)程序。NMI 的優(yōu)先級高于INTR。當(dāng)CPU采樣到有NMI請求時,在內(nèi)部將其鎖存,并自動提供中斷類型號2,然后按照下列順序處理。7.2.1

外部中斷(1)將中斷類型號乘以4,得到中斷向量地址0008H;(2)將標(biāo)志寄存器中的內(nèi)容壓入堆棧保護;(3)清除IF和TF標(biāo)志,屏蔽INTR中斷和單步中斷;(4)保存斷點,即把斷點處的IP和CS內(nèi)容壓棧;(5)從中斷向量表中取中斷服務(wù)程序的入口地址,分別送至CS和IP;(6)轉(zhuǎn)入相應(yīng)中斷服務(wù)程序并執(zhí)行;(7)恢復(fù)斷點及標(biāo)志寄存器中的內(nèi)容,中斷返回。7.2.1

外部中斷

2.可屏蔽中斷INTR

可屏蔽中斷INTR信號連接到CPU的INTR引腳,它受CPU中斷允許標(biāo)志位IF的控制,即當(dāng)IF=1時,CPU才能響應(yīng)INTR引腳上的中斷請求。當(dāng)可屏蔽中斷被響應(yīng)時,CPU需要執(zhí)行7個總線周期。(1)執(zhí)行第一個總線周期,通知外部中斷系統(tǒng)做準(zhǔn)備。(2)執(zhí)行第二個總線周期,從外部中斷系統(tǒng)獲取中斷類型號,并乘以4,形成中斷向量地址。(3)執(zhí)行一個總線寫周期,將標(biāo)志寄存器內(nèi)容壓棧,且使IF和TF都為0。(4)執(zhí)行一個總線寫周期,將CS內(nèi)容壓棧。(5)執(zhí)行一個總線寫周期,把當(dāng)前的IP內(nèi)容壓棧。(6)執(zhí)行一個總線讀周期,從中斷向量表中讀取中斷服務(wù)程序的偏移地址并送入IP。(7)執(zhí)行一個總線讀周期,從中斷向量表中讀取中斷服務(wù)程序的段地址并送入CS。7.2.2

內(nèi)部中斷

由CPU執(zhí)行某些指令所引起的中斷稱為內(nèi)部中斷(亦稱軟件中斷)。內(nèi)部中斷響應(yīng)后不需要總線周期,處理過程與NMI過程基本相同。內(nèi)部中斷包括如下幾類。(1)專用中斷。

①0型中斷——除法出錯中斷。

②1型中斷——單步中斷。

③3型中斷——斷點中斷(INT指令)。

④4型中斷——溢出中斷(INTO指令)。(2)指令中斷——INTn指令,其類型號就是指定的n。它和INT與INTO一樣,都是引起CPU中斷響應(yīng)的指令中斷,所不同的是,INT和INTO是單字節(jié)指令,而INTn是兩字節(jié)指令,第二個字節(jié)是類型號n。INTn主要是用于系統(tǒng)定義或用戶自定義的軟件中斷。7.2.3

中斷向量和中斷向量表

中斷向量是指中斷服務(wù)程序的入口地址,它包括中斷服務(wù)程序的段基址CS和偏移地址IP(共占4個字節(jié)地址)。因此,通過使用中斷向量,可以找到中斷服務(wù)程序的入口地址,實現(xiàn)程序轉(zhuǎn)移。中斷向量表是存放中斷服務(wù)程序入口地址的表格,它存放于系統(tǒng)內(nèi)存的最低端,共1KB,每4個字節(jié)存放一個中斷服務(wù)程序的入口地址,較高地址的兩個字節(jié)存放中斷服務(wù)程序入口的段地址,較低地址的兩個字節(jié)存放中斷服務(wù)程序入口的偏移地址,這4個單元的最低地址稱為中斷向量地址,其值為中斷類型號乘4。80x86系統(tǒng)各服務(wù)程序的段基址CS和偏移地址IP在中斷向量表中按中斷號順序存放,見表7-2。

(1)直接寫入。

MOVDS,0000HMOVSI,中斷類型號乘4MOVAX,中斷服務(wù)程序偏移地址MOV[SI],AXMOVAX,中斷服務(wù)程序段地址MOV[SI+2],AX

(2)利用DOS功能調(diào)用。設(shè)置中斷向量(DOS功能調(diào)用INT21H)。功能號:AH=25H。入口參數(shù):AL=中斷類型號;DS:DX=中斷向量(段地址:偏移地址)。獲取中斷向量(DOS功能調(diào)用INT21H)。功能號:AH=35H。入口參數(shù):AL=中斷類型號。出口參數(shù):ES:BX=中斷向量(段地址:偏移地址)。表7-2中斷向量表7.2.4

80x86中斷響應(yīng)過程

80x86CPU對各種中斷的響應(yīng)過程是不同的,主要區(qū)別在于如何獲得相應(yīng)的中斷類型號。

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

CPU在執(zhí)行內(nèi)部中斷時沒有中斷響應(yīng)周期。對于除法溢出、單步、斷點和溢出中斷,中斷類型號是自動形成的,而對于INTn指令,其中斷類型號由INTn指令中給定的n決定,獲得中斷類型號以后的處理過程順序如下。(1)將類型號乘4,計算出中斷向量的地址。(2)CPU的標(biāo)志寄存器入棧,以保護各個標(biāo)志位,此操作類似于PUSHF指令。(3)清除IF和TF標(biāo)志,屏蔽新的INTR中斷和單步中斷。(4)保存斷點,即把斷點處的IP和CS值壓入堆棧,先壓入CS值,再壓入IP值。(5)根據(jù)第一步計算出來的地址從中斷向量表中取出中斷服務(wù)程序的入口地址(段地址和偏移地址),分別送至CS和IP中。(6)轉(zhuǎn)入中斷服務(wù)程序執(zhí)行。7.2.4

80x86中斷響應(yīng)過程

2.外部中斷響應(yīng)過程(1)非屏蔽中斷響應(yīng)。NMI中斷不受IF標(biāo)志位的影響,也不用外部接口給出中斷類型號,CPU響應(yīng)NMI中斷時也沒有中斷響應(yīng)周期。CPU會自動按中斷類型號2來計算中斷向量的地址,其后的中斷處理過程和內(nèi)部中斷一樣。(2)可屏蔽中斷響應(yīng)。當(dāng)INTR信號有效時,如果中斷允許標(biāo)志位IF=1,則CPU在當(dāng)前指令執(zhí)行完畢后產(chǎn)生兩個連續(xù)的中斷響應(yīng)總線周期。在第一個中斷響應(yīng)總線周期,CPU將地址/數(shù)據(jù)總線置高阻,發(fā)出第一個中斷響應(yīng)信號給8259A中斷控制器,表示CPU響應(yīng)此中斷請求,禁止來自其他總線控制器的總線請求。在最大模式時,CPU還要啟動信號,通知總線仲裁器8289,使系統(tǒng)中其他處理器不能訪問總線。在第二個中斷響應(yīng)總線周期,CPU送出第二個信號,該信號通知8259A中斷控制器將相應(yīng)中斷請求的中斷類型號放到數(shù)據(jù)總線上供CPU讀取。CPU讀取中斷類型號n后的中斷處理過程也和內(nèi)部中斷一樣。圖7-480x86中斷處理流程7.3可編程中斷控制器Intel8259A返回7.3.18259A的功能7.3.28259A的內(nèi)部結(jié)構(gòu)和引腳功能7.3.3Intel8259A的引腳及功能7.3.48259A的工作方式7.3.58259A的級聯(lián)7.3.68259A的編程7.3.78259A在微機系統(tǒng)中的應(yīng)用7.3.1

8259A的功能

Intel8259A可編程控制器用于管理外部可屏蔽的中斷請求。因為CPU芯片的外部請求引腳INTR只有一根,但外部的中斷源可以有多個,如時鐘、鍵盤串口/并口和軟盤等多個中斷源,所以PC系列機中,用Intel8259A來協(xié)助CPU管理外部中斷源。一片8259A管理8級中斷源。在PC-AT機中用兩片8259A級聯(lián)管理15級中斷源。若用9片8259A級聯(lián)不用附加外部電路就能管理64級中斷源。

Intel8259A是一種可編程的、具有強大中斷管理功能的大規(guī)模集成電路芯片,其主要功能如下。(1)具有8級優(yōu)先權(quán)控制,通過級聯(lián)可以擴展到64級。(2)每一級均可通過編程實現(xiàn)屏蔽或開放。(3)能向CPU提供相應(yīng)的中斷類型號。(4)可通過編程選擇不同的工作方式。7.3.2

8259A的內(nèi)部結(jié)構(gòu)和引腳功能

8259A主要由以下幾部分組成:中斷請求寄存器IRR、中斷屏蔽寄存器IMR、中斷服務(wù)寄存器ISR、優(yōu)先權(quán)裁決器、控制邏輯、數(shù)據(jù)總線緩沖器、讀/寫邏輯、級聯(lián)緩沖器/比較器。其結(jié)構(gòu)如圖7-5所示,各部分功能如下。7.3.2

8259A的內(nèi)部結(jié)構(gòu)和引腳功能

(1)中斷請求寄存器(IRR)。IRR是一個8位的鎖存器,用來寄存外部設(shè)備送來的IR0~IR7中斷請求信號。IR0~IR7可以連接8個外設(shè)的中斷請求信號,當(dāng)IR0~IR7中的任何一個變?yōu)楦唠娖綍r,IRR的相應(yīng)位置為“1”。(2)中斷服務(wù)寄存器(ISR)。ISR是一個8位的寄存器,用來存放當(dāng)前正在服務(wù)的中斷級。響應(yīng)中斷后,8259A收到第一個中斷響應(yīng)信號時,使當(dāng)前被響應(yīng)的中斷請求所對應(yīng)的ISR置“1”,而相應(yīng)的IRR復(fù)位。在中斷嵌套時,ISR中有多個位為“1”。(3)中斷屏蔽寄存器(IMR)。IMR是一個8位的寄存器,用于寄存要屏蔽的中斷。某位為“1”,表示屏蔽相應(yīng)中斷請求;為“0”,則表示開放相應(yīng)中斷請求。7.3.2

8259A的內(nèi)部結(jié)構(gòu)和引腳功能

(4)優(yōu)先權(quán)裁決器(PR)。PR用來識別和管理各中斷請求信號的優(yōu)先級別。(5)數(shù)據(jù)總線緩沖器。它是用于連接系統(tǒng)的數(shù)據(jù)總線,是一個8位的雙向三態(tài)緩沖器,傳輸寫入8259A的控制字,讀取8259A的狀態(tài)信息及CPU讀取的中斷類型號。(6)讀/寫邏輯。用來接收端口地址信息和CPU的讀寫控制信號和,產(chǎn)生相應(yīng)的控制信號,控制命令字的寫入和狀態(tài)字的讀取。(7)控制邏輯。根據(jù)編程設(shè)定的工作方式管理的8259A負(fù)責(zé)向CPU發(fā)中斷請求信號INT和接收來自CPU的中斷響應(yīng)信號,并將信號轉(zhuǎn)換成內(nèi)部所需的各種控制信號。(8)級聯(lián)緩沖器/比較器。用于控制多片8259A的級聯(lián),使得系統(tǒng)的中斷級可以擴展。最多可用9片級聯(lián),一片為主片,其他為從片。7.3.3

Intel8259A的引腳及功能

8259A是一種具有28引腳雙列直插式封裝的大規(guī)模集成電路專用芯片,其引腳信號如圖7-5所示。(1)D0~D7。雙向三態(tài)數(shù)據(jù)線,在系統(tǒng)中與數(shù)據(jù)總線相連。(2)IR0~IR7。中斷請求輸入信號。(3)RD。讀控制信號輸入,與控制總線相連。低電平有效,它有效表示由8259A讀至CPU。(4)WR。寫控制信號輸入,與控制總線相連。低電平有效,它有效表示寫信號至8259A。(5)CS。片選信號輸入,與地址譯碼電路相連。低電平有效,它有效表示正在訪問該8259A。(6)A0。地址線輸入,在使用中8259A占用相鄰兩個端口地址,A0與配合,A0=1選中奇地址端口。A0=0選中偶地址端口。在80x86的PC系列機中,主片8259A的端口地址為20H和21H。7.3.3

Intel8259A的引腳及功能

(7)CAS0~CAS2。3根級聯(lián)信號線,對主片8259A,它為輸出;對從片8259A,它為輸入。主、從片8259A的,為CAS0~CAS2對應(yīng)相連,主片8259A在第一個響應(yīng)周期內(nèi)通過CAS0~CAS2送出識別碼,而和此識別碼相符的從片8259A在接收到第二個信號后將中斷類型碼發(fā)送到數(shù)據(jù)總線上。(8)。從編程/緩沖器允許信號,雙向。是作為輸入還是輸出取決于8259A是否采用緩沖方式,若不用緩沖方式,則是輸入,反之,則作為輸出。作為輸入的使用時,用于區(qū)分主、從片8259A。主片8259A的=1,從片的=0。作為輸出的使用時作為數(shù)據(jù)總線緩沖器的使能信號。(9)INT。中斷請求信號輸出。8259A用此線向CPU發(fā)送中斷請求信號。接至CPU的INTR引腳。(10)。中斷響應(yīng)信號輸入。與CPU的引腳相連。7.3.4

8259A的工作方式

8259A的工作方式有多種,可以通過編程來設(shè)定。用戶可根據(jù)系統(tǒng)工作的要求來選擇相應(yīng)的工作方式,然后通過對8259A寫入初始化命令字來確定其工作方式。

1.中斷屏蔽方式(1)普通屏蔽方式。利用操作命令字OCW1使屏蔽寄存器IMR中的一位或數(shù)位置1來屏蔽一個或數(shù)個中斷源的中斷請求。若要開放某一個中斷源的中斷請求,則將IMR中相應(yīng)的位置0。(2)特殊屏蔽方式。在某些場合,執(zhí)行某一個中斷服務(wù)程序時,要求允許另一個優(yōu)先級比它低的中斷請求被響應(yīng),此時可采用特殊屏蔽方式。它可通過OCW3的D6D5=11來設(shè)定。7.3.4

8259A的工作方式

2.中斷嵌套方式(1)全嵌套方式。這是最常用的一種工作方式,中斷優(yōu)先級別固定,IR0最高,IR7最低。當(dāng)IRi中斷請求響應(yīng)時,相應(yīng)的ISRi位置1,在中斷服務(wù)過程中,禁止同級和優(yōu)先級低于本級的中斷請求。(2)特殊全嵌套方式。與全嵌套方式基本相同,所不同的是在特殊全嵌套方式下,當(dāng)執(zhí)行某一級中斷服務(wù)程序時可響應(yīng)同級的中斷請求,從而實現(xiàn)對同級中斷請求的特殊嵌套(8259A級聯(lián)使用時,某從片的8個中斷源對主片來說可以認(rèn)為是同級的)。特殊全嵌套方式用于多片級聯(lián)。7.3.4

8259A的工作方式

3.優(yōu)先級控制方式(1)優(yōu)先級自動循環(huán)方式。在這種方式下,優(yōu)先級的順序不是固定不變的,一個設(shè)備得到中斷服務(wù)后,其優(yōu)先級自動降為最低。其初始的優(yōu)先級順序規(guī)定為IR0,IR1,IR2,…,IR7。該方式用于系統(tǒng)中多個中斷源優(yōu)先級相等的場合。(2)優(yōu)先級特殊循環(huán)方式。這種方式與優(yōu)先級自動循環(huán)方式唯一的區(qū)別是,其初始的優(yōu)先級不是固定的IR0為最高,然后開始循環(huán),而是由程序指定IR0~IR7中任意一個為最高優(yōu)先級,然后再按順序自動循環(huán),決定優(yōu)先級。7.3.4

8259A的工作方式

4.中斷結(jié)束方式(1)自動中斷結(jié)束方式。在中斷服務(wù)程序中,中斷返回前不需要發(fā)出中斷結(jié)束命令就會自動清除該中斷源所對應(yīng)的ISR位(實際上在CPU發(fā)出第二個信號時,8259即自動清除ISR中的對應(yīng)位)。這種方式用在多個中斷不會嵌套的系統(tǒng)中。(2)非自動中斷結(jié)束方式。在中斷服務(wù)程序返回之前必須發(fā)中斷結(jié)束命令才能使ISR中的當(dāng)前服務(wù)位清除。7.3.5

8259A的級聯(lián)

眾所周知,一片8259A可管理8級中斷源,那么如果要管理多于8個中斷源的中斷,又該如何進行呢?實際上8259A在芯片的設(shè)計過程中已經(jīng)考慮到了這個問題,這就是利用級聯(lián)的方法,將多片8259A連接在一起來管理多于8個中斷源的中斷系統(tǒng)。圖7-6給出了多片8259A組成的級聯(lián)中斷系統(tǒng)圖。7.3.6

8259A的編程

在使用8259A時,除了按規(guī)定的信號接好電路外,還必須用程序選定其工作狀態(tài),例如,中斷請求的優(yōu)先權(quán)分配、中斷屏蔽、中斷矢量等,每一種狀態(tài)都由一個命令字或一個命令字中的某些位來規(guī)定。8259A的命令字可分為初始化命令字ICW(InitializationCommandWord)和工作命令字OCW(OperationCommandWord)兩種,因此8259A的編程也分為初始化編程和工作編程兩步。在8259A內(nèi)部,有相應(yīng)的一組寄存器分別將這些命令字鎖存以控制其工作。7.3.6

8259A的編程

1)8259A寄存器的讀寫對于8259A的內(nèi)部寄存器,除了在編程時CPU可用輸出指令對它們逐一寫入外,在查詢狀態(tài)時還可用輸入指令將其內(nèi)容讀出。為了尋址各寄存器,除了用地址信號A0譯碼外,還需要用這些命令字的某些位作為訪問某個寄存器的特征,或者按寫入的先后順序來區(qū)分。例如:要對ICW1操作,此時除了將地址線A0置0外還需要將ICW1命令字D4置1,此時表示選中了ICW1命令字,或者說啟動了ICW1的初始化編程。

2)8259A的初始化編程

8259A必須先進行初始化編程,后進行工作編程。初始化編程由寫入ICW1(稱為主初始化命令字)開始,然后寫入ICW2。至于是否寫ICW3和ICW4,取決于ICW1的內(nèi)容。7.3.6

8259A的編程

從圖7-7中可以看出,初始化命令字的寫入順序是:ICW1→ICW2→ICW3→ICW4,這4個命令字必須按照順序?qū)懭耄话悴恢貜?fù)寫。無論何時,當(dāng)CPU向8259A送入一條地址線A0=0、數(shù)據(jù)線D4=1的命令時,該命令被譯碼為初始化命令字ICW1,它啟動8259A的初始化過程,即相當(dāng)于RESET信號的作用。7.3.6

8259A的編程

8259A在進行初始化時將完成如下操作。①清除中斷屏蔽寄存器IMR,即中斷屏蔽寄存器的各位均復(fù)位為0。②設(shè)置IR7為最低優(yōu)先級的完全嵌套方式,固定優(yōu)先權(quán)排序。完全嵌套方式是指當(dāng)一個中斷請求被響應(yīng)后,就會自動屏蔽同級和低級的中斷請求,但能開放高級的中斷請求,即某中斷未服務(wù)完,同級或低級有中斷請求,不會使8259A的INT變?yōu)楦唠娖?。③清除特殊屏蔽方式。在某些?yīng)用場合,可能要求能在軟件的控制下動態(tài)地改變系統(tǒng)的優(yōu)先權(quán)結(jié)構(gòu),也就是若CPU正處在中斷服務(wù)的過程中,希望能屏蔽一些較低優(yōu)先權(quán)的中斷源的中斷申請,而允許一些優(yōu)先權(quán)更低的中斷源的中斷申請。當(dāng)然在通常情況下,當(dāng)較高優(yōu)先權(quán)的中斷源正處在中斷服務(wù)過程中時,所有中斷優(yōu)先權(quán)較低的中斷源都被屏蔽。④設(shè)置讀IRR方式。7.3.6

8259A的編程

(1)ICW1。

ICW1用于設(shè)置8259A的基本工作方式。剛才提到了當(dāng)?shù)刂肪€A0=0時,若對8259A寫入D4=1則啟動了初始化編程寫入的字節(jié)被當(dāng)成ICW1,D4=1是它的特征位,其余各位作用如下。A0=0表示是偶地址,D4=1是初始化命令字ICW1的標(biāo)志。D0(ICW4)表示初始化過程是否需要寫ICW4。D0=1表示是8086/8088系統(tǒng),必須寫ICW4,D0=0表示不需要寫ICW4。D1(SNGL)用于表示系統(tǒng)是單片8259A還是多片8259A。D0=1表示單片,D0=0表示級聯(lián)。D3(LJIM)表示中斷請求信號起作用的觸發(fā)方式。D3=1表示電平觸發(fā),D3=0表示邊沿觸發(fā)。D2(ADI)和D7、D6、D5(A7、A6、A5)用于8080/8085系統(tǒng)中設(shè)置中斷服務(wù)程序入口地址的A7、A6、A5,在8086/8088系統(tǒng)中,此3位無意義。7.3.6

8259A的編程

(2)ICW2(主片地址為21H,從片地址為A1H)。功能:用來設(shè)置中斷信號的類型碼。格式如下:工作于8080/8085系統(tǒng)中時,8位全部有用,表示CALL指令的高8位;工作于8086/8088系統(tǒng)中時,D7~D3表示中斷矢量的高5位,D2~D0不需編程而是由中斷源序號填入。7.3.6

8259A的編程

(3)ICW3(主片口地址為21H,從片口地址為A1H,多片級聯(lián)時使用)。

ICW3是8259A的級聯(lián)命令字,單片8259A工作時,不需要寫入,多片8259A級聯(lián)工作時,需要分別寫入ICW3,主片ICW3的D7~D0對其8條中斷請求線IR7~IR0,若某條IR線上接有從8259A片,則主ICW3的相應(yīng)位寫1,否則寫0。各從片的ICW3僅D2~D0有意義,作為從片標(biāo)識碼,高5位固定為0。這個從片標(biāo)識碼須和本片所接主片IRi線的序號(i)一致。在中斷響應(yīng)時,主片通過CAS2~CAS0送出被允許中斷的從片標(biāo)識碼。各從片用自己的ICW3和CAS0~CAS2的信號比較。二者一致的從片確定為當(dāng)前中斷源,才可發(fā)送自己的中斷矢量。7.3.6

8259A的編程

(4)ICW4。其格式如下。其中高3位無意義。

D4(SFNM)指定了中斷的嵌套方式。D4=0為一般嵌套方式。一般完全嵌套是指當(dāng)一個中斷源請求被響應(yīng)后就會自動屏蔽同級和低級的中斷請求,但能開放高級的中斷請求,即某中斷未服務(wù)完,同級或低級有中斷請求,不會使8259A的INT變?yōu)橛行Ц唠娖?。對于單?259A的中斷系統(tǒng),這種安排是沒有問題的。但對于多片8259A級聯(lián)組成的系統(tǒng),當(dāng)某個從片中的一個中斷正在服務(wù)時,主片將這個從片的所有中斷屏蔽。這是因為盡管該從片多個中斷源各有優(yōu)先級別,但由于它們都通過同一個中斷申請INT引腳接到主片的同一個IRi上,也就是說在主片上,它們的優(yōu)先級別均相同,所以說即使本片中有比正在服務(wù)的中斷級別更高的中斷源發(fā)出請求,也不能得到響應(yīng)即不能中斷嵌套。7.3.6

8259A的編程

D3(BUF)為數(shù)據(jù)緩沖選擇。D3=1時,8259A的數(shù)據(jù)總線和系統(tǒng)總線之間要加三態(tài)緩沖器。此時8259A的引腳變成輸出線以控制緩沖器的接通。當(dāng)D3=0時,設(shè)定為非緩沖方式,由所接的電平高低確定5259A片是主片還是從片。當(dāng)D3=1且又是級聯(lián)方式時,這時規(guī)定當(dāng)ICW4的D2=1時表示主片,當(dāng)D2=0時表示從片。當(dāng)然D3=0時,D2就無意義了。

D2(M/S)表示本片8259A是主片還是從片,D2=0時表示從片,D2=1時表示主片。

D1(AEOI)說明了中斷的結(jié)束方式。中斷結(jié)束的方式有兩種:一種是正常方式,另一種是自動方式。D1=0是中斷的正常結(jié)束方式,在這種方式下,中斷結(jié)束時向8259A送一個EOI命令字(OCW2),于是中斷服務(wù)寄存器ISR中與中斷源相應(yīng)的位被清除。D1=1是中斷的特殊結(jié)束方式,在中斷響應(yīng)時,8259A送出中斷矢量后自動將ISR復(fù)位,不需要送結(jié)束命令字OCW2。

D0(UPM)指定了系統(tǒng)中所采用的CPU系列。當(dāng)D0=0時系統(tǒng)用8080/8085CPU。當(dāng)D0=1時系統(tǒng)用8086/8088CPU系列。7.3.6

8259A的編程

3)8259A的工作編程

8259A在初始化編程后,應(yīng)再進行工作編程,即寫入工作命令字共有三個OCW1、OCW2和OCW3。它們各有自己的特征位,因此寫入時沒有順序的要求。在中斷服務(wù)程序中,某些命令字可能會多次重復(fù)寫入。(1)OCW1(主片口地址為21H,從片口地址為A1H)。

OCW1又被稱為中斷屏蔽字,用來設(shè)置中斷屏蔽寄存器IMR中各位的值。8259A輸入信號IRi的屏蔽操作與中斷屏蔽寄存器IMR中各位的值一一對應(yīng)。將OCW1中的某個Mi位置1時,IMR的相應(yīng)位也置1,從而屏蔽相應(yīng)的輸入IRi信號。三個工作命令字中僅OCW1占有奇地址(A0=1)。7.3.6

8259A的編程

(2)OCW2(主片口地址為20H,從片口地址為A0H)。寫OCW2的作用:①對8259A發(fā)中斷結(jié)束命令,實際上也就是清ISR中的置位;②改變優(yōu)先權(quán)的排序結(jié)構(gòu)。它和工作命令字OCW3都占有偶地址(A0=0),但其特征位為D4D3=00。因此不會混淆。同樣對它們的寫入也沒有要求是早寫還是晚寫。其中A0=0,D4D3=00為OCW2的標(biāo)志。這些操作命令通常以組合方式出現(xiàn),而不是按位設(shè)置的,為了說明組合命令的意義,首先介紹有關(guān)位的定義。7.3.6

8259A的編程

D7(R):優(yōu)先權(quán)控制位。優(yōu)先權(quán):它是指響應(yīng)中斷過程中中斷請求信號級別的高低。一般情況下,IR0級別最高,IR7級別最低,但在實際應(yīng)用中,中斷源的優(yōu)先權(quán)情況是比較復(fù)雜的,不一定有明顯的等級,而且優(yōu)先權(quán)還有可能改變,所以不能總規(guī)定IR0的優(yōu)先權(quán)最高,而IR7的優(yōu)先權(quán)最低,要根據(jù)情況來改變。在8259A中有兩種控制優(yōu)先權(quán)的方法。

①自動循環(huán)在某些應(yīng)用的情況下,若干中斷源有相等的優(yōu)先權(quán)。因此當(dāng)某個中斷源服務(wù)完成后,它的優(yōu)先權(quán)變?yōu)樽畹?。例如,在循環(huán)前,若IR4和IR6同時有中斷請求,而當(dāng)時的IR0最高,IR7最低。因此就先服務(wù)IR4的請求,當(dāng)IR4服務(wù)完畢后它的優(yōu)先權(quán)最低,而IR6的優(yōu)先權(quán)就最高了。

②固定優(yōu)先權(quán)固定優(yōu)先權(quán)是指中斷請求信號IR0~IR7的級別是固定的。7.3.6

8259A的編程

D6(SL)位表示特殊旋轉(zhuǎn)。當(dāng)D6=1時,允許由D2~D0(L2~L0)編碼指定對應(yīng)的IRi為最低優(yōu)先權(quán)。那么此時最高優(yōu)先級為IRi-1。當(dāng)D6=0時,L2~L0編碼無效。

D5(EOI):中斷結(jié)束命令位。D5=1表示中斷結(jié)束(EOI命令)。當(dāng)用8259A來實現(xiàn)中斷管理時,返回指令I(lǐng)RET前必須給8259A送一條EOI命令(即D5=1的OCW2)。8259A收到這條命令后,將中斷服務(wù)寄存器ISR中的相應(yīng)位清除,然后才好為其他中斷源服務(wù)。當(dāng)D6D5=1時,則為特殊的中斷結(jié)束(SEOI命令),它將復(fù)位ISR中由OCW2中的L2~L0指定的位。7.3.6

8259A的編程

(3)OCW3(主片口地址20H,從片口地址A0H)。寫入OCW3的地址和OCW2的相同,都是A0=0,但其特征位是D4D3=01。功用:OCW3常用來配合讀8259A內(nèi)部寄存器的內(nèi)容。格式如下。7.3.6

8259A的編程

D6、D5兩位用來設(shè)定和清除特殊屏蔽。這里首先介紹一下。一般情況下的屏蔽是:當(dāng)交給優(yōu)先權(quán)的中斷源正處在中斷服務(wù)的過程中時,所有優(yōu)先權(quán)較低的中斷申請全都被屏蔽了。特殊屏蔽是指:若CPU正處在中斷服務(wù)過程中,希望能屏蔽一些較低優(yōu)先權(quán)中斷源的中斷,而允許一些優(yōu)先權(quán)更低的中斷源發(fā)出中斷申請。設(shè)置特殊屏蔽為:D6D5=11;清除特殊屏蔽為:D6D5=10。

D1、D0兩位組合表示中斷請求寄存器(IRR)或是讀中斷服務(wù)寄存器(ISR)。當(dāng)OCW3的D1D0=11時,也對同一個地址(A0)作輸入,則讀入的是中斷服務(wù)寄存器(ISR)的內(nèi)容。除了以上兩個寄存器外,任何時候?qū)?259A用奇地址A0=1作輸入,都可以讀出IMR的內(nèi)容。7.3.7

8259A在微機系統(tǒng)中的應(yīng)用【例7.1】8259A在IBMPC/XT中的應(yīng)用。其連接圖如圖7-8所示。7.3.7

8259A在微機系統(tǒng)中的應(yīng)用表7-3IBMPC/AT的中斷源和類型號中斷向量地址指針8259A引腳引腳中斷類型號優(yōu)先級中斷源00020H主片IR008H0(最高)定時器00024H主片IR109H1鍵盤00028H主片IR20AH2從片8259A001C0H從片IR070H3時鐘/日歷鐘001C4H從片IR171H4IRO9(保留)001C8H從片IR272H5IRO10(保留)001CCH從片IR373H6IRO11(保留)001D0H從片IR474H7IRO12(保留)001D4H從片IR575H8協(xié)處理器001D6H從片IR676H9硬盤控制器001D8H從片IR777H10IRQ15(保留)0002CH主片IR30BH11異步通信口(COM2)00030H主片IR40CH12異步通信口(COM1)00034H主片IR50DH13并行打印口2200038H主片IR60EH14軟盤驅(qū)動器0003CH主片IR70FH15(最低)并行打印口117.3.6

8259A的編程

【例7.2】試編程實現(xiàn)主機每次響應(yīng)8259A的IR2中斷請求,顯示字符串“THISISA8259AINTERRUPT!”,中斷10次結(jié)束。流程圖如圖7-9所示。

DATASEGMENTMESSDB'THISISA8259AINTERRUPT!',0AH,0DH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,

溫馨提示

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

評論

0/150

提交評論