找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4219|回复: 16
打印 上一主题 下一主题
收起左侧

请教51单片机P口不都是有内置的锁存器吗?为何外扩存储器的时候还要额外接锁存器?

[复制链接]
跳转到指定楼层
楼主
本帖最后由 STC15W408AS 于 2020-7-29 19:03 编辑


如上图所示,单片机内部的4个P口,都自带有一个D锁存器,为什么用P口扩展程序存储器或者数据存储器时,还要在P口上再接一个D锁存器74LS373?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:725110 发表于 2020-7-29 22:19 | 只看该作者
我觉得是因为P0口不仅可以做数据总线还可以做地址总线,外加所存器保证地址和数据不互相干扰
回复

使用道具 举报

板凳
ID:804115 发表于 2020-7-29 22:30 | 只看该作者
两个作用:隔离 和 提高驱动能力。
回复

使用道具 举报

地板
ID:809346 发表于 2020-7-29 22:30 | 只看该作者
圆就是圈圈 发表于 2020-7-29 22:19
我觉得是因为P0口不仅可以做数据总线还可以做地址总线,外加所存器保证地址和数据不互相干扰

内部不是已经有锁存器了吗?
回复

使用道具 举报

5#
ID:711509 发表于 2020-7-29 23:09 | 只看该作者
就像你引用的图片里所示,地址和数据复用的端口,如果不使用锁存器锁定地址是无法正常读写存储器的,这里加的锁存器就是要把复用状态分离开来,等于把端口数量扩展。内部的锁存器无法实现这个。
回复

使用道具 举报

6#
ID:809346 发表于 2020-7-29 23:09 | 只看该作者
1692483014 发表于 2020-7-29 22:30
两个作用:隔离 和 提高驱动能力。

想不通。提高驱动能力,难道这个锁存器芯片可以提升总线上的电流?
回复

使用道具 举报

7#
ID:809346 发表于 2020-7-29 23:16 | 只看该作者
breakhero 发表于 2020-7-29 23:09
就像你引用的图片里所示,地址和数据复用的端口,如果不使用锁存器锁定地址是无法正常读写存储器的,这里加 ...

意思内部锁存器实现一种端口功能,然后外部的锁存器同时实现另一种端口功能?
回复

使用道具 举报

8#
ID:711509 发表于 2020-7-30 00:09 | 只看该作者
外扩存储器时,P0口是要工作在总线状态的,存储器地址的低8位信息必须要用额外的锁存器才能在读写时保持,因为地址总线低8位和数据总线复用了,这是51机的设计。

评分

参与人数 1黑币 +5 收起 理由
1692483014 + 5 很给力!

查看全部评分

回复

使用道具 举报

9#
ID:804115 发表于 2020-7-30 00:21 | 只看该作者
STC15W408AS 发表于 2020-7-29 23:09
想不通。提高驱动能力,难道这个锁存器芯片可以提升总线上的电流?

直接用MCU的io口最大支持20mA电流,用373则没有限制,电流取决于VCC的输出能力。
回复

使用道具 举报

10#
ID:804115 发表于 2020-7-30 00:26 | 只看该作者
是哦,楼上说的对,我咋没注意到,这个用373的主要原因是因为地址总线和数据总线都使用了单片机的P0口,所以,在先写地址,再写数据的情况下,要在写地址后将地址锁存,然后再写数据。这样IO口就达到了复用的目的,节省了一半的IO口。
回复

使用道具 举报

11#
ID:88256 发表于 2020-7-30 00:31 | 只看该作者
外扩存储器时,外扩存储器的低八位地址是从P0口输出的,同时数据也必须从P0口输出,这两种输出显然是必须分开的,也就是一个端口分时轮流输出地址或者数据信号,而外扩存储器的地址和数据总线是分开的,所以必须有一个中间器件过渡,将这两种信号给分开,这就是锁存器的用处。
如果你能找到一种低八位地址和数据总线复用的存储器,也就不需要外接锁存器了,但显然你是找不到的,所以外接的锁存器就成了外扩存储器(当然指的是这种存储器而不是24C02之类)必不可少的搭档
回复

使用道具 举报

12#
ID:10193 发表于 2020-7-30 08:58 | 只看该作者
地址和数据复用,不外接锁存器,如何区别是地址还是还是数据呢?
回复

使用道具 举报

13#
ID:401564 发表于 2020-7-30 09:00 | 只看该作者
看不明白就不看了,这是上古时期用的电路,现在不会用这个了,换一个IO更多的单片机几乎是没有增加MCU方面的价钱的,74LS373却要两块一个,而且电路和程序变得更麻烦了如果你一定要学会这个,那就再回去看一下8051入门的硬件知识,好像在STC的数据手册中已经没有介绍了


回复

使用道具 举报

14#
ID:808485 发表于 2020-7-30 10:06 | 只看该作者
3楼和9楼答非所问,虽然内容是对的,但不是楼主想问的,使他更加疑惑了。
11楼说的对,所以我当初画51电路图时,P0口的网络标号都是类似"AD0~AD7"形式,时刻提醒这是复用总线:


回复

使用道具 举报

15#
ID:808485 发表于 2020-7-30 11:07 | 只看该作者
至于内部锁存器,是在做总线时,数据读入用的,就是从2732中取指令或者常量表时,得到的数据。
我把P0口的几种状态画了个示意图:


回复

使用道具 举报

16#
ID:808485 发表于 2020-7-30 14:48 | 只看该作者
至于内部的锁存器,我画了个P0口的工作状态图:


回复

使用道具 举报

17#
ID:809346 发表于 2020-7-30 21:07 | 只看该作者
gbchang 发表于 2020-7-30 14:48
至于内部的锁存器,我画了个P0口的工作状态图:

太感谢了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表