8051单片机与片外存储器(片外RAM和ROM)的连接

前言

很多人在开发时遇到单片机片内RAM和ROM容量不够用的问题:

今天就来说说如何通过单片机与片外存储器的连接来解决片内RAM和ROM容量不够用的问题

提示:在阅读时如果有什么问题大家可以评论区留言

一、片内RAM是什么?

我们所熟知的8051单片机,其内部有很多存储器:

其中就有RAM:可读写存储器,也称数据存储器

RAM的容量为256字节(这里面当然包含一些特殊功能的寄存器)

二、片内ROM是什么?

8051单片机,其内部除了有RAM,还有ROM:

8051内部的ROM:只读存储器,也被称程序存储器ROM的容量为4KB

三、RAM或ROM容量会不会不够用?

通过了解,我们发现这个RAM和ROM的容量比较小,那到底够不够我们用呢?

这就要看我们是用它来干什么,正常情况下是够用的。

那万一不够用怎么办呢:

小编我就出现生过单片机内部的RAM或ROM容量不够用的情况;

下面就来通过外接RAM或ROM来解决下

四、解决办法

1.8051单片机与片外RAM或片外ROM连接

在8051单片机与片外RAM或片外ROM连接时:

使用P0.0~P0.7和P2.0~P2.7引脚输出16位地址,可以最大寻址216=65536=64K个存储单元,个存储单元可以存储1个字节(1Byte),也就是8位二进制数(8bit),即1Byte=8bit;需要注意的是:8051单片机外接RAM或ROM容量最大不要超过64KB,超出范围的存储单元就无法识别和使用了。

2.单片机从片外 RAM 写入数据

当单片机需要从片外 RAM 写入数据时:

读写时会从 P0.0~P0.7 引脚输出低 8 位地址(如00000011),再通过8路锁存器送到片外RAM的A0~A7引脚,它与P2.0~P2.7引脚输出并送到片外RAM的A8~A15引脚的高8位地址一起拼成16位地址,从64K个(即216个)存储单元中选中某个存储单元。

3.单片机往片外RAM写入数据

如果单片机要往片外RAM写入数据:

写入数据会从WR引脚送出低电平到片外 RAM 的WE脚,片外 RAM 被选中的单元准备接收数据。

与此同时,单片机的ALE端送出ALE脉冲信号去锁存器的C端,将1Q~8Q端与1D~8D端隔离开,并将1Q~8Q端的地址锁存起来(保持输出不变),单片机再从P0.0~P0.7引脚输出8位数据,送到片外RAM的D0~D7引脚,存入内部选中的存储单元。

4.单片机从片外RAM读取数据

如果单片机要从片外RAM读取数据:

跟上面同样先要发出地址选中片外RAM的某个存储单元,并让RD端输出低电平去片外RAM的OE端;

再将P0.0~P0.7引脚输出低8位地址锁存起来;

然后让P0.0~P0.7引脚接收片外RAM的D0~D7引脚送来的8位数据。

5.外部存储器是ROM(只读存储器)

如果我们外部存储器是ROM(也就是只读存储器)时:

此时单片机不使用WR端和RD端,但会用到PSEN端,并将PSEN引脚与片外ROM的OE引脚连接起来,在单片机从片外ROM读数据时,会从PSEN引脚送出低电平到片外ROM的OE引脚,除此之外,单片机读片外ROM的过程与片外RAM基本相同。

五、与片外的连接

上图所示的是8051 单片机与片外存储器连接线:

具体有:

有地址总线(AB)

数据总线(DB)

控制总线(CB)

1.地址总线

地址总线由A0~A15共16根线组成,最大可寻址216=65536=64K个存储单元:

2.数据总线

数据总线由D0~D7共8根线组成(与低8位地址总线分时使用),一次可存取8位二进制数(即一个字节)

3.控制总线

控制总线由RD、WR和ALE共3根线组成。

总结

通过上面的接线后,单片机在执行到读写片外存储器的程序时,会自动按一定的时序发送地址和控制信号,再读写数据,无需人工编程参与。

————————————————

版权声明:本文为CSDN博主「huidaoli」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/huidaoli/article/details/122065108

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值