第8章單片機并行擴展技術(shù)_第1頁
第8章單片機并行擴展技術(shù)_第2頁
第8章單片機并行擴展技術(shù)_第3頁
第8章單片機并行擴展技術(shù)_第4頁
第8章單片機并行擴展技術(shù)_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章單片機并行擴展技術(shù)主講教師趙曉安AT89C52單片機內(nèi)集成了8KBFlashROM、256BRAM、4個8位并行I/O口、1個全雙工串行口、3個16位定時器/計數(shù)器等基本功能部件,只需接上時鐘電路和復(fù)位電路即可構(gòu)成單片機最小應(yīng)用系統(tǒng)。XTAL1XTAL2GNDEA5VRSTVCC5V并行擴展三總線存儲器擴展單片機內(nèi)部的并行I/O口及其應(yīng)用并行接口擴展

本章內(nèi)容AT89C52單片機對外擴展三總線外部地址鎖存器單片機的P0口是分時復(fù)用的地址/數(shù)據(jù)總線,因此在進行存儲器擴展時,必須利用地址鎖存器將地址信號鎖存起來。接ALE接地P0.0~P0.7A0~A7存儲器擴展的連線原則讀寫控制與存儲器的地址空間分配外部程序存儲器的擴展原理及時序程序存儲器擴展電路外部數(shù)據(jù)存儲器的擴展方法及時序靜態(tài)RAM擴展電路補1:同時擴展程序存儲器和數(shù)據(jù)存儲器的方法補2:程序、數(shù)據(jù)存儲空間的混合存儲器的擴展存儲器擴展的連線原則同性質(zhì)的總線相連。數(shù)據(jù)線連數(shù)據(jù)線,地址線連地址線,控制線連控制線。特別注意:

程序存儲器/PSEN;

數(shù)據(jù)存儲器/RD和/WR;

混合存儲器/RD和/PSEN同類存儲器防止地址重合??刂凭€相同的地址線不能相同,地址線相同的控制線不能相同。片選信號有效的芯片才選中工作。當一類芯片僅一片時片選端可接地,當同類芯片多片時片選端可通過線譯碼、部分譯碼、全譯碼接地址線(通常是高位地址線),在單片機中多采用線選法。系統(tǒng)擴展歸結(jié)為三總線的連接,連接的方法很簡單,連線時應(yīng)遵守下列原則:存儲器擴展的讀寫控制RAM芯片:能讀能寫,有讀寫控制引腳,記為OE*和WE*

,分別與單片機的RD*和WR*相連。EPROM芯片:只能讀出,故只有讀出引腳,記為OE*

,與PSEN*相連。讀寫控制與存儲器的地址空間分配存儲器地址空間分配單片機發(fā)出的地址是用來選擇某個存儲器單元進行讀寫。要完成這種功能,必須進行“片選”和“單元選擇”。存儲器地址空間分配除考慮地址線連接外,還討論各存儲器芯片在整個存儲空間中所占據(jù)的地址范圍。常用的片選方法有兩種:線性選擇法(簡稱線選法)和地址譯碼法(簡稱譯碼法)。1.線選法

直接利用系統(tǒng)的高位地址線作為存儲器芯片(或I/O接口芯片)的片選信號。

2.譯碼法

最常用的譯碼器芯片:74LS138(3-8譯碼器)、74LS139(雙2-4譯碼器)、74LS154(4-16譯碼器)??筛鶕?jù)設(shè)計任務(wù)的要求,產(chǎn)生片選信號。全譯碼:全部高位地址線都參加譯碼部分譯碼:僅部分高位地址線參加譯碼線選法外圍器件地址選擇線(A15~A0)片內(nèi)地址單元數(shù)地址編碼611611110×

××××××××××2KF000~F7FFH825511101111111111××4EFFC~EFFFH8155RAM11011110

××××××××256DE00~DEFFHI/O11011111

11111×××6DFF8~DFFDH083210111111111111111BFFFH825301111111111111××47FFC~7FFFH線選法2732(1):7000H~7FFFH2732(2):B000H~BFFFH6116(1):E800H~EFFFH6116(2):D800H~DFFFH

當要選中某個芯片時,單片機P2口對應(yīng)的片選信號引腳應(yīng)為低電平,其它引腳一定要為高電平。譯碼法外圍器件地址選擇線(A15~A0)片內(nèi)地址單元數(shù)地址編碼6264000

×××××××××××××8K0000~1FFFH825500111111111111××43FFC~3FFFH8155RAM01011110

××××××××2565E00~5EFFHI/O01011111

11111×××65FF8~5FFDH0832011111111111111117FFFH825310011111111111××49FFC~9FFFH線選法選址電路連接簡單地址空間利用率低

地址空間重疊嚴重譯碼法選址

采用譯碼器電路部分譯碼仍有重疊的地址空間全譯碼地址空間利用率高,地址唯一線選法與譯碼法比較CBAY7Y6Y5Y4Y3Y2Y1Y01000001111111010000111111101100010111110111000111111011110010011101111100101110111111001101011111110011101111111其它狀態(tài)×××11111111G1G2AG2B74LS138真值表例

要擴8片8KB的RAM6264,如何通過74LS138把64KB空間分配給各個芯片?用74LS138把64K空間全部劃分為每塊4KB外部程序存儲器的擴展原理及時序

P0MCS-51

ALE

P2

PSEN鎖存器高八位地址低八位地址指令

EPROM/EEPROM

地址OE圖7-1

MCS-51單片機程序存儲器的擴展擴展程序存儲器常用的芯片是EPROM,如:2716(2K×8)、2732(4K×8)、2764(8K×8)、27128(16K×8)、27256(32K×8)、27512(64K×8)等。另外,還有+5V電可擦除EEPROM,如2816(2K×8)、2864(8K×8)等。訪問片外程序存儲器的時序程序存儲器擴展電路-EPROM

常用EPROM芯片介紹(名稱/8)

擴展電路實例擴展一片EPROM27256擴展兩片EPROM2764P2.7=00000H~7FFFHP2.7=18000H~FFFFH74LS3731885D7…D0Q7…Q0PSENALEP0P2P2.58031EAA0~A12D0~D7OECE2764IC1A0~A12D0~D7OECE2764IC20000H~1FFFH2000H~3FFFHA0~A7

P2.4~P2.0GOEA15A14A13A12A11A10A9A8A7~A0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0000000~00XX111111~1IC1IC2存儲器000B010B100B110B0000H

、4000H、8000H

、C000H1FFFH、5FFFH、

9FFFH、DFFFHXX1111111~10~000000001B011B101B111B2000H、6000H、A000H、E000H3FFFH、7FFFH、

BFFFH、FFFFH地址空間——地址段不唯一程序存儲器擴展電路-EEPROM外部數(shù)據(jù)存儲器的擴展方法及時序

P1

P0

ALE8031P2P3RDWR鎖存器數(shù)據(jù)

地址

RAM(2K×8)WEOE常用的外部數(shù)據(jù)存儲器有SRAM和DRAM。SRAM讀寫速度高;但集成度低,成本高,功耗大。DRAM集成度高,成本低,功耗相對較低;但需要增加一個刷新電路,附加另外的成本。

訪問片外數(shù)據(jù)存儲器/I/O口的時序

靜態(tài)RAM擴展

擴展兩片SRAM6264線選法譯碼法線選+5V74LS3731885RDALEP0P2P2.58031EAA0~A12D0~D7OECE6264IC1A0~A12D0~D7OECE6264IC20000H~1FFFH2000H~3FFFHA0~A7

P2.4P2.3P2.2P2.1P2.0WEWEWRCE2CE2+5VD7…D0Q7…Q0GOE地址段不唯一A15A14A13A12A11A10A9A8A7~A0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0000000~00XX111111~1IC1IC2存儲器000B010B100B110B0000H

、4000H、8000H

、C000H1FFFH、5FFFH、

9FFFH、DFFFHXX1111111~10~000000001B011B101B111B2000H、6000H、A000H、E000H3FFFH、7FFFH、

BFFFH、FFFFH片外剩2根線,每片有4段地址段全譯碼片內(nèi)13根片外3根2000H~3FFFH74LS373885D7…D0Q7…Q0RDALEP0P2P2.58031EA0000H~1FFFHA0~A7

P2.4P2.3P2.2P2.1P2.0GA0~A12D0~D7OECE6264IC2WEA0~A12D0~D7OECE6264IC1WEWRCBAG2AG2BGY7…Y1Y0+5VP2.6P2.774LS138CE2+5VCE2+5VOE全譯碼——各芯片地址唯一P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0000000~0000111111~1IC1IC2000BY0—CE0000H1FFFH001111111~10~000000001BY1—CE2000H3FFFHA15A14A13A12A11A10A9A8A7~A0存儲器CBA補1:同時擴展程序存儲器和數(shù)據(jù)存儲器的方法6264276461162732EPROM與SRAM擴展全譯碼2764與626474LS373885D7…D0Q7…Q0RDALEP0P2P2.58031EA0000H~1FFFHA0~A7

P2.4~P2.0GWRCBAG2AG2BGY7…Y1Y0P2.6P2.774LS1380000H~1FFFHPSENA0~A12D0~D7OECE16264WECE2A0~A12D0~D7OECE12764+5V+5VOE1800H~1FFFH二級譯碼2732611674LS373884D7…D0Q7…Q0RDALEP0P2P2.48031EA0000H~0FFFH4KBA0~A7

P2.3P2.2P2.1P2.0GA0~A10D0~D7OECE6116WEA0~A11D0~D7OECE2732WRCBAG2AG2BGY7…Y1Y0+5VP2.5P2.674LS1381000H~17FFH2KBPSENP2.7P2.2P2.1P2.0≥1P2.3≥11OE全譯碼——各芯片地址唯一P2.7A15G2AG2BP2.6P2.5P2.4P2.3P2.2P2.1P2.0P0000000~000011111~1IC12732IC261160000BY0—CE0000H~0FFFH0001111~10~00000100010BY1+P2.3CE1000H~17FFHA14A13A12A11A10A9A8A7~A0存儲器CBA0001111~10~0000111800H~1FFFHY1+P2.3補2:程序、數(shù)據(jù)存儲空間的混合MCS-51系列單片機中的數(shù)據(jù)存儲器和程序存儲器在邏輯上是嚴格分開的。在實際設(shè)計和開發(fā)單片機系統(tǒng)時,程序若放在RAM,可方便調(diào)試和修改,為此需將程序存儲器和數(shù)據(jù)存儲器混合使用。在硬件上將/RD信號和/PSEN相“與”后連到RAM的讀選通端/OE即可(如下圖所示),/WR信號依然連接RAM的/WE端。要用RAM類芯片或EEPROM類P1

P08031

ALE

PSENP2P3RDWR鎖存器數(shù)據(jù)

地址

RAM(2K×8)WEOE&外部混合存儲器的擴展AT89C52單片機內(nèi)部有四個8位并行I/O口:

P0、P1、P2和P3

P0~P3都可以作準雙向通用I/O口

P0、P2和P3口還有復(fù)用的第二功能每個口都包含:

一個(8位)鎖存器(即特殊功能寄存器P0~P3)

一個輸出驅(qū)動器

和兩個三態(tài)輸入緩沖器

AT89C52內(nèi)部的并行I/O口及應(yīng)用

1.P0口功能:通用I/O口(C=0)與門4輸出為0,T2截止,因此輸出級是漏級開路的。要使“1”信號正常輸出,必須外接上拉電阻。CPU對P0口的讀操作有2種:讀引腳和讀-改-寫鎖存器在進行“讀引腳”的輸入操作之前,應(yīng)先向口鎖存器寫入“1”地址/數(shù)據(jù)分時復(fù)用線(C=1)T1、T2處于反相狀態(tài),構(gòu)成推拉式的輸出電路,從而大大增加了帶負載能力當8051組成的系統(tǒng)無外擴存儲器或I/O接口時,由硬件自動使控制信號C=0,開關(guān)MUX撥向鎖存器的/Q輸出端;當外擴存儲器或I/O接口,CPU對片外存儲器或I/O口讀寫時,由硬件自動使控制信號C=1,MUX撥向反相器3的輸出端2.P1口

功能:

P1口作通用I/O口P1口做輸出口時,內(nèi)部數(shù)據(jù)經(jīng)過鎖存器送到P1.0-P1.7上。由于內(nèi)部有上拉電阻,所以P1口作輸出口使用時,不用外接上拉電阻。

CPU對P1口的讀操作有2種:讀引腳和讀-改-寫鎖存器P1口也是一個“準雙向”口,作輸入口時應(yīng)先向口鎖存器寫入“1”3.P2口

功能:

控制=0:

P2口用作通用I/O口與P1口類似控制=1:

P2口用作高8位地址總線

4.P3口功能:

P3口用作通用I/O口

(第二輸出功能端=1)

作輸出口,Q通過與非門3送至T1輸出作輸入口讀引腳狀態(tài)時,應(yīng)由軟件預(yù)先向口鎖存器寫入“1”,T1截止,口引腳狀態(tài)經(jīng)緩沖器4(常開)、緩沖器1送到內(nèi)部總線。

P3口用作第二功能

(要求Q=1)

作第二功能輸出時,由第二輸出功能端輸出的信號驅(qū)動T1,送到口引腳上

作第二功能輸入時,由于Q=1且第二輸出功能端=1,T1截止,引腳為高阻輸入。某位引腳的第二輸入功能信號(如/INT1)經(jīng)緩沖器4送入第二輸入功能端。、三根第二功能輸出引腳:TxD、/WR和/RD五根第二功能輸入引腳:

/INT0、/INT1、T0、T1和RxD

AT89C52內(nèi)部并行I/O口的應(yīng)用“讀鎖存器”和“讀引腳”的指令P0、P2、P3口復(fù)用作片外擴展系統(tǒng)的系統(tǒng)總線直接輸入/輸出

一、“讀鎖存器”和“讀引腳”的指令

1.“讀鎖存器”的指令

P0~P3作目的操作數(shù)的指令,能實現(xiàn)“讀—修改—寫”口鎖存器的操作,這類指令有:(1)字節(jié)操作指令(2)位操作指令

ANLPx,—JBCPX.Y,relORLPx,—CPLPX.YXRLPx,—CLRPX.Y DECPxSETBPX.YDJNZPx,relMOVPX.Y,CINCPx

其中:X是口的序號0~3,Y是位的序號0~7

2.“讀引腳”的指令“讀引腳”指令的特點是:P0~P3作為源操作數(shù)出現(xiàn)在指令中,但在讀引腳數(shù)據(jù)之前,必須對所讀的口或口位的D鎖存器寫入“1”。

(1)字節(jié)操作指令

要正確讀引腳數(shù)據(jù),必須先寫一條MOVPX,#0FFH指令或能對所讀的口或口位的D鎖存器寫入“1”的指令,而后緊接著寫下面的指令:

MOV A,PXANLA,PXMOV direct,PXORLA,PXXCH A,PXXRLA,PXPUSH PX ANLdirect,PXADD A,PX ORLdirect,PXADDC A,PXXRLdirect,PXSUBB A,PX Q引腳信號(2)位操作指令同理,必須先寫一條SETBPX.Y或能對所讀口位的D鎖存器寫入“1”的指令,在其后再緊跟如下指令。

MOVC,PX.YANLC,PX.YORLC,PX.YJNBPX.Y,relJBPX.Y,rel

二、P0、P2、P3口復(fù)用作片外擴展系統(tǒng)的系統(tǒng)總線

無條件輸入/輸出程序查詢輸入/輸出程序中斷輸入/輸出程序

三、直接輸入/輸出[例]

簡單開關(guān)量的輸入/輸出1)P1.7~P1.4并行輸出程序通過驅(qū)動P1.7~P1.4輸出,使LED3~LED0巡回顯示,程序如下:ORG0000HMAIN1:MOVSP,#6FH

MOVA,#0FFHMOVP1,A;P1口輸出使LED3~LED0全滅

ANLA,#0EFHLOOP:MOVP1,A;P1.4=0ACALLDLYRLAJBACC.0,LOOPMOVA,#0EFHSJMPLOOP;延時子程序

DLY: MOVR6,#0FHDLY1:MOVR5,#0FFHDLY2:MOVR4,#0FFHDLY3:DJNZR4,DLY3DJNZR5,DLY2DJNZR6,DLY1 RETENDLED“0”亮“1”滅(1)無條件輸入/輸出程序2)讀入P1.3~P1.0引腳上的開關(guān)狀態(tài),再經(jīng)P1.7~P1.4輸出去驅(qū)動LED3~LED0發(fā)光二極管,使發(fā)光二極管顯示開關(guān)狀態(tài)。對應(yīng)參考程序:ORG0100HMAIN2:MOVA,#0FFHMOVP1,A;低4位為輸入,高4為輸出使LED3~LED0全滅

MOVA,P1

SWAPA

MOVP1,A

HERE:SJMPHERE

END

(2)查詢輸入/輸出程序讀入P3.0引腳上的開關(guān)K4的預(yù)置狀態(tài)。若P3.0=1,則驅(qū)動P1.7輸出使LED3閃亮一段時間;否則,查詢等待。參考程序如下:

ORG0200HMAIN3:MOVSP,#60HSETBP1.7WAIT:JNBP3.0,WAIT

MOVR7,#0FHLOOP:CPLP1.7ACALLDLYDJNZR7,LOOP SJMPWAITEND并行接口芯片及其擴展AT89C52片上共有四個口P0~P3可用作基本的I/O口使用,除P1口外其余口都是多功能的。因此在較復(fù)雜的系統(tǒng)中,I/O口就不夠,必須進行擴展。

Intel公司的許多外圍電路都可作為51的擴展口。

8155:可編程的RAM/IO定時擴展口

8255:可編程的并行擴展口

8279:可編程的鍵盤/顯示接口

8251:可編程的串行接口

74LS373、74LS273:8位數(shù)據(jù)/地址鎖存器

74LS244:8路總線驅(qū)動門電路簡單的I/O口擴展簡單I/O口擴展電路采用8255擴展I/O口8255的內(nèi)部結(jié)構(gòu)和引腳排列8255的工作方式8255的控制字8255與單片機的接口8255的初始化與應(yīng)用一、8255的內(nèi)部結(jié)構(gòu)和引腳排列8255的內(nèi)部結(jié)構(gòu)和引腳圖A口、B口和C口:A口、B口和C口均為8位I/O數(shù)據(jù)口,都可以和外設(shè)相連,分別傳送外設(shè)的輸入/輸出數(shù)據(jù)或控制信息。A、B組控制電路:根據(jù)CPU的控制字控制8255工作方式,A組控制A口及C口的高4位,B組控制B口及C口的低4位。數(shù)據(jù)緩沖器:雙向三態(tài)8位的驅(qū)動口,用于和單片機的數(shù)據(jù)總線相連,傳送數(shù)據(jù)或控制信息。讀/寫控制邏輯:接收MCS-51送來的讀/寫命令和選口地址,用于控制對8255的讀/寫。結(jié)構(gòu)數(shù)據(jù)線(8條):D0~D7為數(shù)據(jù)總線,用于傳送CPU和8255之間的數(shù)據(jù)、命令和狀態(tài)字??刂凭€和尋址線(6條):RESET:復(fù)位信號,輸入,高電平有效。一般和單片機的復(fù)位相連。復(fù)位后,8255所有內(nèi)部寄存器清0,所有口都為輸入方式。/RD和/WR:讀/寫信號線,輸入,低電平有效。當/RD為0時,8255送出信息到CPU;反之亦然。/CS:片選線,輸入,低電平有效。A0、A1:地址輸入線。4種組合00、01、10、11分別用于選擇A、B、C口和控制寄存器。I/O口線(24條):PA0~PA7、PB0~PB7、PC0~PC7為24條雙向三態(tài)I/O總線,分別與A、B、C口相對應(yīng),用于8255和外設(shè)之間傳送數(shù)據(jù)。電源線(2條):VCC為+5V,GND為地線。引腳8255有三種工作方式:方式0、方式1、方式2。方式的選擇是通過上述寫控制字的方法來完成的。二、8255的工作方式方式0:基本輸入/輸出方式這種方式下,輸入輸出都無需握手信號,端口A、B、C都可作為輸入或輸出口使用。該方式適用于無條件與查詢方式數(shù)據(jù)傳送。方式1:選通輸入/輸出方式這種方式下,無論是輸入還是輸出都通過應(yīng)答關(guān)系實現(xiàn),這時端口A或B用作數(shù)據(jù)口,端口C的一部分引腳用作握手信號線與中斷請求線。該方式適用于查詢與中斷方式數(shù)據(jù)傳送。方式2:選通雙向傳輸方式僅適用于端口A,這時A口的PA7-PA0作為雙向的數(shù)據(jù)總線,端口C有5條引腳用作A的握手信號線和中斷請求線,而B口和C口余下的3位仍可工作于方式0或1。該方式適用于查詢與中斷方式數(shù)據(jù)傳送。>方式1-選通輸入/輸出方式10111/0×××方式1端口A輸入PC7、PC61輸入,0輸出A組工作于方式1輸入的控制字INTRAINTEAPC4PC5PC3PC6~PC7PA7~PA0I/OIBFA8RDSTBA1××1××1×方式1端口B輸入B組工作于方式1輸入的控制字INTEBPC2PC1PC0PB7~PB08STBBIBFBINTRBRDINTE為中斷允許位,對應(yīng)PC口的D2或D4,可通過對PC口按位寫方法設(shè)置。INTRAINTEAPC4PC5PC3PC6~PC7PA7~PA0I/OIBFA8RDSTBA選通信號輸入端,低電平有效,由外設(shè)提供。當外設(shè)輸入一個數(shù)據(jù)到PA7~PA0時,該信號有效。輸入緩沖器滿信號,高電平有效,由8255輸出至外設(shè)。當IBF=1時,表示當前有一個新數(shù)據(jù)在輸入緩沖器中,可作為狀態(tài)信號供CPU查詢用。8255送往CPU的中斷請求信號,高電平有效。CPU響應(yīng)中斷后,可通過中斷服務(wù)程序從A口的輸入數(shù)據(jù)緩沖/鎖存器讀取輸入設(shè)備送來的數(shù)據(jù)。10101/0×××方式1端口A輸出PC5、PC41輸入,0輸出A組工作于方式1輸出的控制字1××1××0×方式1端口B輸出B組工作于方式1輸出的控制字INTEBPC2PC1PC0PB7~PB0WRACKBOBFBINTRBINTEAPC6PC7PC3PA7~PA0WRPC4~PC5INTRAACKAOBFAI/OINTE為中斷允許位,對應(yīng)PC口的D2或D6,可通過對PC口按位寫方法設(shè)置。外設(shè)響應(yīng)輸入信號,低電平有效,由外設(shè)送給8255。有效時表示外設(shè)已經(jīng)取走CPU通過8255輸出的數(shù)據(jù)。輸出緩沖器滿,低電平有效,由8255送給外設(shè)。有效時表示CPU已經(jīng)把數(shù)據(jù)寫入8255指定的端口,通知外設(shè)可以把數(shù)據(jù)取走。8255送往CPU的中斷請求信號,高電平有效。當外設(shè)已經(jīng)接收了CPU通過8255輸出的數(shù)據(jù)后,INTR=1,向CPU申請中斷,要求CPU繼續(xù)輸出數(shù)據(jù),

CPU在中斷程序中把數(shù)據(jù)寫入8255。INTEAPC6PC7PC3PA7~PA0WRPC4~PC5INTRAACKAOBFAI/O11×××端口A方式2

端口B方式設(shè)定PC2~PC01輸入,0輸出PC3PC7PC6PC4PC5INTE2INTE1PC2~PC0INTRAPA7~PA0OBFAACKASTBAIBFA3I/OWRRD>方式2-選通雙向傳輸方式方式2時各控制信號:STB:選通信號,低電平有效。IBF:輸入緩沖器滿信號,高電平有效。OBF:輸出緩沖器滿信號,低電平有效。INTR:中斷請求信號,高電平有效。ACK:數(shù)據(jù)接收應(yīng)答信號,低電平有效。8255C口聯(lián)絡(luò)信號分配表OBFBC口各位方式1方式2輸入方式輸出方式雙向方式PC0INTRBINTRB由B口方式?jīng)Q定PC1IBFB由B口方式?jīng)Q定PC2STBB由B口方式?jīng)Q定PC3INTRAINTRAINTRAPC4I/OPC5IBFAI/OIBFAPC6I/OPC7I/OACKAACKASTBASTBAACKBD7D6D5D4D3D2D1D0A組狀態(tài)B組狀態(tài)方式1下的狀態(tài)字I/OI/OIBFAINTEAINTRA輸入時輸出時IBFBINTEBINTRB輸入時輸出時I/OI/OINTEAINTRAOBFAINTEBINTRBOBFBINTE1IBFAINTE2INTRAINTEBINTRBOBFAIBFB方式2下的狀態(tài)字A組(方式2)B組(方式1輸入)8255狀態(tài)字三、8255的控制字8255的三個端口具體工作在什么方式下,是通過CPU對控制口的寫入控制字來決定的。8255有兩個控制字:方式選擇控制字和C口置/復(fù)位控制字。用戶通過程序把這兩個控制字送到8255的控制寄存器(A0A1=11),這兩個控制字以D7來作為標志。方式選擇控制字方式選擇控制字的格式和定義如圖1(a)所示。C口置/復(fù)位控制字

C口置/復(fù)位控制字的格式和定義如圖1(b)所示。C口具有位操作功能,把一個置/復(fù)位控制字送入8255的控制寄存器,就能將C口的某一位置1或清0而不影響其它位的狀態(tài),特別便于置位復(fù)位內(nèi)部中斷允許觸發(fā)器INTE。圖18255控制字的格式和定義8255和單片機的接口十分簡單,只需要一個8位的地址鎖存器即可。鎖存器用來鎖存P0口輸出的低8位地址信息。四、8255與單片機的接口8051和8255的接口電路例1

設(shè)8255控制寄存器的地址為F3H,試編程使A口為方式0輸出,B口為方式0輸入,PC4~PC7為輸出,PC0~PC3為輸入。

五、8255的初始化與應(yīng)用MOV R0,#0F3HMOVA,#83HMOVX@R0,A10000011例2

設(shè)8255控制字寄存器地址為F3H,試編程將PC1置1,PC3清0。

MOV R0,#0F3HMOV A,#03HMOVX @R0,AMOV A,#06HMOVX @R0,A0000001100000110例3設(shè)8255控制寄存器的地址為7FF3H,A口為工作在方式2,B口為工作在方式0且為輸出,C口低3位(PC0~PC2)為輸出。請編程對8255A進行初始化。MOVDPTR,#7FF3HMOVA,#0C0HMOVX@DPTR,A110xx000例4設(shè)8255控制寄存器的地址為7FF3H,工作在方式1,A口輸出,B口輸入,PC4~PC5為輸入,禁止B口中斷。請編程對8255A進行初始化。MOVDPTR,#7FF3HMOVA,#0AEHMOVX@DPTR,AMOVA,#0DHMOVX@DPTR,AMOVA,#04HMOVX@DPTR,A1010111x0000110100000100例5

用8255(起始地址為7FF0H)PA1發(fā)出一個正脈沖,編寫相應(yīng)程序。MOVA,#80H;A口方式0輸出,B口方式0輸出,C口高、低4位均輸出MOVDPTR,#7FF3HMOVX@DPTR,AMOVDPTR,#7FF0HMOVA,#00H MOVX@DPTR,AMOVA,#02H MOVX@DPTR,AMOVA,#00H;PA1產(chǎn)生一個正向脈沖MOVX@DPTR,A例6

開關(guān)控制發(fā)光二極管(A口輸入,B口輸出)。

MOVA,#10010000BMOVDPTR,#PORTCNMOVX@DPTR,ALOOP:MOVDPTR,#PORTAMOVXA,@DPTRINCDPTRMOVX@DPTR,ASJMPLOOP例78非門測試(A輸入,B輸出)。

MOVA,#90HMOVDPTR,#PORTCNMOVX@DPTR,ALP0:MOVDPTR,#PORTBMOVA,#00HMOVX@DPTR,AMOVDPTR,#PORTAMOVXA,@DPTRCJNEA,#0FFH,ERR

LP1:MOVDPTR,#PORTBMOVA,#0FFHMOVX@DPTR,AMOVDPTR,#PORTAMOVXA,@DPTRCJNEA,#00H,ERROK:MOVR7,#00HSJMPHEREERR:MOVR7,#0FFHHRER:SJMP$R7=0正確,R7=FF錯誤例8

將4位輸入的二進制狀態(tài)用7段碼顯示(A輸入,B輸出)。MOVA,#90HMOVDPTR,#PORTCNMOVX@DPTR,ALP0:MOVDPTR,#PORTAMOVXA,@DPTRANLA,#0FHMOVDPTR,#SEGMOVCA,@A+DPTRMOVDPTR,#PORTBMOVX@DPTR,A……….SEG:DB3FH,06H,…….abcdefg例9假設(shè)有一個4×4的矩陣鍵盤通過8255(起始地址為7F00H)與微機相連,編寫鍵盤掃描程序。MOVA,#82HMOVDPTR,#7FF3HMOVX@DPTR,ABEGIN:MOVA,#00HMOVDPTR,#7FF0HMOVX@DPTR,AMOVDPTR,#7FF1HWAIT:MOVXA,@DPTRANLA,#0FHCJNEA,#0FH,SMSJMPWAITSM:鍵處理程序

例10

假設(shè)利用8255的A口方式0與打印機相連,將內(nèi)存緩沖區(qū)BUFF中的字符打印輸出。

打印機接口在/STB有效時,接收數(shù)據(jù),而在BUSY有效時,表示打印機忙,不能接收數(shù)據(jù)。因此,先檢測打印機的BUSY信號,如果為低電平,則發(fā)送數(shù)據(jù),同時發(fā)出有效的/STB信號給打印機,通知其接收數(shù)據(jù),循環(huán)至全部發(fā)送完成。D7-D0D7-D0WRRDA1A0A7-A2=0110008255打印機D7-D0STBBUSYWRRDA1A0PA7-PA0PC0PC7PORTAEQU 7F60HPORTBEQU 7F61HPORTCEQU 7F62HPORTCNEQU 7F63HSTART:MOV DPTR,#PORTCNMOV A,#88HMOVX@DPTR,AMOVA,#01HMOVX@DPTR,AMOVR0,#BUFFWAIT:MOVDPTR,#PORTCMOVXA,@DPTRANLA,#80HJNZWAIT;讀打印機狀態(tài),忙則等待

MOVA,@R0CJNEA,#‘$’,SENDSJMPPRINT_OVERSEND:MOVDPTR,#PORTAMOVX@DPTR,A;發(fā)送數(shù)據(jù)

MOVDPTR,#PORTCMOVA,#00HMOVX@DPTR,AMOVA,#01HMOVX@DPTR,AINCR0SJMPWAITPRINT_OVER:……8255初始化置位PC0,/STB無效產(chǎn)生/STB,打印機接收并打印數(shù)據(jù)例11

假設(shè)利用8255的A口方式1與打印機相連,將內(nèi)存緩沖區(qū)BUFF中的字符打印輸出。

打印機接口在/STB有效時,接收數(shù)據(jù),而在/ACK有效時,表示打印機可接收下一個數(shù)據(jù)。因此,先給打印機發(fā)送數(shù)據(jù),然后根據(jù)/ACK信號產(chǎn)生中斷。中斷中,先發(fā)送數(shù)據(jù),再產(chǎn)生一個負脈沖給打印機的/STB,通知其接收數(shù)據(jù),全部發(fā)送完成后不再產(chǎn)生中斷。D7-D0D7-D0WRRDA1A0A7-A2=0110008255打印機D7-D0STBACKWRRDA1A0PA7-PA0PC7PC6PC3INTRACentronics并行打印接口標準/STROBE:輸入,下降沿用于通知打印機接收數(shù)據(jù);BUSY:輸出,有效表示打印機正在接收并處理數(shù)據(jù)的狀態(tài);/ACK:輸出,下降沿用于通知其他設(shè)備可以傳送下一個數(shù)據(jù)。另一種可編程的接口芯片8155。Intel公司研制的8155不僅具有兩個8位的I/O端口(A口、B口)和一個6位的I/O端口(C口),而且還可以提供256?B的靜態(tài)RAM存儲器和一個14位的定時/計數(shù)器。8155和單片機的接口非常簡單,目前被廣泛應(yīng)用。采用8155擴展I/O口CBAAD012PA021AD113PA122AD214PA223AD315PA324AD416PA425AD517PA526AD618PA627AD719PA728PB029CE8PB130RD9PB231WR10PB332IO/M7PB433ALE11PB534PB635PB736TIMEROUT6PC037PC138TIMERIN3PC239PC31PC42RESET4PC558155256字節(jié)靜態(tài)RAM14位定時計數(shù)器TIMERINTIMEROUTVCC(+5V)VSS(GND)PA0-PA7IO/MCEALERDWRRESETAD0-AD7PB-PB7PC0-PC78155的引腳圖和結(jié)構(gòu)框圖一、8155的結(jié)構(gòu)和引腳(1)地址/數(shù)據(jù)線AD0~AD7(8條)低8位地址線和數(shù)據(jù)線的共用輸入總線,常和51單片機的P0口相連,用于分時傳送地址數(shù)據(jù)信息,當ALE=1時,傳送的是地址。(2)I/O口總線(22條)PA0~PA7、PB0~PB7分別為A、B口線,用于和外設(shè)之間傳遞數(shù)據(jù);PC0~PC5為C端口線,既可與外設(shè)傳送數(shù)據(jù),也可以作為A、B口的控制聯(lián)絡(luò)線(3)控制總線(8條)RESET:復(fù)位線,通常與單片機的復(fù)位端相連,復(fù)位后,8155的3個端口都為輸入方式。/RD、/WR:讀/寫線,控制8155的讀、寫操作。ALE:地址鎖存線,高電平有效。它常和單片機的ALE端相連,在ALE的下降沿將單片機P0口輸出的低8位地址信息鎖存到8155內(nèi)部的地址鎖存器中。因此,單片機的P0口和8155連接時,無需外接鎖存器。

/CE:片選線,低電平有效。IO/M:RAM或I/O口的選擇線。=0時,選中8155的256BRAM;=1時,選中8155片內(nèi)3個I/O端口以及命令/狀態(tài)寄存器和定時/計數(shù)器。TIMERIN、/TIMEROUT:定時/計數(shù)器的脈沖輸入、輸出線。TIMERIN輸入脈沖對8155內(nèi)部的14位定時/計數(shù)器減1;為輸出線,當計數(shù)器計滿回0時,8155從該線輸出脈沖或方波,波形形狀由計數(shù)器的工作方式?jīng)Q定。6個內(nèi)部寄存器的地址分配表

AD7~AD0選中寄存器A7A6A5A4A3A2A1A0×××××000×××××001×××××010×××××011×××××100×××××101內(nèi)部命令/狀態(tài)寄存器PA口PB口PC口定時/計數(shù)器低8位寄存器定時/計數(shù)器高8位寄存器和接口芯片8255

溫馨提示

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

評論

0/150

提交評論