第04章 并行輸入輸出技術(shù)1_第1頁
第04章 并行輸入輸出技術(shù)1_第2頁
第04章 并行輸入輸出技術(shù)1_第3頁
第04章 并行輸入輸出技術(shù)1_第4頁
第04章 并行輸入輸出技術(shù)1_第5頁
已閱讀5頁,還剩158頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第四章并行輸入/輸出技術(shù)4.1并行接口基本概念4.2簡單并行I/O接口-

82124.3可編程并行I/O接口-

8255A

目錄4.1并行接口基本概念1.并行接口并行通信由并行接口來完成的,在并行數(shù)據(jù)傳輸中并行接口連接CPU與并行外設(shè)的通道,并行接口中各位數(shù)據(jù)都是并行傳輸?shù)?,它以字?jié)(或字)為單位與I/O設(shè)備或被控對象進(jìn)行數(shù)據(jù)交換。并行通信以同步方式傳輸,其特點(diǎn)是:傳輸速度快;硬件開銷大;只適合近距離傳輸。4.1并行接口概念基本結(jié)構(gòu)接口電路的基本結(jié)構(gòu)數(shù)據(jù)線控制線狀態(tài)線DBCBAB數(shù)據(jù)輸入寄存器(or三態(tài)門)數(shù)據(jù)輸出寄存器(鎖存器)狀態(tài)寄存器(or三態(tài)門)命令寄存器譯碼電路控制邏輯基本結(jié)構(gòu)數(shù)據(jù)輸入/輸出寄存器——暫存輸入/輸出的數(shù)據(jù)命令寄存器——存放控制命令,用來設(shè)定接口功能、工作參數(shù)和工作方式。狀態(tài)寄存器——保存外設(shè)當(dāng)前狀態(tài),以供CPU讀取。一個并行接口中包括:圖4.1狀態(tài)信息控制信息數(shù)據(jù)信息。并行接口傳輸速率高,一般不要求固定格式,但不適合長距離數(shù)據(jù)傳輸串并接口⑴狀態(tài)信息

圖4.1

狀態(tài)信息表示外設(shè)當(dāng)前所處的工作狀態(tài)。例如,準(zhǔn)備好信號表示輸入設(shè)備已經(jīng)準(zhǔn)備好信息,可以和CPU交換數(shù)據(jù);忙信號(BUSY)表示輸出設(shè)備正在輸出信息,即在“忙”著,同時也等于指示CPU要處于等待狀態(tài)。⑵控制信息控制信息是由CPU發(fā)出的,用于控制外設(shè)接口的工作方式以及外設(shè)的啟動和停機(jī)信息等。⑶數(shù)據(jù)信息

圖4.1CPU與并行外設(shè)數(shù)據(jù)交換的內(nèi)容。狀態(tài)信息、控制信息和數(shù)據(jù)信息,通常都是通過數(shù)據(jù)總線傳送,這些信息在外設(shè)接口中分別存取在不同的口中。所謂口是指可以由CPU讀、寫的寄存器,這些口分別是狀態(tài)口、控制口和數(shù)據(jù)口,它們分別用來存放狀態(tài)信息、控制信息和數(shù)據(jù)信息。對于一個外設(shè)接口,常常需要幾個口才能滿足和協(xié)調(diào)外部設(shè)備的工作與要求,圖4.1是一個典型的并行接口與CPU、外設(shè)的連接圖。圖4.1并行接口與CPU、外設(shè)的連接圖4.12.并行接口的組成

圖4.1⑴狀態(tài)寄存器狀態(tài)寄存器用來存放外設(shè)的信息,CPU通過訪問這個寄存器來了解某個外設(shè)的狀態(tài),進(jìn)而控制外設(shè)的工作,以便與外設(shè)進(jìn)行數(shù)據(jù)交換。⑵控制寄存器并行接口中有一個控制寄存器,CPU對外設(shè)的操作命令都寄存在控制寄存器中。2、并行接口組成⑶數(shù)據(jù)緩沖寄存器

圖4.1

在并行接口中還設(shè)置了輸入緩沖寄存器和輸出緩沖寄存器,緩沖器是用來暫存數(shù)據(jù)。因?yàn)橥庠O(shè)與CPU交換數(shù)據(jù),CPU的速度遠(yuǎn)遠(yuǎn)高于外設(shè)的速度。例如,打印機(jī)的打印速度與CPU的速度相差的遠(yuǎn)不止是一個數(shù)量級,在并行接口中設(shè)置緩沖器,把要傳送的數(shù)據(jù)先放入緩沖器中,打印機(jī)按照安排好的打印隊(duì)列進(jìn)行打印,這樣可以保證輸入,輸出數(shù)據(jù)的可靠性。

3.數(shù)據(jù)輸入過程

圖4.1

數(shù)據(jù)輸入過程,指的是外設(shè)向CPU輸入數(shù)據(jù)。①當(dāng)外設(shè)將數(shù)據(jù)通過數(shù)據(jù)輸入線送給接口時,先使?fàn)顟B(tài)線“輸入數(shù)據(jù)準(zhǔn)備好”為高電平。然后通過接口把數(shù)據(jù)接收到輸入緩沖寄存器中,同時把“輸入回答”信號置成高電平“1”,并發(fā)給外設(shè)。②外設(shè)接到回答信號后,將撤消“輸入數(shù)據(jù)準(zhǔn)備好”的信號。當(dāng)接口收到數(shù)據(jù)后,會在狀態(tài)寄存器中設(shè)置“準(zhǔn)備好輸入”狀態(tài)位,以便CPU對其進(jìn)行查詢。3、數(shù)據(jù)輸入過程

③接口向CPU發(fā)出一個中斷請求信號,這樣CPU可以用軟件查詢方式,也可以用中斷的方式將接口中的數(shù)據(jù)輸入到CPU中。④CPU在接收到數(shù)據(jù)后,將“準(zhǔn)備好輸入”的狀態(tài)位自動清除,并使數(shù)據(jù)總線處于高阻狀態(tài)。準(zhǔn)備外設(shè)向CPU輸入下一個數(shù)據(jù)。圖4.1

4.數(shù)據(jù)輸出過程

圖4.1

數(shù)據(jù)輸出過程,指的是CPU向外設(shè)輸出數(shù)據(jù)。①當(dāng)外設(shè)從接口接收到一個數(shù)據(jù)后,接口的輸出緩沖寄存器“空”,使?fàn)顟B(tài)寄存的“輸出數(shù)據(jù)準(zhǔn)備好”狀態(tài)位置成高電平“1”,這表示CPU可以向外設(shè)接口輸出數(shù)據(jù),這個狀態(tài)位可供CPU查詢。②此時接口也可向CPU發(fā)出一個中斷請求信號,同上面的輸入過程相同,CPU可以用軟件查詢方式,也可以用中斷的方式將CPU中的數(shù)據(jù)通過接口輸出到外設(shè)中。當(dāng)輸出數(shù)據(jù)送到接口的輸出緩沖寄存器后,再輸出到外設(shè)。4、數(shù)據(jù)輸出過程

③與此同時,接口向外設(shè)發(fā)送一個啟動信號,啟動外設(shè)接收數(shù)據(jù)。外設(shè)接收到數(shù)據(jù)后,向接口回送一個“輸出回答”信號。④接口電路收到該信號后,自動將接口狀態(tài)寄存器中的“準(zhǔn)備好輸出”狀態(tài)位重新置為高電平“1”,通知CPU可以向外設(shè)輸出下一個數(shù)據(jù)。

圖4.1三態(tài)門:高電平、低電平、高阻態(tài)

通常一個器件中包含8個三態(tài)門常用芯片:74LS244

應(yīng)用例子:開關(guān)接口工作波形圖如下:例用三態(tài)門實(shí)現(xiàn)輸入輸出A0~A15IOR#譯碼輸出D0~D7開關(guān)狀態(tài)地址有效例1:74LS24483FCH~83FFH譯碼器例2:74LS273鎖存器:由D觸發(fā)器構(gòu)成通常一個器件包含8個D觸發(fā)器常用芯片:74LS27374LS374(具有三態(tài)輸出的鎖存器)應(yīng)用例子:發(fā)光二極管接口譯碼器=1=1.........+5VRD0|D7CPQ0Q7...D0~D7A0~A15IOW#R例3:綜合應(yīng)用根據(jù)開關(guān)狀態(tài)在7段數(shù)碼管上顯示數(shù)字或符號共陽極7段數(shù)碼管結(jié)構(gòu)用74LS273作為輸出接口,把數(shù)據(jù)送到7段數(shù)碼管74LS273的地址假設(shè)為F0H用74LS244作為輸入口,讀入開關(guān)K0~K3的狀態(tài)74LS244的地址假設(shè)為F1H當(dāng)開關(guān)的狀態(tài)分別為0000~1111時,在7段數(shù)碼管上對應(yīng)顯示’0’~’F’(7段碼表見下頁)例3:綜合應(yīng)用

符號形狀7段碼.gfedcba符號形狀7段碼.gfedcba’0’00111111’8’01111111’1’00000110’9’01100111’2’01011011’A’01110111’3’01001111’B’01111100’4’01100110’C’00111001’5’01101101’D’01011110’6’01111101’E’01111001’7’00000111’F’01110001例3:綜合應(yīng)用O1I1O2I2O3I3O4I4E1#

K0~K3+5VGG2AG2BCBA≥174LS244D0Q0|Q1D7Q2Q3Q4CPQ5Q6Q7

abcdefgDP7406反相器74LS273Rx8≥174LS138D0~D7IOW#IOR#Y0Y1F0H=0000000011110000F1H=0000000011110001&≥1A7~A4A15~A8A3A2A1A0D0D1D2D3譯碼器例3:綜合應(yīng)用相應(yīng)程序段如下:

……Seg7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,67H,77H,7CH,39H,5EH,79H,71H …… LEA BX,Seg7 ;取7段碼表基地址

MOV AH,0GO: MOV DX,0F1H ;開關(guān)接口的地址為F1H IN AL,DX ;讀入開關(guān)狀態(tài)

AND AL,0FH ;保留低4位

MOV SI,AX ;作為7段碼表的表內(nèi)位移量

MOV AL,[BX+SI];取7段碼

MOV DX,0F0H ;7段數(shù)碼管接口的地址為F0H OUT DX,AL JMP GO4.3可編程并行I/O接口—8255A并行接口電路,在早期的微機(jī)中與串行口、軟盤接口、硬盤接口等都放在一塊多功能接口卡上,插在微機(jī)的擴(kuò)展槽上使用?,F(xiàn)在這部分電路已在微機(jī)的主板上由與CPU配套的芯片組來實(shí)現(xiàn)其功能。如果要在其他的場合實(shí)現(xiàn)并行數(shù)據(jù)傳送,在電路設(shè)計(jì)時采用專用的接口芯片最為方便。可編程的接口芯片8255A是完成并行通信的集成電路芯片。 圖4.24.3可編程接口8255A4.3.18255A的主要特性 圖4.2三個可編程的端口(A端口、B端口和C端口)每個端口8條線,共有24條I/O引腳,可分為2組工作,每組12條線,三種工作方式。

可編程是指可通過軟件設(shè)置芯片的工作方式,因此這個芯片在與外部設(shè)備相連接時,通常不需要附加太多的外部邏輯電路,這給用戶的使用帶來很大方便。4.3.18255A的主要特性1、8255A具有三個可編程的并行輸入/輸出端口(A端口、B端口和C端口),它們?yōu)镃PU與外設(shè)之間提供了多個8位并行數(shù)據(jù)通道,并且端口C還具有按位置位/復(fù)位功能,為按位控制功能提供了強(qiáng)有力的支持。 圖4.22、8255A具有三種工作方式:方式0——基本輸入輸出方式。方式1——選通輸入輸出方式方式2——雙向選通輸入輸出方式3、8255A端口C分成兩個4位的端口,這兩個4位的端口分別作為A端口和B端口的控制信號和輸入狀態(tài)信號使用。方式0——用作數(shù)據(jù)端口。方式1/2——部分端口被分配作通信聯(lián)絡(luò)線 端口C在用作控制端口時,CPU可用置位/復(fù)位指令輸出控制信號;用作狀態(tài)端口時,可供CPU讀取8255狀態(tài)4、

8255A能適應(yīng)CPU與I/O設(shè)備之間的多種數(shù)據(jù)傳送方式的要求,如無條件方式、有條件方式、中斷方式。 圖4.2芯片的主要技術(shù)性能如下: 圖4.2(1)輸入、輸出電平與TTL電平完全兼容。

(2)時序特性好。

(3)部分位可以直接置“1”/置“0”,便于實(shí)現(xiàn)控制接口使用。

(4)單一的+5V電源。

8255A的內(nèi)部結(jié)構(gòu)框圖如圖10.7(a)所示,圖10.7(b)為8255A的外引腳圖。從圖中可以看到,8255A主要由4部分組成。4.3.28255A的內(nèi)部結(jié)構(gòu) 圖4.28255A的內(nèi)部結(jié)構(gòu)框圖如圖4.2(a)所示,圖4.2(b)為8255A的外引腳圖。從圖中可以看到,8255A主要由4部分組成。4.3.38255A內(nèi)部結(jié)構(gòu)圖4.28255內(nèi)部結(jié)構(gòu)和引腳圖(a)8255A內(nèi)部結(jié)構(gòu);(b)8255A外引腳圖圖4.2圖4.28255內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器內(nèi)部控制線內(nèi)部數(shù)據(jù)線D0~D7A組控制A組端口AA組端口C上部B組控制B組端口BB組端口C下部讀寫控制邏輯PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET圖4.28255A外引腳圖1.數(shù)據(jù)總線緩沖器

圖4.2

這是一個雙向、三態(tài)的8位數(shù)據(jù)總線緩沖器,是8255A和系統(tǒng)總線相連接的通道,用來傳送輸入/輸出的數(shù)據(jù)、CPU發(fā)出的控制字以及外設(shè)的狀態(tài)信息??傊?,8255A與CPU之間的所有信息傳輸都要經(jīng)過數(shù)據(jù)總線緩沖器。1、數(shù)據(jù)總線緩沖器

2.讀寫控制邏輯電路

圖4.2

這部分電路是用來完成對8255A內(nèi)部三個數(shù)據(jù)口的譯碼工作,由CPU的地址總線A1、A0和8255A的片選信號CS和WR、RD信號組合后產(chǎn)生控制命令,并將產(chǎn)生的控制命令傳送給A組和B組的控制電路,從而完成對數(shù)據(jù)信息的傳輸控制。8255A的控制信號與執(zhí)行的操作之間的對應(yīng)關(guān)系如表4-1所示。2、讀寫控制邏輯電路2)與處理器接口CS*A1A0I/O地址讀操作RD*寫操作WR*00000101001160H61H62H63H讀端口A讀端口B讀端口C非法寫端口A寫端口B寫端口C寫控制字D0~D7數(shù)據(jù)線 A0~A1地址線RD*讀信號 WR*寫信號CS*片選信號 RESET復(fù)位信號

3.A組控制電路和B組控制電路

圖4.2

控制電路分成A組控制和B組控制兩組,A組控制電路控制A端口和C端口的高4位(PC4~PC7)。B組控制電路控制B端口和C端口的低4位(PC0~PC3)。這兩組控制電路的作用是:由它們內(nèi)部的控制寄存器接收CPU輸出的方式控制命令字,還接收來自讀/寫控制邏輯電路的讀/寫命令,根據(jù)控制命令決定A組和B組的工作方式和讀/寫操作。3、AB組控制電路

4.三個獨(dú)立的數(shù)據(jù)口

圖4.28255A的三個數(shù)據(jù)口分別是A端口、B端口、C端口,它們彼此獨(dú)立,都是8位的數(shù)據(jù)口,用來完成和外設(shè)之間的信息交換。三個口在使用上有所不同。

1)A端口

A端口對應(yīng)一個8位的數(shù)據(jù)輸入鎖存器和一個8位的數(shù)據(jù)輸出鎖存器和緩沖器。因此A端口適合用在雙向的數(shù)據(jù)傳輸場合,用A端口傳送數(shù)據(jù),不管是輸入還是輸出,都可以鎖存。4、三個獨(dú)立的數(shù)據(jù)口

2)B端口和C端口

圖4.2

這兩個口分別是由一個8位的數(shù)據(jù)輸入緩沖器和一個8位的數(shù)據(jù)輸出鎖存器和緩沖器組成。因此用B端口和C端口傳送數(shù)據(jù)作輸出端口時,數(shù)據(jù)信息可以實(shí)現(xiàn)鎖存功能;而用作輸入口時,則不能對數(shù)據(jù)實(shí)現(xiàn)鎖存,這一點(diǎn)在使用中要注意。在實(shí)際應(yīng)用中,A端口和B端口通常作為獨(dú)立的輸入口和輸出口,而C端口常用來配合A端口和B端口的工作使用。C端口分成兩個4位的端口,這兩個4位的端口分別作為A端口和B端口的控制信號和輸入狀態(tài)信號使用。1)外設(shè)數(shù)據(jù)端口端口A:PA0~PA7A組,支持工作方式0、1、2端口B:PB0~PB7B組,支持工作方式0、1端口C:PC0~PC7僅支持工作方式0A組控制高4位PC4~PC7B組控制低4位PC0~PC3端口A:PA0~PA7常作數(shù)據(jù)端口,功能最強(qiáng)大端口B:PB0~PB7常作數(shù)據(jù)端口端口C:PC0~PC7可作數(shù)據(jù)、狀態(tài)和控制端口分兩個4位,每位可獨(dú)立操作控制最靈活,最難掌握4.3.38255A的外部特性

圖4.28255A是40條引腳的雙列直插式芯片,引腳排列如圖4.2(b)所示。單一的+5V電源,使用時要注意它的+5V電源引腳是第26腳,地線引腳是第7腳,它不像大多數(shù)TTL芯片電源和地線在右上角和左下角的位置,除了電源和地線之外,其他引腳的信號按連接的功能可分為兩大組。4.3.38255A外部特性

1.與CPU接口的信號線(引腳) 圖4.2

D7~D0

(27~34PIN):雙向三態(tài)8位數(shù)據(jù)線,與系統(tǒng)的數(shù)據(jù)總線相連接。

A1、A0

(8,9PIN):端口譯碼信號。用來選擇8255A內(nèi)部的三個數(shù)據(jù)端口和一個控制端口的地址。其中對控制口只能進(jìn)行寫操作。

(1)當(dāng)A1A0=00時,選中A端口。

(2)當(dāng)A1A0=01時,選中B端口。

(3)當(dāng)A1A0=10時,選中C端口。

(4)當(dāng)A1A0=11時,選中控制端口。

A1、A0與讀/寫信號組合對各端口所執(zhí)行的操作如表4-1所示。1、與CPU接口信號線

RESET(35PIN):芯片的復(fù)位信號,高電平時有效。復(fù)位后把8255A內(nèi)部的所有寄存器都清0,并將三個數(shù)據(jù)口自動設(shè)置為輸入口。

CS(6PIN):片選信號,低電平時有效。只有當(dāng)CS=0時,芯片被選中,才能對8255A進(jìn)行讀、寫操作。

RD(5PIN):讀信號,低電平有效。只有當(dāng)CS=0,RD=0,才允許從8255A的三個端口中讀取數(shù)據(jù)。

WR(36PIN):寫信號,低電平有效。只有當(dāng)CS=0,WR=0,才允許從8255A的三個端口寫入數(shù)據(jù)或者是寫入控制字。表4-18255A的控制信號與執(zhí)行的操作之間的對應(yīng)關(guān)系A(chǔ)1A0執(zhí)行的操作000000000010101011101x1010100011x000001011010111111xxxx讀A端口(A端口數(shù)據(jù)→數(shù)據(jù)總線)寫A端口(A端口←數(shù)據(jù)總線數(shù)據(jù))讀B端口(B端口數(shù)據(jù)→數(shù)據(jù)總線)寫B(tài)端口(B端口←數(shù)據(jù)總線數(shù)據(jù))讀C端口(C端口數(shù)據(jù)→數(shù)據(jù)總線)寫C端口(C端口←數(shù)據(jù)總線數(shù)據(jù))當(dāng)D7=1時,對8255A寫入控制字當(dāng)D7=0時,對C端口置位/復(fù)位非法的信號組合數(shù)據(jù)線D7~D0進(jìn)入高阻狀態(tài)未選擇表4-1

8255A的數(shù)據(jù)線為8條,這樣8位的接口芯片在與8086外部數(shù)據(jù)線為16條的CPU相連接時,應(yīng)考慮接口芯片本身對地址的要求。由于在8086這樣的16位外部總線系統(tǒng)中,CPU在進(jìn)行數(shù)據(jù)傳輸時,低8位對應(yīng)一個偶地址,高8位對應(yīng)一個奇地址。如果將8255A的數(shù)據(jù)線D7~D0與8086CPU的數(shù)據(jù)總線的低8位相連的話,從CPU這邊看來,要求8255A的4個端口地址都應(yīng)為偶地址,這樣才能保證對8255A的端口的讀/寫能在一個總線周期內(nèi)完成,但又要滿足8255A本身對4個端口規(guī)定的地址要求是00,01,10,11。因此將8255A的A1和A0分別與8086系統(tǒng)總線的A2和A1相連,而將最低位A0總設(shè)置為0。2.和外設(shè)端相連的引腳

圖4.2PA7~PA0

(37~40PIN,l~4PIN):A端口的輸入/輸出引腳PB7~PB0

(25~18PIN):B端口的輸入/輸出引腳PC7~PC0

(10~13,17~14PIN):C端口的輸入/輸出引腳2、和外設(shè)端相連接的引腳4.3.48255A的控制字由CPU執(zhí)行輸出指令,向8255A的端口輸出不同的控制字來決定它的工作方式??刂谱址譃閮煞N,分別稱為方式選擇控制字和端口C置1/置0控制字。根據(jù)控制寄存器的D7位的狀態(tài)決定是哪一種控制字。

1.方式選擇控制字方式選擇控制字用來決定8255A三個數(shù)據(jù)端口各自的工作方式,它的格式如圖4.3所示。它由一個8位的寄存器組成。4.3.48255A的控制字圖4.38255A的方式選擇控制字圖4.3圖4.3

D7位為“1”時,為方式選擇控制字的標(biāo)識位。圖4.3

D6、D5位決定A端口的工作方式,D6D5位為00、01、1x時分別表示A端口工作在方式0、方式1和方式2下。

D4位決定A端口工作在輸入還是輸出方式。D4位為0時,A端口工作在輸出方式;D4位為1時,A端口工作在輸入方式。

D3位決定用于A端口的C端口高4位PC7~PC4是作為輸入端口,還是作為輸出端口。D3位為0時,PC7~PC4作輸出;D3位為1時,PC7~PC4作輸入。

D2位用來選擇B端口的工作方式。D2位為0時,B端口工作在方式0,D2位為1時,B端口工作在方式1。

D1位決定B端口作為輸入還是輸出端口。D1位為1時B端口工作在輸入方式;D1位為0時B端口工作在輸出方式。

D0位決定用于B端口的C端口低4位PC3~PC0作為輸入,還是輸出。D0位為0時,PC3~PC0作輸出;D0位為1時,PC3~PC0作輸入。圖4.3

如果要求8255A的A端口作輸入,B端口和C端口作輸出,A組工作在方式0,B組工作在方式1,用三條指令可完成對芯片工作方式的選擇。MOV AL,94H ;方式選擇控制字送ALMOV DX,PortCtr

;控制端口地址PortCtr送DXOUT DX,AL ;方式選擇控制字輸出給8255A的控制端 口,完成方式選擇10010100B=94H 圖4.3例:某系統(tǒng)要求使用8255的A口工作于方式1作輸入,B口工作于方式0作輸出,C口上半部輸入,下半部輸出。8255端口地址為60H-63H??刂谱譃椋?0111000B=0B8H初始化程序?yàn)椋?/p>

MOVAL,0B8H

OUT63H,AL

2.C端口置1/置0控制字

圖4.38255A在和CPU傳輸數(shù)據(jù)的過程中,經(jīng)常將C端口的某幾位作為控制位或狀態(tài)位來使用,從而配合A端口或B端口的工作。為了方便用戶,在8255A芯片初始化時,C端口置1/置0控制字可以單獨(dú)設(shè)置C端口的某一位為0或某一位為1??刂谱值腄7位為“0”時,是C端口置1/置0控制字中的標(biāo)識位,具體的格式如圖4.4所示。2、C端口置01控制字對端口C的數(shù)據(jù)輸出有兩種辦法:通過端口C的I/O地址:向C端口直接寫入字節(jié)數(shù)據(jù)。這一數(shù)據(jù)被寫進(jìn)C端口的輸出鎖存器,并從輸出引腳輸出,但對設(shè)置為輸入的引腳無效通過控制端口:向C端口寫入位控字,使C端口的某個引腳輸出1或0,或置位復(fù)位內(nèi)部的中斷允許觸發(fā)器圖4.48255A的C端口置1/置0控制字圖4.4圖4.4

D6~D4位可為任意值,不影響操作。D3~D1位用來決定對C端口8位中的哪一位進(jìn)行操作。D0位用來決定對D3~D1所選擇的位是置1,還是置0。圖4.4

例如,要將C端口的PC3置0,PC7置1,可用下列程序段實(shí)現(xiàn)。MOV AL,06H ;PC3置0控制字送ALMOV DX,PortAdd

;控制端口地址PortAdd送DXOUT DX,AL ;對PC3完成置0操作MOV AL,0FH ;PC7置1控制字送ACOUT DX,AL ;完成對PC7置1操作例:(接上例)若A口工作于方式1作輸入,要使用中斷傳送方式,則應(yīng)當(dāng)寫PC4的按位置位字??刂谱譃椋?0001001B=09H

MOVAL,00001001B

OUT63H,AL

4.3.58255A初始化編程

圖4.3 8255片地址為300H【例4.1】按下述要求對8255A進(jìn)行初始化。A=方式0輸出;B=方式1輸入;CH=輸入;CL=輸出。 根據(jù)要求則控制字=10001110B=8EHMOV DX,303H ;控制端口地址MOV AL,08EH ;工作方式控制字OUT DX,AL ;送到控制端口4.3.58255A初始化編程【例4.2】按下述要求對8255A的C口進(jìn)行初始化。PC0=1。

根據(jù)要求則控制字=00000001B=01H

圖4.4MOV DX,303H ;控制端口地址MOV AL,01H ;使PC0=1的控制字OUT DX,AL ;送到控制端口;PC0=0MOV DX,303H ;控制端口地址MOV AL,00H ;使PC0=0的控制字OUT DX,AL ;送到控制端口【例4.3】要求對PA7、PA6位進(jìn)行置位/復(fù)位輸出,不改變A口其它位的原來狀態(tài)。(使用‘或’和‘與’操作)圖4.3;PA7、PA6位置位11000000B=C0HMOV DX,300H ;A口地址IN AL,DX ;讀入A口原輸出值MOV AH,AL ;保存原輸出值到AHOR AL,0C0H ;使PA6=PA7=1OUT DX,AL ;同時輸出到PA6、PA7…..MOV AL,AH ;恢復(fù)原輸出值OUT DX,AL ;送到A口;PA7、PA6位復(fù)位00111111B=3FH 圖4.3MOV DX,300H ;A口地址IN AL,DX ;讀入A口原輸出值MOV AH,AL ;保存原輸出值到AHAND AL,03FH ;使PA6=PA7=0OUT DX,AL ;同時輸出到PA6、PA7…..MOV AL,AH ;恢復(fù)原輸出值OUT DX,AL ;送到A口4.3.68255A的三種工作方式

8255A有三種工作方式,分別稱為方式0,方式1和方式2。其中A端口可以工作在三種方式中的任一種;B端口只能工作在方式0和方式1;C端口通常作為控制信號使用,配合A端口和B端口的工作。每種工作方式的具體內(nèi)容如下所述。4.3.68255A的三種工作方式1.方式0——基本的輸入/輸出方式方式0之所以被稱為基本的輸入/輸出方式,是因?yàn)樵谶@種方式下,A端口、B端口和C端口(C端口分為2個4位使用)都可提供簡單的輸入和輸出操作,對每個端口不需要固定的應(yīng)答式聯(lián)絡(luò)信號。工作在方式0時,在程序中可直接使用輸入指令(IN)和輸出(OUT)指令對各端口進(jìn)行讀寫。方式0的基本定義是2個8位的端口和2個4位的端口。任何一個端口都可以作為輸入或輸出,輸出的數(shù)據(jù)可以被鎖存,輸入的數(shù)據(jù)不能鎖存。適用于無條件傳送和查詢方式的接口電路1、方式0

方式0一般用于無條件傳送的場合,不需要應(yīng)答式聯(lián)絡(luò)信號,外設(shè)總是處于準(zhǔn)備好的狀態(tài)。也可以用作查詢式傳送,查詢式傳送時,需要有應(yīng)答信號??梢詫端口、B端口作為數(shù)據(jù)口使用。把C端口分為2部分,其中4位規(guī)定為輸出,用來輸出一些控制信息,另外4位規(guī)定為輸入,用來讀入外設(shè)的狀態(tài)。利用C端口配合A端口和B端口完成查詢式的I/O操作。方式0輸入時序datadata輸入端口D0~D7RDCS,A1,A0方式0輸出時序WRdatadata輸出端口D0~D7CS,A1,A01)無條件輸入輸出

CPU始終認(rèn)為I/O設(shè)備處于準(zhǔn)備就緒狀態(tài)。不需要應(yīng)答式聯(lián)絡(luò)信號。片地址=300H【例】PB=方式0輸出接發(fā)光二極管,PA=方式0輸入接開關(guān),如下圖4.5所示,要求開關(guān)閉合(接地)則對應(yīng)亮,反之則熄。;PA、PB端口初始化10010000B=90H 圖4.3MOV DX,303H ;控制口地址MOV AL,90H ;控制值OUT DX,AL ;控制值到控制口;循環(huán)檢測輸入狀態(tài),根據(jù)輸入改變輸出狀態(tài)LOP: MOV DX,300H ;A口地址

IN AL,DX ;輸入A口開關(guān)狀態(tài)

MOV DX,301H ;B口地址

OUT DX,AL ;輸出到B口發(fā)光二極管

JMP LOP ;循環(huán)檢測說明:開關(guān)閉合時,PA?=0PB?=0,則發(fā)光二極管亮

;開關(guān)閉合則不發(fā)光,開關(guān)斷開則發(fā)光

XOR AL,0FFH ;將輸入反相

OUT DX,AL ;輸出到B口發(fā)光二極管‘XOR為異或,相同為零,相異為1圖4.5無條件輸入輸出硬件連線圖圖4.52)有條件(查詢)輸入輸出

PC口可分別作為查詢用的控制和狀態(tài)線,不過這時的控制狀態(tài)和狀態(tài)線不是固定方式(方式1中是固定的),由程序來確定。2.方式1——選通輸入/輸出方式在這種方式下,當(dāng)A端口和B端口進(jìn)行輸入輸出時,必須利用C端口提供的選通和應(yīng)答信號,而且這些信號與C端口中的某些位之間有著固定的對應(yīng)關(guān)系,這種關(guān)系是硬件本身決定的不是軟件可以改變的。由于工作在方式l時,要由C端口中的固定位來作為選通和應(yīng)答等控制信號,因此稱方式1為選通的輸入/輸出方式。方式1的基本定義是,分成2組(A組和B組),每組包含一個8位的數(shù)據(jù)端口和1個4位的控制/數(shù)據(jù)端口。8位的數(shù)據(jù)端口既可以作為輸入,也可以作為輸出,輸入和輸出都可以被鎖存。4位的控制/數(shù)據(jù)端口用于傳送8位數(shù)據(jù)端口的控制和狀態(tài)信息。適用于查詢和中斷方式的接口電路2、方式11)選通的輸入方式(方式1輸入)方式1在選通輸入方式下對應(yīng)的控制信號如圖4.6所示。圖4.7是方式1在選通輸入方式的工作時序圖。選通輸入方式的工作過程是:當(dāng)外設(shè)的數(shù)據(jù)已送到8255A某個端口的數(shù)據(jù)線上時,就發(fā)出選通輸入信號STB,將數(shù)據(jù)通過A端口或B端口鎖存到8255A的數(shù)據(jù)輸入寄存器,STB信號的寬度至少是500ns。STB信號變低后最多經(jīng)過300ns時間,使輸入緩沖器滿信號IBF變?yōu)楦唠娖?,如圖4.7中表示的箭頭①。1)選通輸入輸入緩沖器滿意味著將阻止外設(shè)輸入新的數(shù)據(jù),可供CPU來查詢。在選通輸入信號結(jié)束后,最多經(jīng)過300ns時間,向CPU發(fā)出中斷請求信號(要在中斷允許的情況下),如圖4.7中表示的箭頭②,使中斷請求信號INTR變高,CPU可以響應(yīng)中斷。當(dāng)CPU響應(yīng)中斷后才發(fā)出讀信號RD,將數(shù)據(jù)讀入到CPU中,讀信號有效(低電平為有效)后,最多經(jīng)過400ns時間,RD就清除中斷請求,使中斷請求信號變低,如圖4.7中表示的箭頭③。當(dāng)讀信號結(jié)束后,才使輸入緩沖器滿信號IBF變低,如圖4.7中表示的箭頭④。IBF變低表明輸入緩沖器已空,通知外設(shè)可以輸入新的數(shù)據(jù)。方式1輸入引腳:A端口數(shù)據(jù)選通信號表示外設(shè)已經(jīng)準(zhǔn)備好數(shù)據(jù)輸入緩沖器滿信號表示A口已經(jīng)接收數(shù)據(jù)中斷請求信號請求CPU接收數(shù)據(jù)PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA中斷允許觸發(fā)器方式1輸入引腳:B端口PC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB數(shù)據(jù)選通信號表示外設(shè)已經(jīng)準(zhǔn)備好數(shù)據(jù)輸入緩沖器滿信號表示A口已經(jīng)接收數(shù)據(jù)中斷請求信號請求CPU接收數(shù)據(jù)中斷允許觸發(fā)器方式1需借用端口C用做聯(lián)絡(luò)信號同時還具有中斷請求和屏蔽功能方式1輸入聯(lián)絡(luò)信號STB——選通信號,低電平有效由外設(shè)提供的輸入信號,當(dāng)其有效時,將輸入設(shè)備送來的數(shù)據(jù)鎖存至8255A的輸入鎖存器IBF——輸入緩沖器滿信號,高電平有效8255A輸出的聯(lián)絡(luò)信號。當(dāng)其有效時,表示數(shù)據(jù)已鎖存在輸入鎖存器INTR——中斷請求信號,高電平有效8255A輸出的信號,可用于向CPU提出中斷請求,要求CPU讀取外設(shè)數(shù)據(jù)方式1輸入時序dataINTRIBF

data輸入端口D0~D7STBRDSTB*和IBF是外設(shè)和8255A間的一對應(yīng)答聯(lián)絡(luò)信號,為的是可靠地輸入數(shù)據(jù)方式1中斷控制8255A的中斷由中斷允許觸發(fā)器INTE控制置位允許中斷,復(fù)位禁止中斷對INTE的操作通過寫入端口C的對應(yīng)位實(shí)現(xiàn),INTE觸發(fā)器對應(yīng)端口C的位是作應(yīng)答聯(lián)絡(luò)信號的輸入信號的哪一位,只要對那一位置位/復(fù)位就可以控制INTE觸發(fā)器選通輸入方式下端口A的INTEA對應(yīng)PC4端口B的INTEB對應(yīng)PC2圖4.6方式1選通輸入下對應(yīng)的控制信號(a)對A端口;(b)對B端口圖4.6端口結(jié)構(gòu)圖4.78255A方式l輸入時序圖4.7時序表4-48255A方式1輸入時序參數(shù)說明參數(shù)說明8255A最小時間/ns最大時間/nstST選通脈沖的寬度500

tSIB選通脈沖有效到IBF有效之間的時間

300tSIT

=1到中斷請求INTR有效之間的時間

300tPH數(shù)據(jù)保持時間180

tPS數(shù)據(jù)有效到無效之間的時間0

tRIT有效到中斷請求撤除之間的時間

400tRIB為1到IBF為0之間的時間

300表4-4當(dāng)8255A的A端口和B端口工作在選通輸入方式時,對應(yīng)的C端口固定分配,規(guī)定是PC3~PC5分配給A端口,PC0~PC2分配給B端口,C端口剩下的2位PC7、PC6可作為簡單的輸入/輸出線使用??刂谱值腄3位為“1”時,PC7、PC6作輸入;控制字的D3位為“0”時,PC7、PC6作輸出。圖4.6在方式1選通輸入方式時,各控制信號的意義如下:

STB(Strobe):選通輸入信號,低電平有效。A組方式控制字中對應(yīng)PC4;B組方式控制字中對應(yīng)PC2。當(dāng)該信號有效時,從外部設(shè)備來的8位數(shù)據(jù)送入到8255A的輸入緩沖器中,負(fù)脈沖寬度最小是500ns。圖4.7

IBF(InputBufferFull):輸入緩沖器滿信號,高電平有效。A組方式控制字中對應(yīng)PC5;B組方式控制字中對應(yīng)PC1。這是8255A送給外設(shè)的聯(lián)絡(luò)信號,當(dāng)8255A的輸入緩沖區(qū)已有一個新數(shù)據(jù)后,輸出這個信號供CPU查詢。該信號在選通輸入信號STB變低后,300ns時間內(nèi)即變?yōu)橛行У母唠娖健T赗D信號撤消后的300ns時間內(nèi)IBF信號才撤消,變?yōu)闊o效的低電平,這樣保證了數(shù)據(jù)傳輸?shù)目煽啃?。圖4.7

圖4.6

INTR(InterruptRequest):中斷請求信號,高電平有效。A組方式控制字中對應(yīng)PC3;B組方式控制字中對應(yīng)PC0。這是8255A向CPU發(fā)出的中斷請求信號。當(dāng)STB信號撤消變?yōu)楦唠娖胶笞疃?00ns時間內(nèi),并且IBF信號也為高電平,INTR信號產(chǎn)生變?yōu)橛行У母唠娖健NTR信號變高后可以請求CPU讀取數(shù)據(jù)。當(dāng)CPU發(fā)出的RD信號有效后,400ns的時間內(nèi)INTR信號將撤消,變?yōu)榈碗娖健?圖4.7

圖4.6

INTE(InterruptEnable):中斷允許信號,高電平有效。該信號為高時,允許中斷請求,為低時則屏蔽中斷請求。INTE的狀態(tài)是用軟件通過由C端口置1/置0控制字來控制的,在A組中,使PC4置“1”后INTEA變高;在B組中,使PC2置“1”后INTEB變高,A端口和B端口才允許中斷。如果PC4和PC2都置“0”,與之對應(yīng)的INTE信號為低,則禁止中斷。圖4.7

圖4.6

對于這種選通的輸入方式,如果采用查詢式輸入時,CPU先查詢8255A的輸入緩沖器是否滿了,也就是IBF是否為高?如果輸入緩沖器滿信號IBF為高,則CPU就可以從8255A讀入數(shù)據(jù)。如果采用中斷方式傳送數(shù)據(jù)時,應(yīng)該先用C端口置1/置0的控制字使相應(yīng)的端口允許中斷,也就是要使PC4或PC2置1。輸入控制信號分配表信號A組B組功能說明STBPC4PC2輸入選通0=輸入數(shù)據(jù)←IBFPC5PC1輸入滿1=已接收數(shù)據(jù)→INTEPC4PC2中斷允許1=允許發(fā)出中斷INTRPC3PC0中斷請求1=中斷信號→→:表示為輸出信號 ←:表示為輸入信號 圖4.7

圖4.6控制信號分配表

2)選通的輸出方式(方式1輸出)方式1在選通輸出情況下對應(yīng)的控制信號如圖4.8所示,圖4.9是方式1選通輸出情況下的工作時序圖。這種方式的工作過程與選通輸入的情況相類似。2)選通輸出方式1輸出引腳:A端口外設(shè)響應(yīng)信號表示外設(shè)已經(jīng)接收到數(shù)據(jù)輸出緩沖器滿信號表示CPU已經(jīng)輸出了數(shù)據(jù)中斷請求信號請求CPU再次輸出數(shù)據(jù)PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA中斷允許觸發(fā)器方式1輸出引腳:B端口PC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB外設(shè)響應(yīng)信號表示外設(shè)已經(jīng)接收到數(shù)據(jù)輸出緩沖器滿信號表示CPU已經(jīng)輸出了數(shù)據(jù)中斷請求信號請求CPU再次輸出數(shù)據(jù)中斷允許觸發(fā)器方式1輸出聯(lián)絡(luò)信號OBF——輸出緩沖器滿信號,低有效8255A輸出給外設(shè)的一個控制信號,當(dāng)其有效時,表示CPU已把數(shù)據(jù)輸出給指定的端口,外設(shè)可以取走ACK——響應(yīng)信號,低有效外設(shè)的響應(yīng)信號,指示8255A的端口數(shù)據(jù)已由外設(shè)接受INTR——中斷請求信號,高有效當(dāng)輸出設(shè)備已接受數(shù)據(jù)后,8255A輸出此信號向CPU提出中斷請求,要求CPU繼續(xù)提供數(shù)據(jù)端口A的INTEA對應(yīng)PC6端口B的INTEB對應(yīng)PC2方式1輸出時序

INTR

datadata輸出端口D0~D7WROBFACK

OBF*和ACK*是外設(shè)和8255A間的一對應(yīng)答聯(lián)絡(luò)信號,為的是可靠地輸出數(shù)據(jù)圖4.8方式l輸出時C端口對A、B端口的控制(a)對A端口;(b)對B端口圖4.8端口結(jié)構(gòu)圖4.98255A方式1輸出時序圖4.9時序當(dāng)8255A的A端口和B端口工作在選通輸出方式時,對應(yīng)的C端口也是固定分配,規(guī)定是PC3、PC6、PC7分配給A端口;PC2、PC1、PC0分配給B端口,剩下的2位PC4、PC5可作為簡單的輸入/輸出線使用。當(dāng)控制字的D3位為“1”時,PC4、PC5作輸入;當(dāng)控制字的D3位為“0”時,PC4、PC5作輸出。圖4.8方式1選通輸出方式時,各控制信號的意義如下:

OBF(OutputBufferFu11):輸出緩沖器滿信號,低電平有效。A組方式控制字中對應(yīng)PC7;B組方式控制字中對應(yīng)PC1,這是8255A與外設(shè)的聯(lián)絡(luò)信號。當(dāng)CPU向8255A的端口中傳送了數(shù)據(jù)以后,由8255A向外設(shè)發(fā)出低電平的OBF信號,通知外設(shè)可以把數(shù)據(jù)取走。由輸出指令產(chǎn)生的寫信號WR的上升沿出現(xiàn)后,最多經(jīng)過650ns時間,將OBF信號置成有效即變?yōu)榈碗娖剑鐖D4.9中表示的箭頭②。當(dāng)應(yīng)答信號ACK變?yōu)橛行У牡碗娖胶?50ns時間,OBF信號撤消變?yōu)楦唠娖?,如圖4.9中表示的箭頭③。表4-58255A方式1輸出時序參數(shù)說明參數(shù)說明8255A最小時間/ns最大時間/nstWIT從寫信號有效到中斷請求無效的時間

850tWOB從寫信號無效到輸出緩沖器清的時間

650tAOB有效到無效的時間

350tAK脈沖的寬度300

tAIT為1到發(fā)新的中斷請求的時間

350tWB寫信號撤除到數(shù)據(jù)有效的時間350表4-5

ACK(Acknowledge):數(shù)據(jù)接收應(yīng)答信號,低電平有效。A組方式控制字中對應(yīng)PC6;B組方式控制字中對應(yīng)PC2,這是外設(shè)的響應(yīng)信號,當(dāng)CPU輸出給8255A的數(shù)據(jù)已由外設(shè)接收后,外設(shè)就向8255A回送一個低電平的應(yīng)答信號ACK。

INTR:中斷請求信號,高電平有效。A組方式控制字中對應(yīng)PC3;B組方式控制字中對應(yīng)PC0。當(dāng)外設(shè)已經(jīng)接受了CPU輸出的數(shù)據(jù)后,由8255A向CPU發(fā)出中斷請求,要求CPU輸出新的數(shù)據(jù)。當(dāng)ACK撤消后為高電平,OBF也為高電平,中斷允許信號INTE也為高時,INTR中斷請求信號被置位為高電平,如圖4.9中表示的箭頭④。作為請求CPU進(jìn)行下一次數(shù)據(jù)輸出的中斷請求信號,是在WR有效的下降沿出現(xiàn)后850ns時間內(nèi)使它變?yōu)闊o效的低電平,如圖4.9中表示的箭頭①。

INTE:中斷允許信號,高電平有效。當(dāng)該信號為“1”時,允許中斷,為“0”時,A端口(B端口)處于中斷屏蔽狀態(tài),即不發(fā)出中斷請求信號INTR。在使用時,中斷允許信號INTE是用軟件通過對C端口置1/置0的控制字來設(shè)置的。當(dāng)PC6置1時,A端口允許中斷;PC2置1,B端口允許中斷。反之,如果A、B端口所對應(yīng)的PC6、PC2置0時,則處于中斷屏蔽狀態(tài),即不允許中斷。圖4.9當(dāng)8255A工作在方式l輸出選通方式時,一般是采用中斷方式與CPU通信。從圖4.9方式1輸出工作時序圖中可以看到,CPU響應(yīng)中斷以后,就向8255A輸出數(shù)據(jù),寫信號出現(xiàn)。當(dāng)寫信號WR撤消,其上升沿一方面撤消中斷請求信號INTR,如圖4.9中表示的箭頭①使INTR變低,表示CPU對上一次中斷已經(jīng)響應(yīng)過。另一方面使OBF信號變?yōu)橛行У牡碗娖?,如圖4.9中表示的箭頭②,以通知外設(shè)可以接收下一個數(shù)據(jù)。實(shí)際上,CPU在發(fā)出寫信號后要經(jīng)過最長350ns時間,數(shù)據(jù)才能出現(xiàn)在端口的輸出緩沖器中。當(dāng)外設(shè)收到數(shù)據(jù)后,便發(fā)出一個ACK信號,ACK信號有效后使OBF變成無效的高電平,如圖04.09中表示的箭頭③,表示數(shù)據(jù)已經(jīng)取走,當(dāng)前緩沖器空。ACK信號結(jié)束時使INTR信號變?yōu)橛行У母唠娖?,如圖4.9中表示的箭頭④,向CPU發(fā)出中斷請求信號,從而開始新的數(shù)據(jù)輸出過程。輸出控制信號分配表信號A組B組功能說明OBFPC7PC1輸出滿0=輸出滿→ACKPC6PC2回答0=外設(shè)接收數(shù)據(jù)←INTEPC6PC2中斷允許1=允許發(fā)出中斷INTRPC3PC0中斷請求1=中斷信號→→:表示為輸出信號←:表示為輸入信號 圖4.8控制信號分配表【例4.5】用8255A為兩臺8086單板機(jī)設(shè)計(jì)一并行數(shù)據(jù)傳送接口。 要求:甲機(jī)為方式1發(fā)送數(shù)據(jù)(輸出) 乙機(jī)為方式1接收數(shù)據(jù)(輸入) 采用查詢方式交換數(shù)據(jù) 發(fā)送和接收數(shù)軍存放在內(nèi)存中,長度2KB1)硬件連線(見下圖4.10)2)軟件設(shè)計(jì)例4.5圖4.108086單板機(jī)并行數(shù)據(jù)傳送接口電路 圖4.10;甲機(jī)發(fā)送程序 圖4.10 MOV AX,100H ;發(fā)送數(shù)據(jù)存放的段地址

MOV DS,AX ;

MOV BX,0H ;數(shù)據(jù)段內(nèi)位移量

MOV CX,800H ;數(shù)據(jù)塊長度

MOV DX,313H ;控制口地址

MOV AL,0A0H ;控制方式字(方式1輸出A)

OUT DX,AL ;送到控制口

MOV AL,0FH ;置PC7=1OBF=1 OUT DX,AL ;輸出緩沖器空WAT1: MOV DX,302H ;C口地址

IN AL,DX ;讀入C口值

AND AL,80H ;檢查OBF的值

JZ WAT1 ;0=乙機(jī)未取走數(shù)據(jù),等待

MOV DX,300H ;A口地址

MOV AL,[BX] ;從內(nèi)存中取數(shù)據(jù)

OUT DX,AL ;從A口發(fā)送到乙機(jī)

INC BX ;修改內(nèi)存單元地址

LOOP WAT1 ;塊長度-1≠0繼續(xù)

HLT ;傳送完畢,暫停 ;乙機(jī)接收程序 圖4.10 MOV AX,2000H ;發(fā)送數(shù)據(jù)存放的段地址

MOV DS,AX ;

MOV BX,0H ;數(shù)據(jù)段內(nèi)位移量

MOV CX,800H ;數(shù)據(jù)塊長度

MOV DX,313H ;控制口地址

MOV AL,0B0H ;控制方式字(方式1輸入A)

OUT DX,AL ;送到控制口

MOV AL,0AH ;復(fù)位PC5=0IBF=0 OUT DX,AL ;輸入緩沖器空WAT2: MOV DX,312H ;C口地址

IN AL,DX ;讀入C口值

AND AL,20H ;檢查IBF的值

JZ WAT2 ;0=乙機(jī)未接收數(shù)據(jù),等待

MOV DX,310H ;A口地址

IN AL,DX MOV [BX],AL ;從內(nèi)存中取數(shù)據(jù)

INC BX ;修改內(nèi)存單元地址

LOOP WAT2 ;塊長度-1≠0繼續(xù)

HLT ;傳送完畢,暫停

3.方式2——帶選通的雙向傳輸方式(A口)

8255A可以向外設(shè)發(fā)送數(shù)據(jù),同時又接收外設(shè)的數(shù)據(jù),因此稱為雙向的傳輸方式。方式2的基本定義是,只能適用于A端口,一個8位的雙向端口(A端口)和1個5位的控制端口(C端口)。A端口的輸入和輸出都可以被鎖存。當(dāng)A端口工作在方式2時,由PA7~PA0作為8位數(shù)據(jù)線,因?yàn)橐蒀端PC7~PC3口對A端口進(jìn)行控制,所以稱為帶選通的雙向傳輸方式。C端口對A端口的控制信號分別如圖4.11和圖4.12所示。剩下的3位PC2~PC0可作為簡單的輸入/輸出線使用。適用于與雙向傳送數(shù)據(jù)的外設(shè)適用于查詢和中斷方式的接口電路3、方式2方式2雙向引腳PC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6設(shè)置INTE1(輸出)用PC4設(shè)置INTE2(輸入)輸入和輸出中斷通過或門輸出INTRA信號方式2雙向時序data-out

INTR

data-outdata-indata-inPA0~PA7D0~D7IBF

WROBFACKSTBRD

STB:選通信號,低電平有效。對應(yīng)于PC4,由外設(shè)提供給8255A。該信號負(fù)責(zé)把外設(shè)送到8255A的數(shù)據(jù)送入輸入鎖存器。

IBF:輸入緩沖器滿信號,高電平有效。對應(yīng)PC5,是8255A送給CPU的狀態(tài)信息,供CPU查詢用。當(dāng)該信號有效時,表示當(dāng)前已經(jīng)有一個新的數(shù)據(jù)送到了輸入鎖存器中,CPU可以取走。

OBF:輸出緩沖器滿信號,低電平有效。對應(yīng)PC7,由8255A發(fā)給外設(shè)的選通信號,當(dāng)OBF有效時,表明CPU已經(jīng)將一個數(shù)據(jù)寫入8255A的A端口中,通知外設(shè)可以取走數(shù)據(jù)。圖4.12

INTR:中斷請求信號,高電平有效。對應(yīng)PC3,不論A端口工作在輸入方式還是工作在輸出方式,當(dāng)一個操作完成,并且要進(jìn)入下一個操作時,8255A都要向CPU發(fā)出中斷請求信號。

ACK:數(shù)據(jù)接收應(yīng)答信號,低電平有效。對應(yīng)PC6,這是外設(shè)對信號OBF的響應(yīng)信號,該信號為低電平時,使A端口的輸出緩沖器打開,送出數(shù)據(jù)到外設(shè)。否則,當(dāng)該信號為高電平時,方式2時輸出緩沖器處于高阻狀態(tài)。圖4.12圖4.11方式2時C端口對A端口的控制信號圖4.11

INTEl:輸出中斷允許信號。當(dāng)該信號為“1”時,允許8255A向CPU發(fā)出由A端口輸出數(shù)據(jù)的中斷請求信號。反之,如果該信號為“0”時,即使輸出緩沖器空,也不允許8255A向CPU發(fā)中斷請求信號。INTEl信號的置1或置0,是用軟件使C端口的PC6置1或置0來實(shí)現(xiàn)的。圖4.12

INTE2:輸入中斷允許信號。當(dāng)該信號為“1”時,允許8255A中A端口的輸入處于中斷允許狀態(tài),反之,如果該信號為“0”時,A端口的輸入處于中斷屏蔽狀態(tài),即不允許中斷。INTE2信號的置1或置0,同樣是用軟件通過C端口的PC4置1或置0來實(shí)現(xiàn)。圖4.12通過仔細(xì)分析方式2的工作時序圖04.12,會發(fā)現(xiàn)方式2的時序基本相當(dāng)于方式1的選通輸入時序和選通輸出的時序的組合。從圖04.12中可以看到,對于輸入過程,當(dāng)外設(shè)向A端口送來數(shù)據(jù)時,選通信號STB也跟著有效變?yōu)榈碗娖剑x通信號將數(shù)據(jù)鎖存到8255A的A端口的輸入鎖存器中。同樣也正是由于STB信號的變低,才使得輸入緩沖器滿信號IBF變?yōu)楦唠娖?,如圖04.12中表示的箭頭⑦。當(dāng)選通信號STB結(jié)束,也就是變?yōu)楦唠娖綍r,又使中斷請求信號INTR有效,變?yōu)楦唠娖?,如圖04.12中表示的箭頭⑧。當(dāng)CPU響應(yīng)輸入中斷,執(zhí)行輸入指令時,會產(chǎn)生RD信號,在讀信號RD有效期間,將數(shù)據(jù)從A端口讀入到CPU中。當(dāng)RD信號結(jié)束后輸入緩沖器滿信號IBF又變?yōu)榈碗娖?,如圖4.12中表示的箭頭⑨。中斷請求信號INTR雖然為高也不再起作用。對于輸出過程,當(dāng)CPU響應(yīng)中斷后,在中斷服務(wù)程序中執(zhí)行輸出指令時,將發(fā)出寫脈沖WR,WR的下降沿使中斷請求信號INTR變低,如圖04.12中表示的箭頭①。WR信號結(jié)束其上升降沿使輸出緩沖器滿OBF信號變?yōu)橛行У牡碗娖?,如圖4.12中表示的箭頭②。OBF信號送到外設(shè),當(dāng)外設(shè)接到OBF信號后,發(fā)出應(yīng)答信號ACK,如圖04.12中表示的箭頭③。由ACK信號打開8255A的輸出緩沖器,使數(shù)據(jù)出現(xiàn)在A端口和數(shù)據(jù)總線上,ACK信號結(jié)束時使輸出緩沖器滿信號OBF變?yōu)闊o效的高電平,如圖4.12中表示的箭頭⑤,從而開始下一個數(shù)據(jù)傳輸過程。由于方式2是雙向傳輸?shù)墓ぷ鞣绞?,如果一個外設(shè)既可以作為輸入,又可以作為輸出時,采用8255A的方式2與它相連就十分方便。圖4.128255A方式2時序圖4.12表4-68255A方式2時序的參數(shù)說明參數(shù)說明8255A最小時間/ns最大時間/nstST選通脈沖的寬度500

tPH數(shù)據(jù)保持時間180

tSIB選通脈沖有效到IBFA有效之間的時間

300tPS

數(shù)據(jù)有效到無效之間的時間0tWOD從寫信號無效到,有效的時間

650tAOD有效到無效的時間

350tAD有效到數(shù)據(jù)輸出的時間

350tHD數(shù)據(jù)保持時間200

表4-6控制信號分配表信號A組B組功能說明OBFPC7輸出滿0=輸出滿→INTE1PC6O中斷允許1=允許發(fā)出輸出中斷IBFPC5輸入滿0=外設(shè)接收數(shù)據(jù)←INTE2PC4I中斷允許1=允許發(fā)出輸入中斷INTRPC3中斷請求1=中斷信號→INTEPC2中斷允許1=允許發(fā)出中斷IBFOBFPC1輸/入出滿B組方式1INTRPC3PC0中斷請求1=中斷信號→→:表示為輸出信號←:表示為輸入信號端口C的狀態(tài)字端口C的狀態(tài)字D7D6D5D4D3D2D1D0方式1輸入I/OI/OIBFAINTEAINTRAINTEBIBFBINTRB方式1輸出OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式2雙向OBFAINTE1IBFAINTE2INTRA×××A組B組【例4.6】用8255A為主從兩臺8086單板機(jī)設(shè)計(jì)一雙向數(shù)據(jù)傳送接口。 要求:主機(jī)以中斷方式發(fā)送/接收數(shù)據(jù)(輸入/輸出) 從機(jī)為采用查詢方式接收/發(fā)送數(shù)據(jù)(輸出/輸入)

主機(jī)為方式2,從機(jī)為方式01)硬件連線(見下圖4.13)2)軟件設(shè)計(jì)圖4.13主從單板機(jī)硬件連線圖圖4.13;主機(jī)程序

MOV DX,313H ;控制口地址

MOV AL,0C0H ;控制方式字(A口方式2)

OUT DX,AL ;送到控制口

MOV AL,09H ;置PC4=1INTE2=1 OUT DX,AL ;允許輸入中斷

MOV AL,0DH ;置PC6=1INTE1=1 OUT DX,AL ;允許輸出中斷

MOV SI,2000H ;發(fā)送數(shù)據(jù)塊首地址

MOV CX,100 ;發(fā)送數(shù)據(jù)塊長度

MOV DI,0H ;接收數(shù)據(jù)塊首地址

MOV BX,80H ;接收數(shù)據(jù)塊長度

STI ;開中斷中斷服務(wù)程序 圖4.13 MOV DX,312H ;C口地址

IN AL,DX ;讀入C口值

MOV AH,AL ;保存C口值

AND AL,20H ;檢查IBF的值

JZ OTH ;0=不是輸入中斷,等待INP: MOV DX,310H ;A口地址

IN AL,DX ;從A口接收數(shù)據(jù)

MOV [DI],AL ;保存到內(nèi)存單元

INC DI ;修改內(nèi)存單元地址

DEC BX ;修改計(jì)數(shù)長度

JNZ NEXT ;塊長度-1≠0繼續(xù)接收

JMP DONE ;結(jié)束中斷服務(wù)程序OTH: MOV AL,AH ;恢復(fù)C口值

AND AL,80H ;檢查OBF的值

JZ NEXT ;0=不是輸出中斷,等待OUTP: MOV DX,300H ;A口地址

MOV AL,[SI] ;從內(nèi)存取數(shù)據(jù)

OUT DX,AL ;從A口發(fā)送到從機(jī)

INC SI ;修改內(nèi)存單元地址

DEC CX ;修改計(jì)數(shù)長度

JNZ NEXT ;塊長度-1≠0繼續(xù)接收

JMP DONE ;結(jié)束中斷服務(wù)程序NEXT: STI ;開中斷DONE: IRET ;中斷返回;從機(jī)程序 圖4.13數(shù)據(jù)發(fā)送子程序(A口)SRESU: MOV DX,313H ;控制口地址

IN AL,DX ;讀C口值

ROR AL,1 ;循環(huán)右移PC0(IBF)→CF JC SRESU ;主機(jī)IBF=1,未取走等待

MOV AX,300H ;主機(jī)已取走,A口地址

MOV AL,[SI] ;從內(nèi)存取數(shù)據(jù)

OUT DX,AL ;從A口發(fā)送給主機(jī)

….. RET ;子程序結(jié)束返回

;從機(jī)程序 圖4.13數(shù)據(jù)接收子程序(B口)SREAD: MOV DX,313H ;控制口地址

IN AL,DX ;讀C口值

AND AL,02H ;檢查PC1(OBF)→CF JNZ SREAD ;主機(jī)OBF=1,未發(fā)送等待

MOV AX,301H ;主機(jī)已發(fā)送,B口地址

IN AL,DX ;接收數(shù)據(jù)

MOV [DI],AL ;將數(shù)據(jù)存入內(nèi)存

….. RET ;子程序結(jié)束返回

例:下圖采用一個8255芯片和軟盤控制器相連,箭頭標(biāo)明了I/O的方向,根據(jù)該圖,試寫出8255A口的初始化程序。設(shè)8255端口地址為0300-0303H。

8255用作軟盤基本接口4.3.78255A應(yīng)用舉例例:

A口工作在方式2,PC4-PC7作應(yīng)答聯(lián)絡(luò)信號線,PC3用作A組中斷請求,PC0-PC2作輸出。工作方式控制字為:11XXX000B=0C0H初始化程序?yàn)椋?/p>

MOVDX,303H

MOVAL,0C0H ;工作方式控制字

OUTDX,AL

MOVAL,00001001B

OUTDX,AL

;PC4置位,開放輸入中斷

MOVAL,00001101B

OUTDX,AL

;PC6置位,開放輸出中斷例1軟盤例2在IBMPC/XT上的應(yīng)用工作在基本輸入/輸出方式0端口A為方式0輸入,用來讀取鍵盤掃描碼端口B工作于方式0輸出,例如控制揚(yáng)聲器等端口C為方式0輸入,讀取系統(tǒng)狀態(tài)和配置系統(tǒng)的初始化編程:

moval,10011001b

;方式控制字99H

out63h,al例3方式0與打印機(jī)接口BUSY

DATA0~78255APC7PC2PA0~PA7打印機(jī)STROBE打印機(jī)接口的信號與時序(Centronics)主機(jī)把數(shù)據(jù)送給引腳DATA0~DATA7同時送出數(shù)據(jù)選通信號STROBE*打印機(jī)在BUSY信號線上發(fā)出忙信號打印機(jī)處理好輸入的數(shù)據(jù)時撤消忙信號同時又送出一個響應(yīng)信號ACK*Centronics并行打印接口標(biāo)準(zhǔn)8255A的初始化

movdx,0fffeh ;控制端口地址:FFFEH

moval,10000001B ;方式控制字:91H outdx,al ;A端口方式0輸出,C端口上輸出、下輸入

moval,00001111B ;端口C的復(fù)位置位控制字,使PC7=1 outdx,al打

溫馨提示

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

最新文檔

評論

0/150

提交評論