微機原理與接口技術(shù)課件:輸入輸出接口技術(shù)_第1頁
微機原理與接口技術(shù)課件:輸入輸出接口技術(shù)_第2頁
微機原理與接口技術(shù)課件:輸入輸出接口技術(shù)_第3頁
微機原理與接口技術(shù)課件:輸入輸出接口技術(shù)_第4頁
微機原理與接口技術(shù)課件:輸入輸出接口技術(shù)_第5頁
已閱讀5頁,還剩491頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

輸入/輸出接口技術(shù)6.1輸入/輸出接口概述6.2中斷系統(tǒng)6.3并行接口6.4串行接口6.5

DMA控制技術(shù)6.6定時器/計數(shù)器6.7顯示接口6.8鍵盤、鼠標(biāo)接口6.9并行打印機接口6.10

A/D及D/A接口6.11

ProteusISIS下輸入/輸出接口技術(shù)應(yīng)用示例本章小結(jié)學(xué)習(xí)目標(biāo)

本章主要介紹微機系統(tǒng)中的輸入/輸出接口技術(shù)。要求讀者掌握接口的概念和功能,微處理器與I/O設(shè)備之間數(shù)據(jù)傳輸?shù)?種控制方式,特別是要深刻理解中斷和DMA的基本概念,熟練掌握編程和使用中斷控制器與DMA控制的有關(guān)技術(shù),掌握它們與CPU和外設(shè)連接的設(shè)計方法。在理解I/O接口原理的基礎(chǔ)上,進一步學(xué)習(xí)并行接口、串行接口、定時器、CRT顯示器、鍵盤、打印機和模/數(shù)與數(shù)/模接口的知識,了解它們的結(jié)構(gòu)特點,理解其編程方法,掌握接口和微處理器以及外設(shè)進行連接的方法,從而掌握系統(tǒng)擴充I/O通道的基本方法和規(guī)律。

學(xué)習(xí)重點

(1)I/O接口的概念、功能和一般結(jié)構(gòu)。

(2)微處理器與I/O設(shè)備之間數(shù)據(jù)傳輸?shù)目刂品绞健?/p>

(3)中斷的基本概念(包括中斷分類、中斷向量、中斷處理過程、中斷優(yōu)先級及中斷嵌套的概念和實現(xiàn)方案)和8259A的使用方法。

(4)并行接口、串行接口、定時器和模/數(shù)與數(shù)/模接口的結(jié)構(gòu)、原理和編程連接方法。

(5)DMA的基本概念(包括DMA的傳送條件、傳送過程、DMA系統(tǒng)總線緩沖器的控制和驅(qū)動),DMA控制器8237的編程以及與CPU的連接。

(6)各種I/O接口和微處理器、外設(shè)的連接方法,以及設(shè)計I/O接口的基本規(guī)律。

(7)顯示器的基本原理與編程方法。

(8)鍵盤的工作原理、與主機連接方法以及編程方法。

(9)鼠標(biāo)的基本工作原理及編程方法。

(10)打印機的基本結(jié)構(gòu)、工作原理及編程方法。

6.1輸入/輸出接口概述

6.1.1輸入/輸出接口電路

微型計算機接口技術(shù)在微機系統(tǒng)設(shè)計和應(yīng)用過程中占有極其重要的地位。無論是系統(tǒng)內(nèi)部的信息交換還是與系統(tǒng)外部的信息交換,都是通過接口來實現(xiàn)的。所謂接口,是指CPU與存儲器、外部設(shè)備或者兩種外部設(shè)備之間,再或者兩種機器之間通過系統(tǒng)總線進行連接的邏輯部件(或稱電路),它是CPU與外界進行信息交換的中轉(zhuǎn)站。

圖6-1為一個微型計算機的輸入/輸出接口結(jié)構(gòu)圖??梢钥闯觯粋€簡單的微機系統(tǒng)由CPU、存儲器、基本輸入/輸出接口以及將它們連接在一起的各種信號線和接口電路組成。圖6-1微型計算機的輸入/輸出接口結(jié)構(gòu)圖

外部設(shè)備通過接口電路與系統(tǒng)總線相連,即通過接口電路將外設(shè)掛接在微機系統(tǒng)中。接口電路的作用是把計算機輸出的信息變成外設(shè)能夠識別的信息,把外設(shè)輸入的信息轉(zhuǎn)化成計算機所能接受的信息。從微機的結(jié)構(gòu)來看,各種外設(shè)、存儲器,甚至是多機系統(tǒng)中的微處理器都需通過相應(yīng)的電路連接到總線上。因此,廣義上說接口是指連接計算機各種功能部件,使其構(gòu)成一個完整實用的計算機系統(tǒng)電路的部件,如總線驅(qū)動器、時鐘電路、存儲器接口、外設(shè)接口等。接口電路可以很簡單,例如用一個TTL三態(tài)緩沖器即可構(gòu)成一個一位長的輸入/輸出接口電路;也可以是結(jié)構(gòu)復(fù)雜,功能很強,通過用戶編程使接口電路工作在理想狀態(tài)下的大規(guī)模集成芯片,如Intel8255A并行輸入/輸出接口、Intel8259A中斷控制器等。

1.?I/O信息的組成

CPU通過接口與外設(shè)交換信息,這些信息包括數(shù)據(jù)信息、狀態(tài)信息和控制信息。

1)數(shù)據(jù)信息

數(shù)據(jù)信息可分為數(shù)字量、模擬量和開關(guān)量。

數(shù)字量是鍵盤、CRT、打印機及磁盤等I/O外設(shè)與CPU交換的信息,它是以二進制形式表示的數(shù)或以ASCII碼表示的數(shù)或字符。

當(dāng)微型計算機用于控制系統(tǒng)時,大量的現(xiàn)場信息經(jīng)過傳感器把非電量(如溫度、壓力、流量、位移等)轉(zhuǎn)換成電量,并經(jīng)放大處理得到模擬量的電壓或電流。

模擬量必須先經(jīng)過A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量才能輸入計算機;計算機控制信號的輸出也必須先經(jīng)過D/A轉(zhuǎn)換器把數(shù)字量轉(zhuǎn)換成模擬量才能去控制執(zhí)行機構(gòu)。

開關(guān)量即兩個狀態(tài)的量,如開關(guān)的斷開與閉合、閥門的打開與關(guān)閉等。通常開關(guān)量要經(jīng)過相應(yīng)的電平轉(zhuǎn)換才能與計算機連接。每個開關(guān)量只用一位二進制數(shù)表示,故對于字長為8位(或16位)的計算機,一次可輸入或輸出8位(或16位)開關(guān)量。

2)狀態(tài)信息

狀態(tài)信息是CPU與外設(shè)之間交換數(shù)據(jù)時的聯(lián)絡(luò)信息。CPU通過讀取外設(shè)狀態(tài)信號,可知外設(shè)的工作狀態(tài)。如輸入設(shè)備的數(shù)據(jù)是否準備好,輸出設(shè)備是否空閑。輸出設(shè)備正在輸出信息,則用BUSY信號通知CPU暫停送數(shù)。因此,狀態(tài)信號是CPU與I/O外設(shè)正確進行數(shù)據(jù)交換的重要條件。

3)控制信息

控制信息是設(shè)置I/O外設(shè)(包括I/O接口)的工作模式、命令字的有關(guān)信息,如“啟動”、“停止”信息。

每個I/O接口通常包含若干I/O端口寄存器,CPU和存儲器通過這些端口與該接口所連接的外設(shè)進行信息交換。通常,狀態(tài)信息和控制信息也是通過數(shù)據(jù)總線傳送的。由于它們的作用不同,故在傳送時賦予不同的端口。因此,一個外設(shè)往往占用幾個端口,如數(shù)據(jù)端口、狀態(tài)端口、控制端口等。當(dāng)一個外設(shè)的狀態(tài)信息和控制信息位數(shù)較少時,可以將不同外設(shè)的狀態(tài)或控制信息歸并到一起,共同使用一個端口。這樣,CPU對外設(shè)的控制或CPU與外設(shè)間的信息交換,實際上就是CPU通過I/O指令讀/寫端口的數(shù)據(jù)。在控制端口,寫出的數(shù)據(jù)表示CPU對外設(shè)的控制信號;在狀態(tài)端口,讀入的數(shù)據(jù)表示外設(shè)的狀態(tài)信息;只有在數(shù)據(jù)端口,才真正地進行數(shù)據(jù)信息的交換。

2.?I/O接口的作用

外圍設(shè)備的種類繁多,有機械式、電子式、機電式、磁電式以及光電式等。其所處理的信息有數(shù)字信號、模擬信號,還有電壓信號、電流信號。不同的外圍設(shè)備處理信息的速度相差懸殊,有的速度慢,有的速度快。另外,微型計算機與不同的外圍設(shè)備之間所傳送的信息格式和電平高低是多種多樣的,這樣就形成了外設(shè)接口電路的多樣化。

由于外圍設(shè)備的多樣性,外設(shè)接口電路應(yīng)具有如下功能:

(1)轉(zhuǎn)換信息格式,如串—并轉(zhuǎn)換、并—串轉(zhuǎn)換、配備校驗位等。

(2)提供聯(lián)絡(luò)信號,協(xié)調(diào)數(shù)據(jù)傳送的狀態(tài)信息,如設(shè)備“就緒”、“忙”,數(shù)據(jù)緩沖器“滿”、“空”等信號。

(3)協(xié)調(diào)定時差異。為協(xié)調(diào)微機與外設(shè)在定時或數(shù)據(jù)處理速度上的差異,使兩者之間的數(shù)據(jù)交換取得同步,有必要對傳輸?shù)臄?shù)據(jù)或地址加以緩沖或鎖存。

(4)進行譯碼選址。在具有多臺外設(shè)的系統(tǒng)中,外設(shè)接口必須提供地址譯碼以及確定設(shè)備碼的功能。

(5)實現(xiàn)電平轉(zhuǎn)換。為使微型計算機與外設(shè)匹配,接口電路必須具有電平轉(zhuǎn)換和驅(qū)動功能。

(6)具備時序控制。有的接口電路有自己的時鐘發(fā)生器,以滿足微型計算機和各種外設(shè)在時序方面的要求。

(7)可編程。對一些通用的、功能較齊全的接口電路,應(yīng)該具有可編程能力。

3.微處理器與I/O接口電路的連接

微處理器通過數(shù)據(jù)總線、地址總線和控制總線與存儲器及輸入/輸出接口電路連接,為了保證系統(tǒng)工作的可靠性,在構(gòu)成系統(tǒng)時必須考慮以下幾個方面的問題:

(1)負載能力的匹配。器件輸出端所接的負載不能超過器件的負載能力。

(2)速度配合問題。存儲器或輸入/輸出端口的讀/寫時間必須小于CPU在讀/寫周期中提供的讀/寫時間。當(dāng)CPU提供的時間不足時,可以通過選取適當(dāng)速度的芯片或改變CPU的時鐘頻率等方法滿足上述條件,也可以通過READY引腳,請求CPU插入TW周期以實現(xiàn)速度配合。

(3)邏輯連接的正確性。應(yīng)正確連接地址總線、數(shù)據(jù)總線及控制總線,保證CPU在執(zhí)行對某一存儲單元或輸入/輸出端口的讀寫指令時,該單元或端口確實被選中并進行相應(yīng)的操作。6.1.2

CPU與外設(shè)數(shù)據(jù)傳送的方式

1.程序控制方式

程序控制方式是指CPU與外設(shè)之間的數(shù)據(jù)傳送是在程序控制下完成的,它分為無條件傳送方式和查詢傳送方式兩類。

1)無條件傳送方式

無條件傳送方式是一種最簡單的輸入/輸出控制方式。該方式認為外設(shè)始終是準備好的,能隨時提供數(shù)據(jù),一般適用于經(jīng)過較長時間間隔數(shù)據(jù)才有顯著變化的情況。這時無需檢查端口的狀態(tài),就可以立即采集數(shù)據(jù)。這時的端口不需要加鎖存器而直接用三態(tài)緩沖器與系統(tǒng)總線相連。無條件傳送方式接口電路如圖6-2所示。圖6-2無條件傳送方式接口電路

當(dāng)進行輸入時,由于數(shù)據(jù)保持時間比CPU的處理時間長,輸入端必須用輸入緩沖器與CPU的數(shù)據(jù)總線相連。當(dāng)CPU執(zhí)行輸入指令時,I/O讀信號

有效,來自輸入設(shè)備的數(shù)據(jù)到達數(shù)據(jù)總線,傳送給CPU。顯然,CPU在執(zhí)行輸入指令時,要求外設(shè)的數(shù)據(jù)已經(jīng)準備好,否則就會出錯。

當(dāng)進行輸出時,由于外設(shè)速度較慢,要求接口有鎖存功能,即CPU送給外設(shè)的數(shù)據(jù)應(yīng)該在接口中保持一段時間。當(dāng)CPU執(zhí)行輸出指令時,I/O寫信號

有效,CPU輸出的信息經(jīng)過數(shù)據(jù)總線進入輸出鎖存器,輸出鎖存器保持這個數(shù)據(jù),直到外設(shè)取走該數(shù)據(jù)。顯然,CPU在執(zhí)行輸出指令時,必須保證鎖存器是空閑的。

從以上分析可以看出,無條件傳送方式是最簡便的傳送方式,它所需的硬件和軟件都較少。但應(yīng)當(dāng)注意:輸入時,必須確保當(dāng)CPU讀取數(shù)據(jù)時,外設(shè)已將數(shù)據(jù)準備好;輸出時,當(dāng)CPU執(zhí)行OUT指令時,必須確保外部設(shè)備的數(shù)據(jù)鎖存器為空,即外設(shè)已將上次送來的數(shù)據(jù)取走,否則會導(dǎo)致數(shù)據(jù)傳送出錯。

2)查詢傳送方式

由于CPU和I/O設(shè)備的工作往往是異步的,很難保證當(dāng)CPU輸入時,外設(shè)已準備好數(shù)據(jù),而當(dāng)CPU輸出時,外設(shè)的數(shù)據(jù)鎖存器是空的。因此,在CPU傳送數(shù)據(jù)前,應(yīng)檢查外設(shè)的狀態(tài),若設(shè)備已準備好,則進行數(shù)據(jù)傳送;否則,CPU就進入等待狀態(tài)。這種傳送方式稱為查詢傳送方式。

在查詢傳送方式的接口電路中,除具有數(shù)據(jù)緩沖器或數(shù)據(jù)鎖存器外,還應(yīng)有外設(shè)的狀態(tài)標(biāo)志。在輸入時,若輸入數(shù)據(jù)準備好,則將此標(biāo)志置位;輸出時,若數(shù)據(jù)已“空”,則將此標(biāo)志置位。在接口電路中,此狀態(tài)標(biāo)志也占用一個端口地址。在使用查詢傳送方式時,先讀入設(shè)備狀態(tài)的標(biāo)志信息,再根據(jù)讀入的信息進行判斷。若數(shù)據(jù)未準備好,則CPU重新返回,繼續(xù)讀入狀態(tài)字等待;若數(shù)據(jù)已準備好,則開始傳送數(shù)據(jù),執(zhí)行I/O指令。傳送結(jié)束后,CPU可以轉(zhuǎn)去執(zhí)行其他操作。這種CPU與外設(shè)的狀態(tài)信息的交換方式稱為“應(yīng)答式”,狀態(tài)信息位稱為“聯(lián)絡(luò)”信號。

(1)查詢式輸入。

圖6-3所示為查詢式輸入的接口電路,該電路有兩個端口寄存器,即狀態(tài)口寄存器和數(shù)據(jù)口寄存器。當(dāng)輸入設(shè)備準備好數(shù)據(jù)時,發(fā)出選通信號。它一方面把輸入數(shù)據(jù)鎖存到數(shù)據(jù)鎖存器中,另一方面使?fàn)顟B(tài)標(biāo)志觸發(fā)器置1。狀態(tài)標(biāo)志是一位信號,通過緩沖器后,接到CPU數(shù)據(jù)總線的某一位上。假設(shè)接至D7位,CPU先讀狀態(tài)口,查詢D7是否為1。若D7?=?1,表示輸入數(shù)據(jù)已準備好,再讀數(shù)據(jù)口,取走輸入數(shù)據(jù),同時使?fàn)顟B(tài)標(biāo)志觸發(fā)器復(fù)位。

圖6-3查詢式輸入的接口電路查詢輸入的程序段如下:

SCAN:INAL,狀態(tài)口地址

TESTAL,80H

JZSCAN

INAL,數(shù)據(jù)口地址

(2)查詢式輸出。

圖6-4所示為查詢式輸出的接口電路,它的狀態(tài)口和數(shù)據(jù)口合用一個地址。當(dāng)前輸出設(shè)備空閑時,狀態(tài)標(biāo)志觸發(fā)器清0。CPU在輸出數(shù)據(jù)之前,先讀取狀態(tài)信息。假設(shè)忙閑標(biāo)志接至數(shù)據(jù)線D0位,當(dāng)D0?=?0時,表示輸出設(shè)備空閑,CPU再對數(shù)據(jù)口執(zhí)行輸出指令。

圖6-4查詢式輸出接口電路

數(shù)據(jù)口選中信號一方面把輸出數(shù)據(jù)寫入鎖存器,一方面使?fàn)顟B(tài)標(biāo)志觸發(fā)器置1,通知輸出設(shè)備。當(dāng)輸出設(shè)備取走當(dāng)前數(shù)據(jù)時,向接口發(fā)出確認信號ACK,使?fàn)顟B(tài)標(biāo)志觸發(fā)器清0,表示輸出設(shè)備空閑。

查詢輸出的程序段如下:

SCAN:IN AL,狀態(tài)口地址

;取狀態(tài)信息

TEST AL,01H ;測忙閑標(biāo)志

JNZ SCAN ;忙,轉(zhuǎn)移

MOV AL,某數(shù)

OUT 數(shù)據(jù)口地址,AL ;空閑,輸出數(shù)據(jù)

查詢傳送方式的優(yōu)點在于能較好地協(xié)調(diào)高速CPU與慢速外設(shè)的時間匹配問題;缺點是當(dāng)CPU與中慢速外部設(shè)備交換數(shù)據(jù)時,CPU需不斷地去查詢外設(shè)狀態(tài),這將占用CPU較多的時間,使CPU真正用于傳送數(shù)據(jù)的時間較少。

2.中斷傳送方式

查詢傳送方式占用CPU的時間多,且難于滿足實時控制的需要。因為在查詢傳送方式下CPU處于主動地位,外設(shè)處于消極被查詢的被動地位。而在實時系統(tǒng)中,外設(shè)要求CPU為它的服務(wù)是隨機的,這就要求外設(shè)有主動申請CPU服務(wù)的權(quán)利。此時,一般采用中斷傳送方式。

CPU啟動外部設(shè)備后,繼續(xù)執(zhí)行主程序,當(dāng)外部設(shè)備準備好傳送數(shù)據(jù)時向CPU發(fā)出中斷請求,CPU響應(yīng)這個請求后就轉(zhuǎn)向中斷服務(wù)程序去執(zhí)行相應(yīng)的輸入/輸出操作。當(dāng)對外設(shè)的請求處理完畢后,再返回到被中斷的程序繼續(xù)執(zhí)行。采用這種中斷方式時,CPU不再等待或查詢,而是由外部設(shè)備決定什么時候為它服務(wù)。這種方法允許CPU與外設(shè)(甚至多個外設(shè))并行工作,不僅提高了CPU的效率,而且能在需要的時候隨時為外設(shè)服務(wù),實時性好。一般CPU內(nèi)部均設(shè)有相應(yīng)的硬件線路,使其在執(zhí)行指令的同時監(jiān)測通過中斷引腳送入的中斷請求信號,并響應(yīng)中斷請求。

3.?DMA工作方式

盡管中斷傳送方式可以較為實時地識別外部中斷源的請求,但由于它需要額外開銷時間(用于中斷響應(yīng)、斷點保護與恢復(fù)等)以及中斷處理的服務(wù)時間,使得中斷響應(yīng)頻率受到了限制。當(dāng)高速外設(shè)與計算機系統(tǒng)進行信息交換時,若采用中斷傳送方式,將會出現(xiàn)CPU頻繁響應(yīng)中斷而不能有效地完成主要工作或者根本來不及響應(yīng)中斷而造成數(shù)據(jù)丟失的現(xiàn)象。采用直接存儲器存取(DirectMemoryAccess,DMA)工作方式可以確保外設(shè)與計算機系統(tǒng)進行高速信息交換。

在DMA工作方式下,由DMA控制器(DMAC)完成對傳送過程的控制,即控制和修改內(nèi)存地址,控制DMA的開始與結(jié)束等。因此,在DMA工作方式下,由DMAC來控制地址總線、數(shù)據(jù)總線和相應(yīng)控制信號線,而CPU必須讓出這些總線的控制權(quán)。在DMA工作方式下,數(shù)據(jù)傳送速率可以達到很高,一般可在每秒0.5?MB以上。

4.I/O處理機方式

雖然DMA工作方式已能較好地實現(xiàn)高速度、大批量的數(shù)據(jù)傳送,但仍然需要CPU對DMAC進行初始化,啟動DMA操作,以及完成每次DMA操作之后檢查傳送的狀態(tài)等。對于I/O數(shù)據(jù)的處理,如對數(shù)據(jù)的變換、拆、裝、檢查等,更是離不開CPU的支持。為了能讓CPU進一步擺脫I/O數(shù)據(jù)傳送的負擔(dān),提出了I/O處理機方式。

I/O處理機方式下,采用專門的I/O協(xié)處理器,它不僅能控制數(shù)據(jù)的傳送,還可以執(zhí)行算術(shù)邏輯運算、轉(zhuǎn)移、搜索和轉(zhuǎn)換等。當(dāng)CPU需要進行I/O操作時,它只要在存儲器中建立一個信息塊,將所需要的操作和有關(guān)的參數(shù)按照規(guī)定列入,然后通知I/O協(xié)處理器來讀取。I/O協(xié)處理器讀得控制信息后,能自動完成全部的I/O操作。在這種系統(tǒng)中,所有I/O操作都以塊為單位進行。6.1.3

I/O端口的編址方式

如圖6-5所示,CPU和I/O設(shè)備進行數(shù)據(jù)傳送,在接口中就必須有一些寄存器或特定的硬件電路供CPU直接存取訪問,稱之為I/O端口。為了區(qū)分不同的I/O端口,必須對它進行編址,這就是I/O端口的地址。CPU通過這些地址讀取狀態(tài)和傳送數(shù)據(jù),即端口向接口電路中的寄存器發(fā)送命令,因此一個接口可以有多個端口,如命令端口、狀態(tài)端口和數(shù)據(jù)端口,分別對應(yīng)于控制寄存器、狀態(tài)寄存器和數(shù)據(jù)輸入緩沖器等。圖6-5外設(shè)通過接口與系統(tǒng)的連接

1.統(tǒng)一編址方式

統(tǒng)一編址方式是將所有I/O接口電路中的寄存器或三態(tài)緩沖器當(dāng)作存儲單元來對待,每一個接口寄存器給予相應(yīng)的地址編碼。這樣,對外設(shè)進行輸入/輸出操作就如對某一存儲單元進行讀/寫操作一樣,只是各自具有不同的地址而已。采用統(tǒng)一編址方式的微型計算機系統(tǒng)中,CPU不需要設(shè)置輸入/輸出類指令,也不提供區(qū)別訪內(nèi)操作與訪外操作的控制信號。應(yīng)指出,設(shè)置輸入/輸出類指令的微處理器也能按照統(tǒng)一編址法組成微機系統(tǒng)。

統(tǒng)一編址方式的優(yōu)點如下:

(1)對I/O接口的操作與對存儲器的操作完全相同,任何存儲器操作指令都可用來操作I/O端口,而不使用專用I/O指令,這可大大增強系統(tǒng)的I/O功能,使訪問外設(shè)端口的操作方便、靈活。

(2)可以使外設(shè)數(shù)目或I/O寄存器數(shù)目不受限制,從而大大增加系統(tǒng)的吞吐率。

(3)?I/O接口部分可以和存儲器共用譯碼系統(tǒng)。

(4)?CPU無需產(chǎn)生區(qū)分訪內(nèi)操作與訪外操作的控制信號。

統(tǒng)一編址方式的缺點如下:

(1)外設(shè)占用內(nèi)存單元,使內(nèi)存容量減小。

(2)訪問內(nèi)存的指令一般較長,對I/O操作的指令比專用I/O指令多占用存儲空間,執(zhí)行速度慢。

(3)為了識別一個I/O端口,必須對全部地址線譯碼,這樣不僅增加了譯碼電路的復(fù)雜性,而且增加了執(zhí)行外設(shè)尋址的操作時間。

獨立編址方式的優(yōu)點如下:

(1)I/O端口的地址碼一般比同系統(tǒng)中存儲單元的地址碼短,譯碼電路較簡單。

(2)存儲器與I/O端口的操作指令不同,程序比較清晰。

(3)存儲器和I/O端口的控制電路結(jié)構(gòu)相互獨立,可以分別設(shè)計。

獨立編址方式的缺點是需要專門的I/O指令,這些I/O指令一般沒有存儲器訪問指令豐富,所以程序設(shè)計的靈活性較差。 6.2中斷系統(tǒng)

6.2.1中斷系統(tǒng)基本概念

CPU在正常執(zhí)行程序時,由于內(nèi)部或外部事件或程序的預(yù)先安排引起CPU暫時終止執(zhí)行現(xiàn)行程序,轉(zhuǎn)而去執(zhí)行請求CPU為其服務(wù)的服務(wù)程序,待該服務(wù)程序執(zhí)行完畢,又能自動返回到被中斷的程序繼續(xù)執(zhí)行,這種中斷就是人們通常所說的外部中斷。隨著計算機體系結(jié)構(gòu)不斷地更新?lián)Q代和應(yīng)用技術(shù)的日益提高,中斷技術(shù)的發(fā)展速度迅速提升,中斷的概念逐步延伸,中斷的應(yīng)用范圍逐漸擴大。除了傳統(tǒng)的外圍部件引起的硬件中斷外,出現(xiàn)了內(nèi)部軟件中斷概念,外部中斷和內(nèi)部軟件中斷構(gòu)成了一個完整的中斷系統(tǒng)。

中斷技術(shù)是現(xiàn)代微型計算機系統(tǒng)中廣泛采用的一種資源共享技術(shù),具有隨機性。中斷技術(shù)被引進到計算機系統(tǒng)中,大大改善了CPU處理偶發(fā)事件的能力,使具有高效率、高性能、高適應(yīng)性的并行處理功能的計算機系統(tǒng)變成了現(xiàn)實。中斷的引入可使多個外設(shè)之間并行工作。CPU在不同時刻根據(jù)需要可啟動多個外設(shè),被啟動的外設(shè)分別同時獨立工作,一旦自己的工作完成即可向CPU發(fā)出中斷請求信號。?CPU按優(yōu)先級高低次序來響應(yīng)這些請求并進行服務(wù)。所以,中斷成為主機內(nèi)部管理的重要技術(shù)手段,使計算機執(zhí)行多道程序,帶多個終端,為多個用戶服務(wù),大大加強了計算機整個系統(tǒng)的功能。

采用中斷技術(shù),能實現(xiàn)以下功能:

(1)分時操作。計算機配上中斷系統(tǒng)后,CPU就可以分時執(zhí)行多個用戶的程序和多道作業(yè),使每個用戶認為它正在獨占系統(tǒng)。此外,CPU可控制多個外設(shè)同時工作,并可及時得到服務(wù)處理,使各個外設(shè)一直處于有效工作狀態(tài),從而大大提高主機的使用效率。

(2)實時處理。當(dāng)計算機用于實時控制時,計算機在現(xiàn)場測試和控制、網(wǎng)絡(luò)通信、人機對話時都會具有強烈的實時性,中斷技術(shù)能確保對實時信號的處理。實時控制系統(tǒng)要求計算機為它們的服務(wù)是隨機發(fā)生的,且時間性很強,要求做到近乎即時處理,若沒有中斷系統(tǒng)是很難實現(xiàn)的。

(3)故障處理。計算機運行過程中,往往會出現(xiàn)一些故障,如電源掉電、存儲器讀出出錯、運算溢出,還有非法指令、存儲器超量裝載、信息校驗出錯等。盡管故障出現(xiàn)的概率較小,但是一旦出現(xiàn)故障將使整個系統(tǒng)癱瘓。有了中斷系統(tǒng)后,當(dāng)出現(xiàn)上述情況時,CPU就轉(zhuǎn)去執(zhí)行故障處理程序而不必停機。中斷系統(tǒng)能在故障出現(xiàn)時發(fā)出中斷信號,調(diào)用相應(yīng)的處理程序,將故障的危害降低到最低程度,并請求系統(tǒng)管理員排除故障。

1.中斷源

微型計算機中能引起中斷的外部設(shè)備或內(nèi)部原因稱為中斷源。不同的計算機的設(shè)置有所不同,微機系統(tǒng)的中斷源一般有以下幾種:

(1)一般的輸入/輸出設(shè)備,如鍵盤、打印機等。

(2)實時時鐘。在微機應(yīng)用系統(tǒng)中,常遇到定時檢測與時間控制,這時可采用外部時鐘電路進行定時,CPU可發(fā)出命令啟動時鐘電路開始計時,待定時時間到,時鐘電路就會向CPU發(fā)出中斷請求,由CPU進行處理。

(3)故障源。計算機內(nèi)部設(shè)有故障自動檢測裝置,如遇到電源掉電、運算溢出、存儲器出錯等意外事件時,都能使CPU中斷,進行相應(yīng)處理。

(4)軟件中斷。用戶編程時使用的中斷指令,以及為調(diào)試程序而人為設(shè)置的斷點都可以引起軟件中斷。

當(dāng)中斷源需要CPU服務(wù)時,是以中斷申請的方式進行的,外部中斷請求的方式通常有電平觸發(fā)和邊沿觸發(fā)兩種。

2.?8086/8088的中斷類型

8086/8088?CPU有一個簡單而靈活的中斷系統(tǒng),采用矢量型的中斷結(jié)構(gòu),共有256個中斷矢量號,又稱中斷類型號。中斷可以由外部設(shè)備啟動,也可以由軟件中斷指令啟動,在某些情況下,也可由CPU自身啟動。8086?CPU中斷分類如圖6-6所示。圖6-6

8086?CPU中斷分類

1)硬件中斷

硬件中斷是由CPU的外部中斷請求信號觸發(fā)的一種中斷,分為非屏蔽中斷(NMI)和可屏蔽中斷(INTR)。

(1)非屏蔽中斷(NMI)。非屏蔽中斷是通過CPU的NMI(Non-MaskableInterrupt)引腳進入的,它不受中斷允許標(biāo)志IF的屏蔽,即使在關(guān)中斷(IF?=?0)的情況下,CPU也能在當(dāng)前指令執(zhí)行完畢后就響應(yīng)NMI上的中斷請求,并且在整個系統(tǒng)中只能有一個非屏蔽中斷。非屏蔽中斷的類型號為2,所以,非屏蔽中斷處理子程序的入口地址放在0段的0008H、0009H、000AH和000BH這四個單元中。

當(dāng)NMI引腳上出現(xiàn)中斷請求時,不管CPU當(dāng)前正在做什么事情,都會響應(yīng)這個中斷請求而進入對應(yīng)的中斷處理,可見NMI中斷優(yōu)先級非常高。正因為如此,除了系統(tǒng)有十分緊急的情況以外,應(yīng)該盡量避免引起這種中斷。在實際系統(tǒng)中,非屏蔽中斷一般用來處理系統(tǒng)的重大故障,比如系統(tǒng)掉電處理常常通過非屏蔽中斷處理程序執(zhí)行。

當(dāng)遇到掉電事故時,電源系統(tǒng)要通過CPU的NMI引腳向CPU發(fā)出非屏蔽中斷請求。CPU接受這一請求后,不管當(dāng)前在做什么,都會停下來,而立即轉(zhuǎn)到非屏蔽中斷處理子程序。非屏蔽中斷子程序用于在晶體振蕩器停振之前對現(xiàn)場作出緊急處理,一般采用以下措施:

①把現(xiàn)場的數(shù)據(jù)立即轉(zhuǎn)移到非易失性的存儲器中,等電源恢復(fù)后繼續(xù)執(zhí)行中斷前的程序。

②啟動備用電源,在盡量短的時間內(nèi)用備用電源來維持微機系統(tǒng)的工作。

(2)可屏蔽中斷(INTR)??善帘沃袛嗍峭ㄟ^CPU的INTR(Interrupt)引腳進入的,并且只有當(dāng)中斷允許標(biāo)志IF為1時,可屏蔽中斷才能進入,如果中斷允許標(biāo)志IF為0,則可屏蔽中斷被禁止。

一般外部設(shè)備提出的中斷都是從CPU的INTR引腳引入的可屏蔽中斷。當(dāng)CPU接收到一個可屏蔽中斷請求信號時,如果標(biāo)志寄存器中的IF為1,那么CPU會在執(zhí)行完當(dāng)前指令后響應(yīng)中斷請求。至于IF的設(shè)置和清除,則可以通過指令或調(diào)試工具來實現(xiàn)。

2)軟件中斷

軟件中斷也稱內(nèi)部中斷,是由CPU檢測到異常情況或執(zhí)行軟件中斷指令所引起的一種中斷,通常有除法出錯中斷、單步中斷、溢出中斷、INTn指令中斷、斷點中斷等。

(1)除法出錯中斷。當(dāng)執(zhí)行除法指令時,若發(fā)現(xiàn)除數(shù)為0或商超過了機器所能表達數(shù)的范圍,則立即產(chǎn)生一個中斷類型碼為0的內(nèi)部中斷。一般該中斷的服務(wù)處理都由操作系統(tǒng)安排。

(2)單步中斷。若TF?=?1,則CPU處于單步工作方式,即每執(zhí)行完一條指令之后就自動產(chǎn)生一個中斷類型碼為1的內(nèi)部中斷,使得指令的執(zhí)行成為單步執(zhí)行方式。

單步執(zhí)行方式為系統(tǒng)提供了一種方便的調(diào)試手段,成為能夠逐條指令地觀察系統(tǒng)操作的一個窗口。如Debug中的跟蹤命令,就是將標(biāo)志TF置1,進而去執(zhí)行一個單步中斷服務(wù)程序,以跟蹤程序的具體執(zhí)行過程,找出程序中的問題或錯誤所在。需要說明的是,在所有類型的中斷處理過程中,CPU會自動地把狀態(tài)標(biāo)志壓入堆棧,然后清除TF和IF。因此,當(dāng)CPU進入單步處理程序時,就不再處于單步工作方式,而以正常方式工作。只有在單步處理結(jié)束后,從堆棧中彈出原來的標(biāo)志,才使CPU返回到單步工作方式。

8086指令系統(tǒng)中沒有設(shè)置或清除TF標(biāo)志的指令,但指令系統(tǒng)中的PUSHF和POPF為程序員提供了置位或復(fù)位TF的手段。例如,若TF?=?0,下列指令序列可使TF置位:

PUSHF

POP AX

OR AX,0100H

PUSH AX

POPF

(3)溢出中斷。若算法操作結(jié)果產(chǎn)生溢出(OF?=?1),則執(zhí)行INTO指令后立即產(chǎn)生一個中斷類型碼為4的中斷。溢出中斷為程序員提供了一種處理算術(shù)運算出現(xiàn)溢出的手段,它通常和算術(shù)指令功能配合使用。

(4)?INTn指令中斷和斷點中斷。中斷指令I(lǐng)NTn的執(zhí)行也會引起內(nèi)部中斷,其中斷類型碼由指令中的n指定,該類指令就稱為軟中斷指令。通常指令的代碼為兩個字節(jié)代碼,第一字節(jié)為操作碼,第二字節(jié)為中斷類型碼。但是中斷類型碼為3的軟中斷指令卻是單字節(jié)指令,因而它能很方便地插入到程序的任何地方,專供在程序中設(shè)置斷點調(diào)試程序時使用,也稱為斷點中斷。插入INT3指令之處便是斷點,在斷點中斷服務(wù)程序中,可顯示有關(guān)的寄存器、存儲單元的內(nèi)容,以便程序員分析到斷點為止的程序運行是否正確。

還需指出,內(nèi)部中斷的類型碼是預(yù)定好的或包含在軟中斷指令中的,除單步中斷外,其他的內(nèi)部中斷不受狀態(tài)標(biāo)志影響,中斷后的服務(wù)處理須由用戶自行安排。

軟件中斷的特點如下:

①中斷矢量號由CPU自動提供,不需要執(zhí)行中斷響應(yīng)總線周期去讀取矢量號。

②除單步中斷外,所有內(nèi)部中斷都無法被禁止,即都不能通過執(zhí)行CLI指令使IF位清零來禁止對它們的響應(yīng)。

③除單步中斷外,任何內(nèi)部中斷的優(yōu)先權(quán)都比外部中斷的高。8086?CPU的中斷優(yōu)先權(quán)順序為內(nèi)部中斷(除法出錯中斷、INTn指令中斷、溢出中斷、斷點中斷)、非屏蔽中斷、可屏蔽中斷和單步中斷。

3.中斷優(yōu)先權(quán)

實際的中斷系統(tǒng)有多個中斷源,而中斷申請引腳往往只有一條中斷請求線。于是當(dāng)有多個中斷源同時請求時,CPU必須確定為哪一個中斷源服務(wù),即辨別優(yōu)先權(quán)最高的中斷源并且響應(yīng)之。當(dāng)CPU在處理中斷時,要能響應(yīng)更高級別的中斷申請,而屏蔽掉同級或較低級的中斷申請,這就是中斷優(yōu)先權(quán)問題。通常用以下兩種方法解決中斷優(yōu)先權(quán)的識別問題。

1)軟件查詢方法

采用軟件查詢方法時,中斷優(yōu)先權(quán)由查詢順序決定,先查詢的中斷源具有最高的優(yōu)先權(quán)。軟件查詢方法的接口電路如圖6-7所示。圖6-7軟件查詢方法的接口電路

使用軟件查詢方法需要配備一定的硬件,如必須設(shè)置一個中斷請求信號的鎖存接口,將各申請的請求信號鎖存下來,以便查詢。該方法首先要把外設(shè)的中斷請求觸發(fā)器組合成一個端口,供CPU查詢,同時把這些中斷請求信號相“或”后,作為INTR信號,這樣任一外設(shè)有請求都可向CPU送INTR信號。CPU響應(yīng)中斷后,讀入中斷寄存器的內(nèi)容并逐位檢測它們的狀態(tài),若有中斷請求(相應(yīng)位為1),就轉(zhuǎn)到相應(yīng)的服務(wù)程序入口,檢測的順序就是優(yōu)先級的順序。軟件查詢方法的程序流程圖如圖6-8所示。圖6-8軟件查詢方法的程序流程圖

軟件查詢方法的優(yōu)點是電路簡單。軟件查詢的順序就是中斷優(yōu)先權(quán)的順序,不需要專門的優(yōu)先權(quán)排隊電路,可以直接通過修改軟件查詢順序來修改中斷優(yōu)先權(quán),不必更改硬件。但當(dāng)中斷源個數(shù)較多時,由逐位檢測查詢到轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序所耗費的時間較長,中斷響應(yīng)速度慢,服務(wù)效率低。圖6-9硬件優(yōu)先權(quán)排隊電路

若設(shè)備1沒有中斷請求,則中斷響應(yīng)輸出Q1為低電平,即Q1?=?0,此時A2輸出為高電平,中斷響應(yīng)信號可以通過門A2傳給下一設(shè)備2。若此時Q2?=?1,則B1輸出為高,控制轉(zhuǎn)向中斷服務(wù)程序2;B2輸出為低,屏蔽以下各級。若Q2?=?0,則中斷響應(yīng)信號傳至中斷設(shè)備3,其余各級類推。

綜上所述,在硬件優(yōu)先權(quán)排隊電路中,若上一級中斷響應(yīng)傳遞出的信號為“0”,則屏蔽本級和所有的低級中斷;若上一級中斷響應(yīng)傳遞輸出的信號為“1”,則在本級有中斷請求時,轉(zhuǎn)去執(zhí)行本級的中斷服務(wù)程序,且使本級傳遞至下級的中斷響應(yīng)輸出為“0”,屏蔽所有低級中斷;若本級沒有中斷請求,則允許下一級中斷。故在硬件優(yōu)先權(quán)排隊電路中,排在最前面的中斷源優(yōu)先權(quán)最高。

4.中斷管理

8086?CPU可管理256個中斷。每個中斷都指定一個中斷矢量號,每一個中斷矢量號都與一個中斷服務(wù)程序相對應(yīng)。中斷服務(wù)程序的入口地址存放在內(nèi)存的中斷矢量表內(nèi)。中斷矢量表是中斷矢量號與它相應(yīng)的中斷服務(wù)程序的轉(zhuǎn)換表。8086以中斷矢量為索引號,從中斷矢量表中取得中斷服務(wù)程序的入口地址。

在8086/8088微機系統(tǒng)的內(nèi)存中,把00000H~003FFH區(qū)域設(shè)置為一個中斷向量表。每個中斷向量占4個存儲單元。其中:前兩個單元存放中斷子程序入口地址的偏移量(IP),低位在前,高位在后;后兩個單元存放中斷子程序入口地址的段地址(CS),也是低位在前,高位在后。在中斷向量表中,這些中斷是按中斷類型的序號從0單元開始順序排列的。8086/8088的中斷向量表見圖6-10。圖6-108086/8088的中斷向量表

中斷矢量表分為三部分:

(1)專用中斷:類型0~類型4,其中斷服務(wù)程序的入口地址由系統(tǒng)負責(zé)裝入,用戶不能隨意修改。

(2)備用中斷:類型5~類型31,這是Intel公司為軟、硬件開發(fā)保留的中斷類型,一般不允許用戶改作其他用途。

(3)用戶中斷:類型32~類型255,為用戶可用中斷,其中斷服務(wù)程序的入口地址由用戶程序負責(zé)裝入。

在一個具體的系統(tǒng)中,經(jīng)常并不需要高達256個中斷,所以系統(tǒng)中也不必將00000~003FFH都留出來存放中斷向量,這種情況下,系統(tǒng)只需分配對應(yīng)的存儲空間給已經(jīng)定義的中斷類型。

5.中斷處理過程

如圖6-11所,微機系統(tǒng)的中斷處理過程大致分為中斷請求、中斷響應(yīng)、中斷處理和中斷返回四個過程,這些過程有的是通過硬件電路完成的,有的是通過程序員編程實現(xiàn)的。圖6-11中斷處理過程

1)中斷請求

CPU在每條指令執(zhí)行結(jié)束后查詢有無中斷請求信號。若查詢到有中斷請求,并且在允許響應(yīng)中斷的情況下,系統(tǒng)自動進入中斷響應(yīng)周期,由硬件完成關(guān)中斷、保存斷點、取中斷服務(wù)程序的入口地址等一系列操作,而后轉(zhuǎn)向中斷服務(wù)程序執(zhí)行中斷處理。

2)中斷響應(yīng)

CPU接收到外設(shè)的中斷請求信號時,若為非屏蔽中斷請求,則CPU執(zhí)行完現(xiàn)行指令后,就立即響應(yīng)中斷;若為可屏蔽中斷請求,能否響應(yīng)中斷則取決于CPU的中斷允許觸發(fā)器的狀態(tài)。只有當(dāng)其為“1”(即允許中斷)時,CPU才能響應(yīng)可屏蔽中斷;若其為“0”(即禁止中斷時),即使有可屏蔽中斷請求,CPU也不響應(yīng)。CPU要響應(yīng)可屏蔽中斷請求,必須滿足以下三個條件:

(1)無總線請求;

(2)?CPU允許中斷;

(3)?CPU執(zhí)行完現(xiàn)行指令。

3)中斷處理

中斷處理就是執(zhí)行中斷服務(wù)程序中規(guī)定的操作,主要操作如下:

(1)保護現(xiàn)場:為了不破壞主程序中使用的寄存器的內(nèi)容,必須用入棧指令PUSH將有關(guān)寄存器的內(nèi)容入棧保護。

(2)開中斷:為了實現(xiàn)中斷嵌套,需要安排一條開中斷指令,使系統(tǒng)處于開中斷狀態(tài)。

(3)中斷服務(wù):CPU通過執(zhí)行中斷服務(wù)程序,完成對中斷情況的處理。

4)中斷返回

中斷返回由中斷服務(wù)程序中的中斷返回指令I(lǐng)RET來完成。中斷返回時,要進行以下操作:

(1)關(guān)中斷:使現(xiàn)場的恢復(fù)工作不被打擾。

(2)恢復(fù)現(xiàn)場:在返回主程序之前要將用戶保護的寄存器內(nèi)容從堆棧中彈出,以便能正確執(zhí)行主程序?;謴?fù)現(xiàn)場用POP指令,彈出時的順序與入棧的順序正好相反。

(3)開中斷:使CPU能繼續(xù)接收中斷請求。

6.中斷處理子程序的結(jié)構(gòu)模式

所有的中斷處理子程序都有如下的結(jié)構(gòu)模式:

(1)中斷處理子程序的開始必須通過一系列推入堆棧指令來進一步保護中斷時的現(xiàn)場,即保護CPU各寄存器的值。

(2)一般應(yīng)用指令設(shè)置中斷允許標(biāo)志IF來開放中斷,以允許級別高的中斷請求進入。

(3)中斷處理的具體內(nèi)容是中斷處理子程序的主要部分。

(4)中斷處理子程序的尾部是一系列彈出堆棧指令,以使各寄存器恢復(fù)進入中斷處理時的值。

(5)中斷返回指令的執(zhí)行會使堆棧中保存的斷點值和標(biāo)志值分別裝入IP、CS和標(biāo)志寄存器。6.2.2可編程中斷控制芯片8259A

為了使多個外部中斷源共享中斷資源,必須解決幾個問題。例如,若微處理器只有一根中斷請求輸入線,則無法同時處理多個中斷源發(fā)出的中斷請求信號。另外,如何區(qū)分中斷向量、如何判定各中斷源的優(yōu)先級別等問題也需要解決。這就需要有一個專門的控制電路在微處理器的控制下去管理那些中斷源并處理它們發(fā)出的中斷請求信號。這種專門管理中斷源的控制電路就是中斷控制器。可編程中斷控制器8259A就是為達到這個目標(biāo)而設(shè)計的中斷優(yōu)先級管理電路,它具有如下功能:

(1)接收多個外部中斷源的中斷請求,并進行優(yōu)先級別判斷,選中當(dāng)前優(yōu)先級別最高的中斷請求,再將此請求送到微處理器的中斷輸入端。

(2)具有提供中斷向量、屏蔽中斷輸入等功能。

(3)可用于管理8級優(yōu)先權(quán)中斷,也可將多片8259A通過級聯(lián)方式構(gòu)成最多可達64級優(yōu)先權(quán)中斷管理系統(tǒng)。8259A管理的8級中斷對應(yīng)的服務(wù)程序入口地址構(gòu)成的中斷向量表存放在內(nèi)存固定區(qū)域中。

(4)具有多種工作方式,自動提供中斷服務(wù)程序入口地址,使用靈活、方便。

1.?8259A芯片的內(nèi)部結(jié)構(gòu)

8259A可編程中斷控制器有28條引腳,采用雙列直插式封裝,各引腳排列見圖6-12。8259A芯片的內(nèi)部結(jié)構(gòu)見圖6-13。圖6-12

8259A芯片的引腳排列圖6-13

8259A芯片的內(nèi)部結(jié)構(gòu)

(1)數(shù)據(jù)總線緩沖器:這是一個雙向八位三態(tài)緩沖器,由它構(gòu)成8259A與CPU之間的數(shù)據(jù)接口,是8259A與CPU交換數(shù)據(jù)的必經(jīng)之路。

(2)讀/寫控制電路:用來接收來自CPU讀/寫控制命令和片選控制信息。由于一片8259A只占兩個I/O端口地址,可用末位地址碼A0來選端口。當(dāng)CPU執(zhí)行OUT指令時,

信號與A0配合,將CPU通過數(shù)據(jù)總線(D7~D0)送來的控制字寫入8259A中有關(guān)的控制寄存器;當(dāng)CPU執(zhí)行IN指令時,

信號與A0配合,將8259A中內(nèi)部寄存器的內(nèi)容通過數(shù)據(jù)總線傳送給CPU。

(4)中斷請求寄存器(IRR):這是一個八位寄存器,用來存放由外部輸入的中斷請求信號IR7~IR0。當(dāng)某一個IRi端呈現(xiàn)高電平時,該寄存器的相應(yīng)位置“1”,顯然最多允許八個中斷請求信號同時進入,這時,IRR寄存器將被置成全“1”。

(5)中斷服務(wù)寄存器(ISR):這是一個八位寄存器,用來記錄正在處理中的中斷請求。當(dāng)任何一級中斷被響應(yīng),CPU正在執(zhí)行它的中斷服務(wù)程序時,ISR中相應(yīng)位置“1”,一直保持到該級中斷處理過程結(jié)束為止。在多重中斷情況下,ISR中可有多位被同時置“1”。

(6)中斷屏蔽寄存器(IMR):這是一個八位寄存器,用來存放對各級中斷請求的屏蔽信息。當(dāng)IMR中某一位置“l(fā)”時,表示禁止這一級中斷請求進入系統(tǒng)。通過IMR可實現(xiàn)對各級中斷的有選擇的屏蔽。

(7)優(yōu)先權(quán)判別器(PR):用來識別各中斷請求信號的優(yōu)先級別。當(dāng)多個中斷請求信號同時產(chǎn)生時,由PR判定當(dāng)前哪一個中斷請求具有最高優(yōu)先級,于是系統(tǒng)首先響應(yīng)這一級中斷,轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序。當(dāng)出現(xiàn)多重中斷時,由PR判定是否允許所出現(xiàn)的中斷去打斷正在處理的中斷而被優(yōu)先處理。一般處理原則是允許高級中斷打斷低級中斷,而不允許低級中斷打斷高級中斷,也不允許同級中斷互相打斷。

(8)控制電路:是8259A內(nèi)部的控制器。根據(jù)中斷請求寄存器(IRR)的置位情況和優(yōu)先權(quán)判別器(PR)的判定結(jié)果,向8259A內(nèi)部其他部件發(fā)出控制信號,并向CPU發(fā)出中斷請求信號INT和接收來自CPU的中斷響應(yīng)信號

,控制8259A進入中斷服務(wù)狀態(tài)。實際上,8259A芯片是在控制電路控制之下構(gòu)成的一個有機整體。

2.?8259A的中斷管理方式

8259A具有非常靈活的中斷管理方式,可滿足使用者的各種不同要求。而中斷優(yōu)先權(quán)是管理的核心問題。8259A對中斷的管理可分為對中斷優(yōu)先權(quán)的管理和對中斷結(jié)束的管理。

1)對中斷優(yōu)先權(quán)的管理

8259A對中斷優(yōu)先權(quán)的管理,可概括為完全嵌套方式、自動循環(huán)方式和中斷屏蔽方式。

(1)完全嵌套方式。完全嵌套方式是8259A被初始化后自動進入的基本工作方式。在這種方式下,由各個IRi端引入的中斷請求具有固定的中斷級別,IR0具有最高優(yōu)先級,IR7具有最低優(yōu)先級,其他級順序類推。采用完全嵌套方式時,ISR中某位置“1”,表示CPU當(dāng)前正在處理這一級中斷請求。8259A禁止與它同級或比它級別低的其他中斷請求進入,但允許比它級別高的中斷請求進入,實現(xiàn)中斷嵌套。

(2)自動循環(huán)方式。在完全嵌套方式中,中斷請求IR7~IR0的優(yōu)先級別是固定不變的,這使得從IR0引入的中斷總具有最高的優(yōu)先級。但在某些情況下,需要以某種策略改變這種優(yōu)先級別。自動循環(huán)方式是改變中斷請求優(yōu)先級別的策略之一,其基本思想是:每當(dāng)任何一級中斷被處理完,它的優(yōu)先級別就被改變?yōu)樽畹图?,而將最高級賦給原來比它低一級的中斷請求。

(3)中斷屏蔽方式。用中斷屏蔽方式管理優(yōu)先權(quán)有以下兩種方法:

①普通屏蔽方式:將中斷屏蔽寄存器(IMR)中的某一位或某幾位置“1”,即可將相應(yīng)的中斷級的中斷請求屏蔽掉。

②特殊屏蔽方式:當(dāng)CPU正在處理某級中斷時,要求僅對本級中斷進行屏蔽,而允許其他優(yōu)先級比它高或低的中斷進入系統(tǒng),可以在中斷服務(wù)程序執(zhí)行期間動態(tài)地改變系統(tǒng)優(yōu)先級。對8259A進行初始化時,可利用控制寄存器的SMM位的置位來使8259A進入這種特殊屏蔽方式。

2)對中斷結(jié)束的管理

當(dāng)8259A響應(yīng)某一級中斷而為其服務(wù)時,中斷服務(wù)寄存器(ISR)的相應(yīng)位置“1”,當(dāng)有更高級的中斷請求進入時,ISR的相應(yīng)位又要置“1”,因此,中斷服務(wù)寄存器(ISR)中可有多位同時置“1”。在中斷服務(wù)結(jié)束時,ISR的相應(yīng)位應(yīng)清“0”,以便再次接收同級別的中斷。中斷結(jié)束的管理就是用不同的方式使ISR的相應(yīng)位清“0”,并確定隨后的優(yōu)先權(quán)排隊順序。8259A中斷結(jié)束的管理可分為以下三種情況:

(1)完全嵌套方式。8259A在完全嵌套方式下,可采用以下三種中斷結(jié)束方式:

①普通EOI方式。當(dāng)任何一級中斷服務(wù)程序結(jié)束時,只給8259A傳送一個EOI結(jié)束命令,8259A收到這個EOI命令后,自動將ISR中級別最高的置“1”位清“0”。這種結(jié)束方式最簡單,但是只有當(dāng)前的結(jié)束中斷優(yōu)先級別最高時可用。也就是說,如果在中斷服務(wù)程序中曾經(jīng)修改過中斷級別,則決不能采用這種方式,否則會造成嚴重后果。

②特殊EOI方式。在普通EOI方式的基礎(chǔ)上,當(dāng)中斷服務(wù)程序結(jié)束給8259A發(fā)出EOI命令的同時,將當(dāng)前結(jié)束的中斷級別也傳送給8259A,這種方式稱為特殊EOI方式。這種結(jié)束方式下,8259A將ISR中指定級別的相應(yīng)位清“0”。顯然,這種結(jié)束方式可在任何情況下使用。

③自動EOI方式。任何一級中斷被響應(yīng)后,ISR中相應(yīng)位置“1”,CPU將進入中斷響應(yīng)總線周期,在第二個中斷響應(yīng)信號

結(jié)束時,自動將ISR中相應(yīng)位清“0”,這種方式稱為自動EOI方式。采用這種結(jié)束方式,當(dāng)中斷服務(wù)程序結(jié)束時,CPU不用向8259A回送任何信息,這顯然是一種最簡單的結(jié)束方式。

(2)自動循環(huán)方式。實現(xiàn)自動循環(huán)方式有以下三種不同的做法:

①普通EOI循環(huán)方式。當(dāng)任何一級中斷被處理完后,CPU給8259A回送普通EOI命令,8259A接收到這一命令后將ISR中優(yōu)先級最高的置“1”位清“0”,并賦給它最低優(yōu)先級,而將最高優(yōu)先級賦給原來比它低一級的中斷請求,其他中斷請求的優(yōu)先級別以循環(huán)方式類推。

②自動EOI循環(huán)方式。任何一級中斷響應(yīng)后,在中斷響應(yīng)總線周期中,由第二個中斷響應(yīng)信號

的后沿自動將ISR中相應(yīng)位清“0”,并立即改變各級中斷的優(yōu)先級別,其改變方案與普通EOI循環(huán)方式的相同。

③特殊EOI循環(huán)方式。特殊EOI循環(huán)方式具有更大的靈活性,它可根據(jù)用戶的要求將最低優(yōu)先級賦給指定的中斷源。用戶可在主程序或中斷服務(wù)程序中利用置位優(yōu)先權(quán)命令把最低優(yōu)先級賦給某一中斷源IRi,于是最高優(yōu)先級便賦給IRi+1,其他各級按循環(huán)方式類推。

3.?8259A的中斷響應(yīng)過程

8259A應(yīng)用于8086?CPU系統(tǒng)中,其中斷響應(yīng)過程如下:

(1)當(dāng)中斷請求線(IR0~IR7)上有1條或若干條為高電平時,則使中斷請求寄存器(IRR)的相應(yīng)位置位。

(2)當(dāng)IRR的某一位被置“1”時,就會與IMR中相應(yīng)的屏蔽位進行比較。若該屏蔽位為1,則封鎖該中斷請求;若該屏蔽位為0,則中斷請求被發(fā)往優(yōu)先權(quán)判別器。

(3)優(yōu)先權(quán)判別器接收到中斷請求后,分析其優(yōu)先權(quán),把當(dāng)前優(yōu)先權(quán)最高的中斷請求信號由INT引腳輸出,送到CPU的INTR端。

4.?8259A的編程

可編程中斷控制器8259A的初始化操作可明確地分成兩個部分:首先通過預(yù)置命令字(ICWi)對8259A進行初始化;然后8259A自動進入操作模式。在8259A的操作過程中可通過操作命令字(OCWi)來定義8259A的操作方式,并且在8259A的操作過程中允許重置操作命令字,以動態(tài)地改變8259A的操作與控制方式。

每片8259A包含兩個內(nèi)部端口地址,一個偶地址(A0?=?0),一個奇地址(A0?=?1),其他高位地址碼由用戶定義,用來作為8259A的片選信號(

)。

1)預(yù)置命令字

8259A的預(yù)置命令字有ICW1~ICW4四個。ICW1和ICW2是必須的,ICW3是級聯(lián)使用時才需要設(shè)置的,ICW4只在8086/8088-8259A配置系統(tǒng)中需要設(shè)置。

(1)芯片控制初始化命令字ICW1。

芯片控制初始化命令字ICW1的格式如下:

端口地址為偶地址(A0?=?0),D4?=?1表示當(dāng)前寫入8259A的是預(yù)置命令字ICW1。

IC4位用來說明是否需要設(shè)置ICW4。對于8086/8088系統(tǒng)中使用的8259A,IC4位恒置1,需要設(shè)置ICW4來對8259A進行初始化。

SNGL位用來說明中斷系統(tǒng)中是一片8259A單獨使用,還是多片8259A級聯(lián)使用。單級使用時,SNGL位應(yīng)置“1”。

ADI位對8086/8088系統(tǒng)無效。

LTIM位用來定義中斷請求信號的觸發(fā)方式。LTIM?=?1時,表示IRi端出現(xiàn)高電平為有效;LTIM?=?0時,表示IRi端出現(xiàn)由低電平向高電平的正跳變沿為有效。(2)中斷類型碼初始化命令字ICW2。

中斷類型碼初始化命令字ICW2的格式如下:ICW2規(guī)定中斷類型號字節(jié),由它定義中斷類型碼的高5位。低3位取決于中斷請求是由IR7~IR0中哪一個端輸入。在PC/XT中,T7~T3?=?00001,所以對應(yīng)的中斷向量是08H~0FH。

(3)主/從片初始化命令字ICW3。

當(dāng)ICW1中的SNGL位為0時,表示工作于級聯(lián)方式下,需要寫ICW3設(shè)置8259A的狀態(tài)。

對于主片,ICW3的格式如下:

D7~D0對應(yīng)于IR7~IR0引腳上的連接情況,當(dāng)某一引腳上接有從片時,對應(yīng)位為1,否則為0。對于從片,ICW3的格式如下:

ID2~ID0用來表明該從8259A是接在主8259A的哪個IR端上。例如,某片從8259A的ID2ID1ID0?=?100,則表示該從8259A是接在主8259A的IR4端上。(4)方式控制初始化命令字ICW4。

方式控制初始化命令字ICW4的格式如下:端口地址為奇地址(A0?=?1)。

PM位對于8086/8088系統(tǒng)配置來說恒置“1”。AEOI用來定義是否采用自動EOI方式。SFNM用來定義在級聯(lián)方式下是否采用特殊完全嵌套方式,在單級使用方式下SFNM位無效。

當(dāng)8088系統(tǒng)中的8259A單級使用時,其端口地址為80H和81H,可用下面的初始化程序段來寫入預(yù)置命令字ICW1~ICW4:

MOV AL,13H

OUT 80H,AL

MOV AL,18H

OUT 81H,AL

MOV AL,01H

OUT 81H,AL

2)操作命令字

8259A經(jīng)預(yù)置命令字后已進入工作狀態(tài),可接收來自IRi端的中斷請求。在8259A工作期間,通過操作命令字OCW可使其按不同的方式操作。操作命令字有OCW1~OCW3三個,可獨立使用。

(1)中斷屏蔽操作命令字OCW1。

端口地址為奇地址(A0?=?1),OCW1內(nèi)容被直接置入中斷屏蔽寄存器(IMR)中,其格式如下:

Mi為1,表示屏蔽由IRi引入的中斷請求;Mi為0,表示允許IRi端中斷請求進入。

送預(yù)置命令字ICW1后,IMR的內(nèi)容全為0,此時,寫入操作命令字OCW1,可以改變IMR的內(nèi)容。IMR可以讀出,供CPU使用。

Mi為1,表示屏蔽由IRi引入的中斷請求;Mi為0,表示允許IRi端中斷請求進入。

送預(yù)置命令字ICW1后,IMR的內(nèi)容全為0,此時,寫入操作命令字OCW1,可以改變IMR的內(nèi)容。IMR可以讀出,供CPU使用。

(2)控制中斷結(jié)束和優(yōu)先權(quán)循環(huán)的操作命令字OCW2。

控制中斷結(jié)束和優(yōu)先權(quán)循環(huán)的操作命令字OCW2的格式如下:

端口地址為偶地址(A0?=?0),D4D3?=?00是OCW2的標(biāo)志位。

R為優(yōu)先權(quán)循環(huán)位。R?=?1,為循環(huán)優(yōu)先權(quán);R?=?0,為固定優(yōu)先權(quán)。

SL為選擇指定的IR級別位。SL?=?1時,操作在L2~L0指定的IR編碼級別上執(zhí)行;SL?=?0時,L2~L0無效。

EOI是中斷結(jié)束命令位。

由R、SL、EOI三位編碼可定義多種不同的中斷結(jié)束方式或發(fā)出置位優(yōu)先權(quán)命令:

①三位編碼為“001”,采用普通EOI結(jié)束方式。一旦中斷服務(wù)程序結(jié)束,將給8259A送出EOI結(jié)束命令,8259A將ISR中當(dāng)前級別最高的置“1”位清“0”。

②三位編碼為“011”,采用特殊EOI結(jié)束方式。一旦中斷處理結(jié)束,除給8259A送EOI結(jié)束命令外,還由L2L1L0字段給出當(dāng)前結(jié)束的是哪一級中斷,8259A將ISR中指定級別的相應(yīng)位清“0”。

③三位編碼為“101”,普通EOI循環(huán)方式。一旦中斷結(jié)束,8259A一方面將ISR中當(dāng)前級別最高的置“1”位清“0”,另一方面將最低優(yōu)先級賦給剛結(jié)束的中斷請求IRi,將最高優(yōu)先級賦給中斷請求IRi+1,其他中斷請求的優(yōu)先級別按循環(huán)方式順序改變。

④三位編碼為“111”,特殊EOI循環(huán)方式。一旦中斷結(jié)束,8259A將ISR中由L2L1L0字段給定級別的相應(yīng)位清“0”,并將最低優(yōu)先級賦給這一中斷請求,最高優(yōu)先級賦給原來比它低一級的中斷請求,其他中斷請求的優(yōu)先級按循環(huán)方式順序改變。

⑤三位編碼為“100”和“000”,自動EOI循環(huán)方式(置位)和取消自動EOI循環(huán)方式(復(fù)位)。一旦被定義為自動EOI循環(huán)方式,CPU會在中斷響應(yīng)總線周期中第二個中斷響應(yīng)信號INTA結(jié)束時將ISR中的相應(yīng)位置“0”,并將最低優(yōu)先級賦給這一級,最高優(yōu)先級賦給原來比它低一級的中斷請求,其他中斷請求的優(yōu)先級按循環(huán)方式分別賦給。

⑥三位編碼為“110”時,表示向8259A發(fā)出置位優(yōu)先權(quán)命令,將最低優(yōu)先級賦給由L2LIL0字段所給定的中斷請求IRi,其他中斷請求的優(yōu)先級按循環(huán)方式分別賦給。(3)設(shè)置屏蔽方式和讀狀態(tài)控制字OCW3。

OCW3的格式如下:

OCW3主要控制8259A的中斷屏蔽、查詢和讀寄存器等的狀態(tài),端口地址仍為偶地址(A0?=?0),D4D3(=?01)作為OCW3的標(biāo)志位可與OCW2區(qū)別開。

ESMM為允許或禁止SMM位起作用的控制位。ESMM?=?1,表示允許SMM起作用;ESMM?=?0,表示禁止SMM起作用。

SMM為特殊屏蔽方式選擇位。當(dāng)ESMM?=?1時,

SMM?=?1為選擇特殊屏蔽方式,SMM?=?0為清除特殊屏蔽方式。

P為查詢命令位。P?=?1時是查詢命令;P?=?0時不是查詢命令。

RR為讀寄存器命令位。RR?=?1,表示CPU要求讀取8259A中某寄存器內(nèi)容。

RIS位用來為讀寄存器命令確定讀取對象。RIS?=?0時表示要求讀IRR中的內(nèi)容;RIS?=?1時表示要求讀ISR中的內(nèi)容。

操作命令字OCW1~OCW3可安排在預(yù)置命令字之后,用戶可根據(jù)需要在程序的任何位置上設(shè)置它們。當(dāng)需要讀取ISR或IRR中的內(nèi)容或需要查詢當(dāng)前8259A的中斷狀態(tài)時,都必須先定義OCW3,然后用IN指令讀入。如果只需要讀入IMR中的內(nèi)容,則不需要定義OCW3。由此看來,并不是任何時候都需要設(shè)置OCW3操作命令字的。6.2.3

8259A的應(yīng)用舉例

1.?8259A在PC/XT中的應(yīng)用

IBMPC/XT微機只使用一片8259A,即可處理8個外部中斷。如圖6-14所示,IRQ0接至系統(tǒng)板上定時器/計數(shù)器Intel8253通道0的輸出信號OUT0,用作微機系統(tǒng)的日時鐘中斷請求;IRQ1是鍵盤輸入接口電路送來的中斷請求信號,用來請求CPU讀取鍵盤掃描碼;IRQ2是系統(tǒng)保留的;另外5個請求信號接至I/O通道,由I/O通道擴展板電路產(chǎn)生。在I/O通道上,通常IRQ3用于第二個串行異步通信接口,IRQ4用于第一個串行異步通信接口,IRQ5用于硬盤適配器,IRQ6用于軟盤適配器,IRQ7用于并行打印機。圖6-14

PC/XT與8259A接口

在I/O地址空間中,分配給8259A的I/O端口地址為20H和21H。對8259A的初始化規(guī)定:邊沿觸發(fā)方式、緩沖器方式、中斷結(jié)束為EOI命令方式,中斷優(yōu)先權(quán)管理采用全嵌套方式。8級中斷源的類型碼為08H~0FH。

當(dāng)A0?=?1時,IMR中的內(nèi)容可以隨時方便地讀出。如在BIOS中,中斷屏蔽寄存器(IMR)的檢查程序如下:

2.?8259A在PC/AT中的應(yīng)用

在PC/AT中,共有兩片8259A,如圖6-15所示。由圖可見,主片8259A原來保留的IRQ2中斷請求端用于級聯(lián)從片8259A,所以相當(dāng)于主片IRQ2又擴展了8個中斷請求端IRQ8~IRQ15。圖6-15

PC/AT與8259A接口

主片的端口地址為20H、21H,中斷類型碼為08H~0FH;從片的端口地址為A0H、A1H,中斷類型碼為70H~77H。主片的8級中斷已被系統(tǒng)用盡,從片尚保留4級未用。其中IRQ0仍用于日時鐘中斷,IRQ1仍用于鍵盤中斷。擴展的IRQ8用于實時時鐘中斷,IRQ13來自協(xié)處理器80187。除上述中斷請求信號外,所有的其他中斷請求信號都來自I/O通道的擴展板。

2)級聯(lián)工作編程

當(dāng)來自某個從片的中斷請求進入服務(wù)時,主片的優(yōu)先權(quán)控制邏輯不封鎖從片,從而使來自從片的更高優(yōu)先級的中斷請求能被主片所識別,并向CPU發(fā)出中斷請求信號。

因此,當(dāng)中斷服務(wù)程序結(jié)束時必須用軟件來檢查被服務(wù)的中斷是否是該從片中唯一的中斷請求。先向從片發(fā)送一個EOI命令,清除已完成服務(wù)的ISR位,然后再讀出ISR中的內(nèi)容檢查它是否為0。若ISR中的內(nèi)容為0,則向主片發(fā)送一個EOI命令,清除與從片相對應(yīng)的ISR位;否則,就不向主片發(fā)送EOI命令,繼續(xù)執(zhí)行從片的中斷處理,直到ISR中的內(nèi)容為0,再向主片發(fā)送EOI命令。

6.3并行接口

6.3.1并行通信與并行接口

并行通信是把一個字符的各數(shù)位用幾條線同時進行傳輸,傳輸速度快,信息率高。但它比串行通信所用的電纜多,因此,并行通信常用在傳輸距離較短(幾米至幾十米)、數(shù)據(jù)傳輸率較高的場合。

實現(xiàn)并行通信的接口就是并行接口。一個并行接口可設(shè)計成只作為輸出接口(如一個并行接口連接一臺打印機),還可設(shè)計成只作為輸入接口(如一個并行接口連接卡片讀入機)。另外,一個并行接口也可設(shè)計成既作為輸入又作為輸出的接口,其實現(xiàn)方法有兩種:一種是利用同一個接口中的兩個通路,一個作為輸入通路,一個作為輸出通路;另一種是用一個雙向通路,既作為輸入又作為輸出。前一種方法用在主機需要同時輸入和輸出的情況,如此接口既接紙帶讀入機,又接紙帶穿孔機。后一種方法用在輸入、輸出動作并不同時進行的主機與外設(shè)之間,如連接兩臺磁盤驅(qū)動器。

圖6-16并行接口和外設(shè)連接示意圖

1.并行接口的輸入過程

外設(shè)首先將數(shù)據(jù)送給接口,并使?fàn)顟B(tài)線“數(shù)據(jù)輸入準備好”變?yōu)楦唠娖?。接口把?shù)據(jù)接收到數(shù)據(jù)輸入緩沖寄存器的同時,使“數(shù)據(jù)輸入回答”線變?yōu)楦唠娖?,作為對外設(shè)的響應(yīng)。外設(shè)接到此信號,便撤除數(shù)據(jù)和“數(shù)據(jù)輸入準備好”信號。數(shù)據(jù)到達接口后,接口會在狀態(tài)寄存器中設(shè)置“數(shù)據(jù)輸入準備好”狀態(tài)位,以便CPU對其進行查詢,接口也可以在此時向CPU發(fā)出一個中斷請求。所以,CPU既可以用軟件查詢方式,也可以用中斷方式來設(shè)法讀取接口中的數(shù)據(jù)。CPU從并行接口中讀取數(shù)據(jù)后,接口會自動清除狀態(tài)寄存器中的“數(shù)據(jù)輸入準備好”狀態(tài)位,并且使數(shù)據(jù)總線處于高阻狀態(tài)。此后,又開始下一個輸入過程。

2.并行接口的輸出過程

每當(dāng)外設(shè)從接口取走一個數(shù)據(jù)后,接口將狀態(tài)寄存器中的“數(shù)據(jù)輸出準備好”狀態(tài)位置“1”,以表示CPU當(dāng)前可以往接口中輸出數(shù)據(jù),供CPU查詢。此時,接口也可以向CPU發(fā)一個中斷請求。所以,CPU既可以用軟件查詢方式,也可以用中斷方式設(shè)法往接口中輸出一個數(shù)據(jù)。當(dāng)CPU輸出的數(shù)據(jù)到達接口的輸出緩沖寄存器中后,接口會自動清除“輸出準備好”狀態(tài)位,并且將數(shù)據(jù)送往外設(shè)。同時,接口往外設(shè)發(fā)送一個“驅(qū)動信號”來啟動外設(shè)接收數(shù)據(jù)。外設(shè)被啟動后,開始接收數(shù)據(jù),并往接口發(fā)送一個“數(shù)據(jù)輸出回答”信號。接口收到此信號后,便將狀態(tài)寄存器中的“數(shù)據(jù)輸出準備好”狀態(tài)位重新置“1”,以便CPU輸出下一個數(shù)據(jù)。6.3.2可編程并行通信接口芯片8255A

8255A是Intel86系列微處理器的配套并行接口芯片,它可為CPU與外設(shè)之間提供并行輸入/輸出的通道。由于8255A是可編程的,可以通過軟件來設(shè)置芯片的工作方式,所以,用8255A連接外設(shè)時,通常不用再附加外部電路,給使用者帶來很大方便。

1.?8255A芯片的內(nèi)部結(jié)構(gòu)及功能

8255A有40條引腳,如圖6-17所示。8255A的內(nèi)部主要有并行輸入/輸出端口(即端口A、B、C)、A組控制器、B組控制器、數(shù)據(jù)緩沖器及讀/寫控制邏輯。8255A芯片的內(nèi)部結(jié)構(gòu)如圖6-18所示。圖6-17

8255A芯片的引腳排列圖6-18

8255A芯片的內(nèi)部結(jié)構(gòu)

1)并行輸入/輸出端口(即端口A、B、C)

8255A芯片內(nèi)部包含三個8位端口,即端口A、B、C。其中:端口A包含一個8位數(shù)據(jù)輸出鎖存器和一個8位數(shù)據(jù)輸入鎖存器;端口B包含一個8位數(shù)據(jù)輸入/輸出鎖存器和一個8位數(shù)據(jù)輸入緩沖器;端口C包含一個數(shù)據(jù)輸出鎖存器和一個數(shù)據(jù)輸入緩沖器。必要時端口C可分成兩個4位端口,分別與端口A和端口B配合工作。通常將端口A和端口B定義為輸入/輸出的數(shù)據(jù)端口,而將端口C作為狀態(tài)或控制信息的傳送端口。

2)?A組和B組控制器

端口A與端口C的高4位(PC7~PC4)構(gòu)成A組,由A組控制部件實現(xiàn)控制功能;端口B與端口C的低4位(PC3~PC0)構(gòu)成B組,由B組控制部件實現(xiàn)控制功能。它們各有一個控制單元,可接收來自讀/寫控制部件的命令和CPU通過數(shù)據(jù)總線(D7~D0)送來的控制字,并根據(jù)它們來定義各個端口的操作方式。

3)數(shù)據(jù)緩沖器

數(shù)據(jù)總線緩沖器是一個三態(tài)雙向8位數(shù)據(jù)緩沖器,它是8255A與8086?CPU之間的數(shù)據(jù)接口。CPU執(zhí)行輸出指令時,可將控制字或數(shù)據(jù)通過數(shù)據(jù)總線緩沖器傳送給8255A。CPU執(zhí)行輸入指令時,8255A可將狀態(tài)信息或數(shù)據(jù)通過數(shù)據(jù)總線緩沖器向CPU輸入,因此它是CPU與8255A之間交換信息的必經(jīng)之路。

2.?8255A芯片的控制字及其工作方式

8255A中各端口有三種基本工作方式:工作方式0基本輸入/輸出方式、工作方式1選通輸入/輸出方式和工作方式2雙向傳送方式。

端口A可處于上述三種工作方式,端口B只可處于兩種工作方式(工作方式0和工作方式1),端口C常常被分成高4位和低4位兩部分,分別用來傳送數(shù)據(jù)或控制信息。用戶可用軟件來分別定義三個端口的工作方式,可使用的控制字有定義工作方式控制字和置位/復(fù)位控制字。

1)控制字

(1)定義工作方式控制字:其使用格式如圖6-19所示。通過定義工作方式控制字可將三個端口分別定義為三種不同狀態(tài)的組合,當(dāng)將端口A定義為工作方式1或工作方式2或?qū)⒍丝贐定義為工作方式1時,要求使用端口C的某些位作控制用,這時需要使用一個專門的置位/復(fù)位控制字來對控制端口C的各位分別進行置位/復(fù)位操作。圖6-19

8255A工作方式控制字的使

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論