补充总线外部扩展
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6116为24脚封装,6264、62128、62256为28脚封装。这 些RAM芯片的引脚如图8-15所示。
芯片引脚功能: A0~A14:地址输入线。 D0~D7:双向三态数据线。
CE :片选信号输入线。对 6264芯片,当24脚(CS)为高 CE 电平且 为低电平时才选中 该片。 OE :读选通信号输入线,低电 WE 平有效。
1、根据外部总线的连接原则,连接单片机和存储器芯片; 重点是根据地址分配的要求,设计地址总线的连接。 2、在Keil软件中,设置好外部ROM和RAM的地址范围 3、编程,基本不需要考虑外部程序存储器的地址 编程,可以使用xdata存储类型或XBYTE[绝对地址] 对外部数据存储器进行访问。
或:#define ADDR1 XBYTE[0x1FF0] …… ADDR1 = 0x25; a = ADDR1; ……
这种方法在单片机扩展外部IO资源和其他可编程 资源时应用相当广泛,如可编程外围并行接口8255、 外部锁存器、并行A/D、并行D/A等.
小结
单片机扩展外部ROM和RAM的步骤:
片外ROM 地址范围
片外RAM 地址范围
例:如图单片机AT89S51扩展了2片6264(8KB RAM)和2 片2764(8KB ROM)试写出访问地址。
外部RAM读写的C语言编程
1、 使用C语言进行编程,一般情况下,我们用到外部 RAM时,只关心存储空间是否够大,而并不关心所使 用的存储单元的具体地址。这是只需要定义变量,并 指定存储空间为外部RAM即可。
号 “27”后面的数字表示其位存储容量。如果换算成字节 容量,只需将该数字除以8即可。
例如,“27128”中的“27”后的数字 “128”,
128/8 =16KB 随着大规模集成电路技术的发展,大容量存储器芯片产量 剧增,售价不断下降,性价比明显增高,且由于小容量芯 片停止生产,使市场某些小容量芯片价格反而比大容量芯
:写允许信号输入线,低电 平有效。 VCC —工作电源+5V。 GND —地。
数据存储器扩展电路
___ CE A8 – A12
P2.7 P2.0 – P2.4
+5V
ALE
G
D7 : D0
___ OE CS Q7 : Q0 A7 : A0
74HC373
8051
P0 __ EA
6264
外部数据存储器的具体设计。
2.5.2 存储器资源的扩展 程序存储器的扩展
Max 64KB
4KB
数据存储器的扩展
Max 64KB
256B
1、系统扩展结构
AT89S51单片机采用总线结构,使扩展易于实现, AT89S51单片机系统扩展结构如图所示
图1 AT89S51单片机的系统扩展结构
扩展外部程序存储器的地址指针为程序计数器PC和数据指
针DPTR。
扩展的外部程序存储器多使用EPROM、EEPROM类型和
FLASH类型
EPROM芯片简介 EPROM的典型芯片是27系列产品,例如,2764(8KB)、
27128(16KB)、27256(32KB)、27512(64KB)。型
2、地址空间分配和常用芯片
本节讨论如何进行存储器空间的地址分配,并介绍用
于输出低8位地址的常用的地址锁存器。
2.1 存储器地址空间分配 实际系统设计中,既需要扩展程序存储器,又需要扩 展数据存储器,如何把片外的两个64KB地址空间分配给 各个程序存储器、数据存储器芯片,使一个存储单元只对 应一个地址,避免单片机发出一个地址时,同时访问两个 单元,发生数据冲突。这就是存储器地址空间分配问题。
单片机与应用
第三章 MCS-51单片机的 外部存储器扩展
内容概要
Max 64KB 4KB
256B
Max 64KB
许多情况,片内的存储器资源还不能满足需要,为
此需AT89S51单片机进行外部程序存储器和外部数据
存储器的扩展。 由于有时需要扩展多片芯片,首先介绍AT89S51单 片机的两个外部存储器空间的地址分配的两种方法, 即线选法和译码法。最后介绍扩展外部程序存储器和
存储器地址空间分配有两种方法: 线选法和译码法。
a. 线选法
(会浪费部分地址空间且地址空间不连续)
所谓线选法 , 就是直接以系统的地址线作为存储器芯片的 “片选”信号 , 为此只需把用到的地址线与存储器芯片的片选端 直接相连即可。
线选法:
地址范围: 0xC000 ~ 0xDFFF 地址范围: 0xA000 ~ 0xBFFF
用低位地址线。
WHY?
2.2 常用地址译码和锁存芯片
常用的译码器芯片有74LS138(3线-8线译码器)、
74LS139(双2线-4线译码器)和74LS154(4线-16线
译码器)。
2.2 常用地址译码和锁存芯片
常用的锁存器芯片有74LS373(8位锁存器)、
74LS573(8位锁存器)等。373和573功能完全一样,
系统扩展主要包括存储器扩展和I/O接口扩展。
AT89S51单片机的存储器扩展即包括程序存储器扩展又包
括数据存储器扩展。AT89S51单片机采用程序存储器空间
和数据存储器空间截然分开的哈佛结构。扩展后,系统形 成了两个并行的外部存储器空间。
系统扩展是以AT89S51为核心,通过总线把单片机与各扩 展部件连接起来。因此,要进行系统扩展首先要构造系统
___ WR ___ RD D0~D7 ___ WE ___ OE
外部RAM的读写时序
外部RAM读时序为:
第1个机器周期 S1
AL E PSEN RD P2口 P0口 PCL 输出PCH 指令 DPL 输出DPH 数据入 输出PCH PCL 指令
第2个机器周期 S6 S1 S2 S3 S4 S5 S6 S1 S2
控制总线由ALE、/WR、/RD组成; 外部RAM在64KB范围内寻址时,地址指针为DPTR。
SRAM芯片简介
在8位单片机应用系统中,外部扩展的数据存储器主要采 用静态数据存储器(SRAM)。 单片机系统中常用的RAM芯片的典型型号有6116 (2KB ),6264(8KB),62128(16KB),62256 (32KB)。
片还贵。所以,应尽量采用大容量芯片。
芯片引脚功能:
A0~A15:地址线引脚。它的 数目由芯片的存储容量决定,用 于进行单元选择。 D7~D0:数据线引脚。 CE :片选控制端。 OE :输出允许控制端。
PCM :编程时,编程脉冲的输
入端。 VPP:编程时,编程电压
(+12V或+25V)输入端。
S2
S3
S4
S5
外部RAM写时序为:
第1个机器周期 S1
ALE PSEN WR
第2个机器周期 S6 S1 S2 S3 S4 S5 S6 S1 S2
S2
S3
S4
S5
P2口 P0口
输出PCH PCL 指令 DPL
输出DPH 数据出
输出PCH PCL 指令
外部RAM的读写编程
KEIL-C中外部ROM、RAM空间的设置
AT89S51单片机发出的地址码用于选择某个存储器单元, 在外扩存储器芯片的应用中,单片机必须进行两种选择: a、选中该存储器芯片,这称为“片选”,未被选中的 芯片不能被访问。 b、在“片选”的基础上再根据单片机发出的地址码来
对“选中” 芯片的某一单元进行访问,即―单元选择”。
为实现片选,存储器芯片都有片选引脚。同时也都有多条 地址线引脚,以便进行单元选择。注意,“片选”和“单 元选择”都是单片机通过地址线一次发出的地址信号来完 成选择。
仅引脚排列不同。
3、程序存储器的扩展
单片机的地址总线为16位,扩展的片外ROM的最大容量为64KB,地 址为0000H~FFFFH。扩展片外RAM的最大容量为64KB,地址也为 0000H ~FFFFH
由于51单片机采用不同的控制信号和指令进行访问,尽管 ROM与RAM的地址是重叠的,也不会发生混乱。
数据存储器的扩展与程序存储器的扩展相类似, 不同 之处主要在于控制信号的接法不一样, 不用 /PSEN信号, 而用/ WR和/RD信号, 且直接与数据存储器的/ WE端和 /OE端相连即可。
外部数据存储器的寻址范围为64KB,地址0000H-FFFFH 地址总线为16位,由P2和P0组成;
数据总线为8位,由P0组成;
_____ PSEN
片外ROM的访问时序 :
第1个机器周期 S1
ALE PSEN P2口 P0口 输出PCH PCL 指令 输出PCH PCL 指令
第2个机器周期 S6 S1 S2 S3 S4 S5 S6 S1 S2
S2
S3
S4
S5
输出PCH PCL 指令
输出PCH PCL 指令 PCL
4、数据存储器的扩展
总线。
系统总线按功能通常分为3组。
三组系统总线:
(1)地址总线(Address Bus,AB):用于传送单片机发 出的地址信号,以便进行存储单元和I/O接口芯片中的寄 存器单元的选择。
(2)数据总线(Data Bus,DB):用于单片机与外部存储
器之间或与I/O接口之间传送数据,数据总线是双向的。 (3)控制总线(Control Bus,CB):控制总线是单片机发 出的各种控制信号线。
PSEN 作为外扩程序存储器的读选通控制信号。 (1)
(2)RD 和 WR 为外扩数据存储器和I/O的读、写选通控制 信号。
(3)ALE作为P0口发出的低8位地址锁存控制信号。
(4)EA 为片内、片外程序存储器的选择控制信号。 可见,AT89S51的4个并行I/O口,但进行外部总线扩展时, 真正作为数字I/O用,就剩下P1和P3的部分引脚了。
存储器地址空间分配有两种方法: 线选法和译码法。
b. 译码法 (可以利用全部地址空间)
所谓译码法就是使用地址译码器对系统的片外地址进行译码 , 以其译码输出作为存储器芯片的片选信号。
地址范围: 0x0000 ~ 0x1FFF
译码法:
地址范围: 0x2000 ~ 0x3FFF
…
一般“片选”使用高位地址线,芯片内部单元选择使
如何来构造系统的三总线。
1.P0口作为低8位地址/数据总线 AT89S51受引脚数目限制,P0口既用作低8位地址总线,又 用作数据总线(分时复用),因此需增加一个8位地址锁存器 。AT89S51访问外部扩展的存储器单元或I/O接口寄存器时, 先发出低8位地址送地址锁存器锁存,锁存器输出作为系统的 低8位地址(A7~ A0)。随后,P0口又作为数据总线口(D7~ D0),如图2所示。
2.P2口的口线作为高位地址线
P2口用作系统的高8位地址线,再加上地址锁存器提供的 低8位地址,便形成了系统完整的16位地址总线。
使单片机系统的寻址范围达到64KB。
图2
AT89C51单片机扩展的片外三总线
3.控制信号线
除地址线和数据线外,还要有系统的控制总线。这些信号有 的就是单片机引脚的第一功能信号,有的则是P3口第二功能 信号。包括:
VCC:+5V,芯片的工作电压。 GND :数字地。
NC:无用端。
外部程序存储器扩展电路:
P2.0 – P2.4 ALE G D7 : D0 ___ OE Q7 : Q0 74HC373 A8 – A12
2764A
A7 : A0
Fra Baidu bibliotek
8051
P0 __ EA
D0~D7
___ OE ___ CE
例如:unsigned char xdata ucTable[255]; …… for(i=0;i<255;i++) { ucTable[i] = I; } ……
外部RAM读写的C语言编程
2、 在某些场合我们希望指定所使用的外部RAM的具 体地址,这时可使用XBYTE关键字 例如:XBYTE[0x5000] = 0x25; 向地址0x5000的存储单元写入数据0x25