找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3216|回复: 16
收起左侧

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

[复制链接]
ID:809346 发表于 2020-7-29 19:00 | 显示全部楼层 |阅读模式
本帖最后由 STC15W408AS 于 2020-7-29 19:03 编辑

锁存器1.jpg 锁存器2.jpg
如上图所示,单片机内部的4个P口,都自带有一个D锁存器,为什么用P口扩展程序存储器或者数据存储器时,还要在P口上再接一个D锁存器74LS373?
回复

使用道具 举报

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口不仅可以做数据总线还可以做地址总线,外加所存器保证地址和数据不互相干扰

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

使用道具 举报

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

使用道具 举报

ID:809346 发表于 2020-7-29 23:09 | 显示全部楼层
1692483014 发表于 2020-7-29 22:30
两个作用:隔离 和 提高驱动能力。

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

使用道具 举报

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

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

使用道具 举报

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

评分

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

查看全部评分

回复

使用道具 举报

ID:804115 发表于 2020-7-30 00:21 | 显示全部楼层
STC15W408AS 发表于 2020-7-29 23:09
想不通。提高驱动能力,难道这个锁存器芯片可以提升总线上的电流?

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

ID:10193 发表于 2020-7-30 08:58 | 显示全部楼层
地址和数据复用,不外接锁存器,如何区别是地址还是还是数据呢?
回复

使用道具 举报

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

回复

使用道具 举报

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

回复

使用道具 举报

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

回复

使用道具 举报

ID:808485 发表于 2020-7-30 14:48 | 显示全部楼层
至于内部的锁存器,我画了个P0口的工作状态图:
无标题.png

回复

使用道具 举报

ID:809346 发表于 2020-7-30 21:07 | 显示全部楼层
gbchang 发表于 2020-7-30 14:48
至于内部的锁存器,我画了个P0口的工作状态图:

太感谢了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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