nullnull第八章
单片机存储器扩展技术 null 存储器系统基本知识
1. 只读存储器(ROM)
(1) 掩模工艺ROM
(2)可一次性编程ROM(PROM)
(3)紫外线擦除可改写ROM(EPROM)
(4)电擦除可改写ROM(EEPROM或E2PROM)
(5)快擦写ROM(flash ROM)null随机存储器RAM(也叫读写存储器)
(1) 双极型RAM
(2) 金属氧化物(MOS)RAM
静态RAM(SRAM)
动态RAM(DRAM)
集成RAM(i RAM)
非易失性RAM(NVRAM) null8.1存储器(EPROM)的扩展
三总线结构:
地址总线:由P2口提供高8位地址线(A8――A15),此口
具有输出锁存的功能,能保留地址信息。
P0口提供低8位地址线。
数据总线:由P0口提供。此口是双向、输入三态控制的通道口。
控制总线:扩展系统时常用的控制信号为地址锁存信号ALE,片外程序存储器取指信号以及数据存储器RAM和外设接口共用的读写控制信号等。 null 图8.1为单片机扩展成三总线的结构图。扩展芯片与主机相连的方法同一般三总线结构的微处理机完全一样。null一、程序存储器扩展(2764)
以2764作为单片机程序存储器扩展的典型芯片为例进行说明
1. 2764的引线
2764是一块8K×8bit的EPROM芯片,其管脚图如图8.2所示
·A12~A013位地址信号输入线,说明芯片的容量为8K=213个单元。
·D7~D0 8位数据,
明芯片的每个存贮单元存放一个字节(8位二进制数)。
· /CE为选片信号。当它有效低电平时,能选中该芯片。
·/OE为输出允许信号。当它为低电平时,芯片中的数据可由D7~D0输出。
null图8.2 EPROM2764管脚图 图8.2 SRAM6264管脚图 null2.系统扩展一片EPROM的实例。
图8.3 单片ROM扩展连线图 null3. 2764的连接使用null 存储器地址分析
由于P2.7、P2.6、P2.5任意。从000到111共有8种组合,其2764芯片的地址范围是:
最低地址:0000H(A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0 )
× × × 0 0 0 0 0 0 0 0 0 0 0 00
最 高 地 址:
1FFFH (A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A 0
× × × 1 1 1 1 1 1 1 1 1 1 1 1 1
(000H~1FFFH)null二、数据存储器的扩展(6264)
单片机与数据存储器的连接方法和程序存储器连接方法大致相同,简述如下:
1. 地址线的连接,与程序存储器连法相同;
2. 数据线的连接,与程序存储器连法相同;
3 .控制线的连接,主要有下列控制信号:
存储器输出信号和单片机读信号相连即和P3.7相连;
存储器写信号 和单片机写信号相连即和P3.6相连。
使用时应注意,访问内部或外部数据存储器时,应分别使用MOV及MOVX指令。
外部数据存储器通常设置二个数据区: null (1) 低8位地址线寻址的外部数据区。此区域寻址空间为256个字节。CPU可以使用下列读写指令来访问此存贮区。
读存储器数据指令:MOVX A ,@Ri
写存储器数据指令:MOVX @Ri,A
由于8位寻址指令占字节少,程序运行速度快,所以经常采用。
(2)16位地址线寻址的外部数据区。当外部RAM容量较大,要访问RAM地址空间大于256个字节时,则要采用如下16位寻址指令。
读存储器数据指令:MOVX A ,@DPTR
写存储器数据指令:MOVX @DPTR ,A
由于DPTR为16位的地址指针,故可寻址64KRAM字节单元null1. 数据存储器扩展使用的典型芯片
数据存储器扩展常使用随机存储器芯片,用的较多的是Intel公 司的6116容量为2KB和6264容量为8KB。
下面以6264芯片为例进行说明,该芯片的主要引脚为:
·A12~A0 13根地址线,说明芯片的容量为8K=213个单元。
·D7~D0 8根数据线 ·、CE2为片选信号。当为低电平,CE2为高电平时,选中该芯片。
·为输出允许信号。当/OE为低电平时,芯片中的数据可由D7~D0输出。
·/WE为数据写信号。 其工作方式如表8-1所示null2. 数据存储器扩展方法
(1) 单片数据存储器扩展
80C51与6264的连接如表8-1所示。
表8-1 80C51与6264的线路连接 null数据存储器扩展的硬件连接如图8.4所示。
图8.4 单片RAM扩展连线图 地址范围:0000H~1FFFHnull8.2 存储器扩展的编址技术
一、 线选法
所谓线选法,就是直接以系统的地址线作为存储芯片的片选信号,为此只需把高位地址线与存储芯片的片选信号直接连接即可。特点是简单明了,不需增加另外电路。缺点是存储空间不连续。适用于小规模单片机系统的存储器扩展。
【例8-1】现有2K*8位存储器芯片,需扩展8K*8位存储结构采用线选法进行扩展。
扩展8KB的存储器结构需2KB的存储器芯片4块。2K的存储器所用的地址线为A0~A10共11根地址线和片选信号与CPU的连接如表8-1所示。null 表8-3 80C51与存储器的线路连接 null扩展存储器的硬件连接如图8. 5所示。 图8.5 线选法连线图 null这样得到四个芯片的地址分配如表8-4所示 null二、译码法
所谓译码法就是使用译码器对系统的高位地址进行译码,以其译码输出作为存储芯片的片选信号。这是一种最常用的存储器编址方法,能有效地利用空间,特点是存储空间连续,适用于大容量多芯片存储器扩展。
常用的译码芯片有:74LS139(双2-4译码器)和74LS138(3-8译码器)等,它们的CMOS型芯片分别是74HC139和74HC138。 null
图8.6 译码器管脚图null 【例8-2】现有2K*8位存储器芯片,需扩展8K*8位存储结构采用译码法进行扩展。
扩展8KB的存储器结构需2KB的存储器芯片4块。2K的存储器所用的地址线为A0~A10共11根地址线和片选信号与CPU的连接如表8-5所示。 null表8-5 80C51与存储器的线路连接 null P2.3、P2.4作为二-四译码器的译码地址,译码输出作为扩展4个存储器芯片的片选信号,P2.5、P2.6、P2.7悬空。扩展连线图如图8.7所示。
图8.7 采用译码器扩展8KB存储器连线图 null这样得到四个芯片的地址分配如表8-7所示。
表8-7 译码方式地址分配表 null思考:1.试写出下图各存储器的地址?
2.当2764和6264具有相同地址时其总线是否冲突?null解:1.芯片2764(1)和6264(1)地址为0000H~1FFFH
芯片2764(2)和6264(2)地址为2000H~3FFFH2.由于程序存储器有的控制总线是PSEN,数据存储器用的总线是RD和WR,所以不会发生总线冲突。null8.3 并行I/O 扩 展一、简单并行I/O口扩展概述
1.简单I/O口的扩展
方法:输出接锁存器
输入接缓冲器
2.对I/0口的操作同RAM
输出:MOVX @DPTR,A 或MOVX @Ri ,A
输入:MOVX A,@DPTR 或MOVX A,@RiMCS-51单片机应用系统中I/O口扩展用芯片主要有
通用I/O口芯片和TTL、CMOS锁存器、缓冲器电路芯片两大类。nullnull对273使用简介: (1)1脚是复位CLR,低电平有效,当1脚是低电平时,输出脚2
(Q0~Q7)全部输出0,即全部复位; (2)当1脚为高电平时,11(CLK)脚是锁存控制端,并且是上升沿触
发锁存,当11脚有一个上升沿,立即锁存输入脚D0~D7的电平状态,
并且立即呈现在在输出脚Q0~Q7上. null74ls244引脚及真值表null 3.简单I/0口的扩展电路(p206)null例8-3 对于图9-2,若实现按下一任意键,对应的LED
发光,试设计程序.
解:程序段如下:
LOOP: MOV DPTR ,#0FEFFH ;指向扩展I/O口地址
MOVX A, @DPTR ;由244读入数据,检测按键
MOVX @DPTR, A ;向273输出数据,驱动LEDnull二.可编程接口电路的扩展(8255)
通用I/O口芯片选用Intel公司的芯片,其接口最为简捷可靠,
如8255、8155等。
null1.芯片引脚及其内部结构图8.10 8255A芯片的引脚图 null表8-8 8255芯片的引脚信号说明null图8.11 8255A芯片的内部结构图 nullnull 1) 8255的三种工作方式
方式0(基本输入/输出方式):A口、B口及C口的两个4位口中任何一个端口都可以由程序设定为输入或输出。作为输出口时,输出数据被锁存;作为输入口时,输入数据不锁存。
2.8255的操作方式null方式1(选通输入/输出方式):A、B、C分为两组。
A组包括A口和C口的高4位,A口可由编程设定为输入口
或输出口,C口的高4位则用来作为A口输入/输出操作的
控制和同步信号;
B组包括B口和C口的低4位,B口可由编程设定为输入口
或输出口,C口的低4位则用来作为B口输入/输出操作的
控制和同步信号。A口和B口的输入数据或输出数据都被锁存。null方式2(双向总线方式) 只有A口工作在方式2
在这种方式下A 口为8位双向总线口,C口的PC3~PC7用来作为输入/输出的控制同步信号。
应注意的是,只有A 口允许作为双向总线口使用,这时B口和PC0~PC2则可编程为方式0或方式l工作。 null2) 8255A的编程控制字(a) 方式选择控制字;(b) C口置位/复位控制字null图8.12 8255的扩展连接图 3.8031与8255的接口方法null连接方法:
1. 地址线 8255的A0、A1 去接锁存器的Q0、Q1
2.片选线 接锁存器的Q7
3.D0~D7 去接单片机的P0
4. 读/RD接单片机/RD
写/WR 接单片机的/WR
RESET接单片机的RESET
null确定8255各口线和控制寄存器地址(难点)
P2.7 … …P2.0 P0.7 … … P0.1P0.0
1 … … 1 0 0 0-----PA (FF7C)
1 … … 1 0 0 1-----PB (FF7D)
1 … … 1 0 1 0 -----PC (FF7E)
1 … … 1 0 1 1--控制寄存器(FF7F)
(与8255没有连接的全部取了高电平)
null [ 例8-4] 试对图8.12中的8255A编程,使其各口工作于方式0,A口作输入,B口作输出,C口高4位作输出,C口的低4位作输入。
由方式选择控制字的格式与 定义可确定出满足要求的方式控制字应为91H(10010001B)。null
MOV DPTR,#FF7FH ;DPTR作地址指针,指向控制口
MOV A,#91H
MOVX @DPTR,A
因为图8.12扩展电路未使用高位地址线,所以端口地址也可使用8位。null [ 例8-5] 试按图8.12扩展电路,写出自8255的B口输出单片机中R7的内容,自8255的A口输入数据到单片机R3的程序。
〔分析题意〕使用8位地址,8255A的A、B、C口及控制口地址分别为7CH、7DH、7EH、7FH。则实现所要求功能的程序为A口的方式0,输出
B口的方式0,输入nullMOV DPTR,#007FH ; DPTR作地址指针,指向控制口
MOV A,#91H ;均为方式0 ,A输入,B输出,
MOVX @DPTR,A ;方式控制字送控制寄存器
MOV DPTR,#007DH ; DPTR指向B口
MOV A,R7 ;
MOVX @DPTR,A ;R7的内容输出到B口
DEC DPTR ;使DPTR指向A口
MOVX A,@DPTR ;从A口输入数据到累加器A
MOV R3,A ;把输入数据送存到R3中null思考题:试写出8255各口及控制器的地址null P2 P0.7~P0.4 P0.3P0.2 P0.1 P0.0
FF F 1 1 0 0 A口
FF F 1 1 0 1 B口
FF F 1 1 1 0 C口
FF F 1 1 1 0 控制寄存器
8255各口的地址。FFFCH FFFDH FFFEH FFFFH