P2.3P2.2P2.1P2.074LS3738031P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEPSENRDWRD7D6D5D4D3D2D1D0GQ7Q6Q5Q4Q3Q2Q1Q0OE2716A10A9A8CE6116A10A9A8CEA7D7A6D6A5D5A4D4A3IC1D3A2D2A1D1A0D0OEA7D7A6D6A5D5A4D4A3IC2D3A2D2A1D1A0D0OEWEEA习题6.3图 一片2716和一片6116的扩展6.4. 以译码编址方式,把4片RAM 6116组成8KB的数据存储器,请画出逻辑连接图,并说明各芯片地址范围。
解:由于RAM 6116的容量为2KB,所以扩展8KB外部RAM需要4片6116,此处采用译码法进行片选如图所示,各芯片对应的存储地址空间为:
IC0:0000H~07FFH(Y0) IC1:0800H~0FFFH(Y1) IC2:1000H~17FFH(Y2)IC3:1800H~1FFFH(Y3)
P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.48051P0.3P0.2P0.1P0.0ALEGBAY0Y1Y2Y374LS139IC074LS373IC2IC2IC3D7D6D5D4D3D2D1D0GQ7Q6Q5Q4Q3Q2Q1Q0OEA10D7A9D6A8D5A7D4A6D3A5D2A46116D1A3D0A2RAMCEA1WEA0OEA10D7A9D6A8D5A7D4A6D3A5D2A46116D1A3D0A2RAMCEA1WEA0OEA10D7A9D6A8D5A7D4A6D3A5D2A46116D1A3D0A2RAMCEA1WEA0OEA10D7A9D6A8D5A7D4A6D3A5D2A46116D1A3D0A2RAMCEA1WEA0OERDWR习题6.4图 用译码法扩展8KB RAM电路习题7
7.1.8031与8255A能否构成完整的单片机应用系统?为什么? 答:不能,因为8031无内部程序存储器, 必须外扩一个程序存储器。
7.2.用8255A芯片扩展单片机的I/O口,8255的A口作输入,A口的每一位接一个开关,用B口作为输出,输出的每一位接一个发光二极管。现要求某个开关接1时,相应位上的发光二极管就亮(输出低电
平0)。试写出相应的程序。设8255的A口地址为70H,B口地址为71H,C口地址为72H,控制口地址为73H。
解:参考程序如下:
START:MOV R1,#73H
;置A口输入,B口、C口输出,方式0
MOV A,#90H
MOVX @R1,A MOV R0,#70H
MOVX A,@R0 CPL A INC R0
MOVX @R0,A AJMP START
;从A口读入
;B口输出 ;循环
…10k×8K0+5V……P0D0~7DALEGCEQ0Q1Q7D0~7DA0A1CS8051RDWRRSTPA0PA1PA2PA3PA4PA5PA6PA78255APB0PB1PB2RDPB3WRPB4RESETPB5PB6PB7K7200Ω×8118051单片机与8255A的连接7.3.试用8155芯片扩展8031应用系统的RAM、并行I/O口和定时器/计数器,设计接口电路,确定口地址,并编写初始化程序。
解:8155与8031的接口电路如图所示, 8155的CE接8031的P2.0,8155的IO/M端接8031
的P2.1。
⑴ 当P2.1=0,P2.0=0时锁存的地址指向8155的RAM,其地址范围为0000H~00FFH对于8031来说,8155的RAM是外部RAM,不需要初始化编程,只要使用MOVX指令即可实现。
⑵ 当P2.1=1,P2.0=0时锁存的地址指向I/O口,各端口的地址分配为(设未用的位为低电平)
AD7P0.7PA命令状态寄存器:0200H AD6P0.6A口:02001H
B口:0202H C口:0203H
计数器的低8位TL:0204H 计数器的高8位TH:0205H
初始化编程举例如下:设要求选择8155的A口为基本输入口,B口为基本输出口,C口为基本输入口,并立即启动计数器工作,则应写的控制字为C2H。格式如下:
MOV DPTR,#0200H MOV A,#0C2H MOVX @DPTR,A
习题7.3图 8155与8031的接口电路
RST80518031 P0.5P0.4P0.3P0.2P0.1P0.0P2.1P2.0ALERDWRAD5AD4AD3AD2AD1AD0PB…PC+5V8155IO/MCEALERDWRVccTIMERINRESETTIMEROUTVss7.4.已知8031外部扩展了4KB RAM,所占地址范围是0000H~0FFFH。扩展一片8155,其内部RAM和I/O口地址分配见本章中的8155与8031的连接。试编写一程序,要求:
(1)8155 A口中输入数据分别存入外部RAM 20H单元和8031内部RAM 30H单元;
(2)把8155中RAM FC40H单元的内容从B口输出。 解: MOV DPTR,#0FEF8H
MOV A,#0C2H ;写控制字,A口为输入,B口为输出
MOVX @DPTR,A MOV DPTR,#0FEF9H MOVX A,@DPTR ;从A口输入
MOV R0,#20H MOVX @R0,A ;存入外部RAM20H单元 MOV 30H,A ;存入内部RAM30H单元 MOV DPTR,#0FC40H
MOVX A,@DPTR MOV DPTR,#0FEFAH MOVX @DPTR,A
;8155中RAM FC40H单元的内容从B口输出 RET
END
7.5.试将8031单片机外接一片EPROM 27128和一片8155 RAM/IO扩展芯片组成一个应用系统: (1)画出扩展系统的电路连接图,并指出程序存储器、扩展数据存储器和I/O端口的地址范围。 (2)编写程序,将8031内部RAM以DATA1开始的数据区中共16个数与外部RAM以DATA2开始的数据区中16个数据进行交换。
解:(1)27128是16KB的EPROM,8155P2.5~P2.0A13A8是有3个并行I/O口并带有256字节静态RAMP0D7Q7A7和一个14位定时器/计数器的可编程接口芯D0373Q0ALEGEA027128片,扩展系统硬件连接图如图题7.5图所示。EPROM27128程序存储器地址范围为0000H~3FFFH。PSENOECE8155的RAM地址范围为0000H~00FFH,各8031端口地址为:
AD7PA命令状态寄存器:4000H
ADALE08155PBA口:40001H
EARDRDPCWRWR
B口:4002H P2.6IO/MTINC口:4003H
P2.7CETOUT计数器的低8位TL:4004H 计数器的高8位TH:4005H 题7.5图
(2)数据块交换程序:
MOV R0,#DATA1 ;内部RAM指针 MOV DPTR,#DATA2;外部RAM指针 MOV
R1,#10H ;数据长度
LOOP: MOVX A,@DPTR ;取外部RAM一个字节 MOV B,A
;暂存
MOV A,@R0 ;取内部RAM一个字节 MOVX @DPTR,A ;写到外部RAM中
MOV @R0 ,B ;将外部RAM字节数写入内部RAM中 INC R0
;修改地址指针
INC DPTR
DJNZ
R1,LOOP
;未完,则继续
RET END
MOV MOV MOV MOVX MOV MOV MOVX INC MOV MOVX INC MOVX
P2,#83H R0,#0FFH A,#80H @R0,A R0,#0FCH A,#88H @R0,A R0 A,#83H @R0,A R0 @R0,A
;送字母“C”的字段码到PC口 ;送字母“b”的字段码到PB口 ;送字母“A”的字段码到PA口
;8255A初始化(PA、PB、PC均为方式0输出) ;指向8255A的PA口
;P2和R0组成16位地址指针指向8255A控制口
7.6.利用图7.18所示静态显示电路,要求从左到右显示“AbC”试编程实现。 解: DISP:
RET
7.7.利用图7.19所示动态显示电路,要求从左到右显示“good by”(g可用9代替),试编写实现。 解:根据图7.19共阴结构,LED显示器左到右显示“good by”的字段段和字位码如下表示:
表7.7 8位动态显示状态及其字段码、字位码 字段码 字位码 显示的状态 6FH 7FH 9 5CH BFH O 5CH DFH O 5EH EFH d 00H F7H 暗 7CH FBH b 2EH FDH y 00H FEH 暗 由于字段码口和字位码口的驱动器都是反向器,因此8155的PA口和PB口送出的数据应为其反码。LED的显示是从最左位开始,逐位向右,则字位码的变化是依此右移。
设8155的命令状态口、PA口、PB口和PC口的地址为8B00H~8B03H,R1作为显示缓冲区的地址指针,R2存放LED的字位码。
显示程序如下: DIPP:
MOV DPTR,#8B00H MOV A,#03H
MOVX @DPTR,A ;8155初始化 MOV R1,#00H MOV A,R2
;字段码在TAB中位置指针赋初值
MOV R2,#80H ;送已取反的字位码初值
LOOP: MOV DPTR,#8B01H;指向8155PA口
MOVX @DPTR,A ;送字位码 INC DPTR
;指向8155PB口
;调整偏离量 ;字段码取反
;查表得字段码
MOV A,R1 ADD A,#0EH CPL A
MOVC A,@A+PC
相关推荐: