打印

为什么51做RAM位扩展时低位地址要用到锁存器?

[复制链接]
4320|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

书里说 P2提供地址的高8位 , P0分时提供地址的低8位
我不明白的是 为什么P0要分时提供?
是不是因为P0除了提供低位地址还要用来存入和读取扩展内存的8位数据? ,
可是为什么P2就不要了? P2就没别的事干了吗? 就这样交待掉P2口吗?
还有 P0接的373锁存器的锁存信号端G是由ALE控制的 这有意义吗?  ALE不受控制地输出6分频信号, 使G端一下高电平一下低电平, 锁存器就一下封锁一下打开地
那么如果P0在读数据时 , 锁存器处在打开状态 ,那么P0从RAM中读到的数据不是就被锁存器储存了吗?
然后P0在输出数据存储器的地址时 , 锁存器又不巧地在封锁状态 , 然后单片机的WR端=0开始读数据 , 这样读出来的数据不就是错的了吗?

相关帖子

沙发
ayb_ice| | 2012-1-4 08:30 | 只看该作者
这是INTEL的想法

使用特权

评论回复
板凳
bellye123| | 2012-1-4 08:42 | 只看该作者
P0口是数据、地址分时复用的。。。。。所以加地址锁存器,以免传输数据造成地址错误。0-0. 嘎 嘎 其实多看看说明书就行了。。。

使用特权

评论回复
地板
dengm| | 2012-1-4 09:15 | 只看该作者
本帖最后由 dengm 于 2012-1-4 09:21 编辑

这是INTEL的想要设计 40 pins MCU, 而不是 48 pins MCU

ps: 你用p2 当低8位, p1当高8位, 就不要74373了!!!

使用特权

评论回复
5
2sainimu78|  楼主 | 2012-1-4 11:01 | 只看该作者
好像都没说到点子上
我有举例子 说明我的疑惑 大家看看吧... 看完了再说 谢谢了

使用特权

评论回复
6
ccxlslr| | 2012-1-4 11:40 | 只看该作者
楼主说说学历,学单片机的时间,以及如何学的,有哪些相关知识。
才好从头说起。说明,没有看不起来,只是不知从何说起

使用特权

评论回复
7
hyhmh| | 2012-1-4 11:45 | 只看该作者
最早、最经典的 MCS51 最大系统中 有详细描述。
1楼 似乎没有 理解 MCS-51 关于 ALE、/WR、/RD 信号的定义(89C51芯片手册有详细说明,最好不要用 后来 引伸开发的芯片来 认识——后来的51扩展芯片 定义了 更多的与总线扩展无关的“高级”功能)

使用特权

评论回复
8
ccxlslr| | 2012-1-4 12:00 | 只看该作者
Address Latch Enable(ALE),他是专业地址锁存的,与其它无关,在需要时他会输出信号,不是无序的,正因为这样,它就输出六分频信号。
单片机会不停的读程序,所以他就不停的输出信号,恰巧就是六分频

使用特权

评论回复
9
2sainimu78|  楼主 | 2012-1-4 14:20 | 只看该作者
想不通
在没访问片外存储时, ALE会输出脉冲 , 比如我要P0口来点个4个灯 ,MOV P0,#F0H
那F0H还不是会被锁存器存走吗, ?
如果是的话 是说这种事根本不要紧吗. 因为P0提供片外地址时锁存器会从P0中更新存储的信息?

使用特权

评论回复
10
hyhmh| | 2012-1-4 14:24 | 只看该作者
不要 将 MCD51最大系统 与 最小系统 混淆在一起 讨论。

使用特权

评论回复
11
2sainimu78|  楼主 | 2012-1-4 14:59 | 只看该作者
10# hyhmh

对不住  我不明白"最大系统""最小系统"是指什么

我觉得我问的只是个小问题而已

使用特权

评论回复
12
dengm| | 2012-1-4 15:44 | 只看该作者
re: #9
     你用片外rom时, 你的P0口就不能用来点个4个灯了.
PS: 看 /EA PIN 及Movx 指令的说明.

使用特权

评论回复
13
2sainimu78|  楼主 | 2012-1-4 16:00 | 只看该作者
本帖最后由 2sainimu78 于 2012-1-4 16:03 编辑

12# dengm
不是程序存储呀..
我说的都是数据存储 . 1楼的图里也是扩展RAM ,
还是说 . 你的意思是 9楼说得没错 然后 你现在在说如果在用片外ROM的情况下 P0口就不能那样用 是吗?

使用特权

评论回复
14
junming6385| | 2012-1-4 20:55 | 只看该作者
P0口可以用做总线接口,也可以作为普通IO口

使用特权

评论回复
15
eydj2008| | 2012-1-4 21:35 | 只看该作者
纯路过 好奇  为了节省端口 实现端口复用

使用特权

评论回复
16
clookies| | 2012-1-4 21:50 | 只看该作者
不知道的 有时候是要用锁存的

使用特权

评论回复
17
xhtxzxw| | 2012-1-5 04:26 | 只看该作者
如果楼主是自学,可以理解,如果有老师教课,我要啐你老师一口。
P0/P2口要么作为通用IO口,要么作为外部存储器的数据/地址总线,但是但是但是,绝对不能同时有这两种用途。

使用特权

评论回复
18
ccxlslr| | 2012-1-5 11:06 | 只看该作者
不访问也有,系统为了,达到这些目的,都有各自的时序,不访问是空着,也会输出。
所以才能兼容各种功能。 不要问为什么就是这样设计的。以你的高度肯定不会明白,也不要发表你的看法,因为根本不懂,当然我也不懂,总之。 因为那么多工程师,在当时条件下,基本上是个最优化的方案。

使用特权

评论回复
19
ccxlslr| | 2012-1-5 11:11 | 只看该作者
本帖最后由 ccxlslr 于 2012-1-5 11:16 编辑

它把一个指令周期分很多段,各段都有自己的工作,不访问,就空着。因ALE没有复用功能,所以就这样安排。事实上,不访问他完全可以关了,ALE,但这样没有多大意义。反而会增加难度。

一些增强型单片机。可以关了ALE,来降低噪声,干扰

如果点灯,事实上也会锁存。但从设计上来说,你用总线点灯,就是一错误设计。但会不会锁存到F0,要看时序。
不要用你的错误设计来倒推。

使用特权

评论回复
20
2sainimu78|  楼主 | 2012-1-5 15:28 | 只看该作者
大概明白了 谢谢大家的讲解 . 可以告诉我为什么
谢谢大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

121

帖子

1

粉丝