在访问外部存储器时,P0口、P2口、ALE、外部锁存器是如何协调工作的?

p5621861 2011-10-29 03:42:23
单片机在访问外部存储器时,P0口、P2口、ALE、外部锁存器是如何协调工作的?
...全文
6966 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjtea 2011-10-31
  • 打赏
  • 举报
回复
没有发现原则错误,文字错误如下:

PO口作力数据用的双向总线,--->PO口作为数据用的双向总线,

在指令输入以前,P2~PO只是程序存储器--->在指令输入以前,P2~PO指向程序存储器

PO口将读偶数据存储器的内容。--->PO口将读写数据存储器的内容。

Frog1228 2011-10-31
  • 打赏
  • 举报
回复
这问题很经典。。。
yshk999 2011-10-30
  • 打赏
  • 举报
回复
CPU的 RD/WR 的作用:
CPU的WR脚连到外部存储器的“输入允许脚IE”,
CPU的WR脚的下降脉冲 ,使外部存储器的“输入允许脚IE”有效,

CPU的RD脚连到外部存储器的“输出允许脚OE”,
CPU的RD脚的下降脉冲,使外部存储器的“输出允许脚OE”有效。
yshk999 2011-10-30
  • 打赏
  • 举报
回复
8051单片机在使用外部存储器的时候,要用74HC377, 74LS373...这些芯片,
把74HC377, 74LS373...这些芯片的8个 D 脚连到 CPU 的P0口的8个脚,
把74HC377, 74LS373...这些芯片的8个 Q 脚连到外部存储器的AD0--AD7 脚,(即8位低地址),
把74HC377, 74LS373...这些芯片的 G 脚连到 CPU 的ALE 脚,
把P2口连到的外部存储器的A8--A15脚,(即8位高地址),
把P0口直接连到外部存储器的数据口D0--D7.

ALE的频率是CPU的频率除以6,ALE是方波,一会高,一会低。
当ALE高的时候,74HC377, 74LS373 ..这些芯片的D-Q是通的,这时P0就给外部存储器作为低地址,
当ALE低的时候,74HC377, 74LS373 ..这些芯片的D-Q是断开的,这时P0就给外部存储器作为数据。

p5621861 2011-10-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bjtea 的回复:]
外部存储器分为程序存储器(例如2764)和数据存储器(例如6424).
前者的过程是:
P0,P2输出16位地址,用ALE信号将P0的低8位地址信号锁存到74373的输出端;然后,P0作为数据总线,用PSEN信号,读入程序存储器的指令;2764的片选通常由最高3位地址组合而成。
后者的过程是:
使用6424,过程与前者几乎相同,不同的地方仅仅是,用RD/WR信号取代PSEN信号……
[/Quote]恩,帮我看看我找的答案有错吗,谢谢~

1)应用系统中无片外RAM
  在不执行MOXV指令时,PO口作力数据用的双向总线,用于输入指令或输出程序存储器的低8位地址。P2口专门用于输出程序存储器的高8位地址。P2口具有输出所存功能;而PO口除了输出地址外还要输入指令,故要用ALE来锁存PO口输出的地址。在每个机器周期中,允许地址锁存器两次有效,在ALE下降沿时,锁存出现在PO口上的8位地址。  2)应用系统中有片外RAM
  RAM在执行访问片外RAM的MOVX指令时,16位地址应转向数据存储器。在指令输入以前,P2~PO只是程序存储器,在指令输入并判定是MOVX指令后,ALE在机器周期S5状态锁存的PO口地址不是程序存储器的低8位,而是数据存储器地址。若执行的是MOVX A,@DPTR,或MOVX@ DPTR,A指令,则此地址就是数据存储器地址。若执行MOVXA,@RI,或MOVX@RI,A则RI的内容为低8位地址,P2口线上将是P2口锁存器的内容。在同一机器周朔,不再出现有效取址信号,下一个机器周期中ALE的有效锁存信号也不再出现,当RD/WR有效时,PO口将读偶数据存储器的内容。

p5621861 2011-10-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bjtea 的回复:]
外部存储器分为程序存储器(例如2764)和数据存储器(例如6424).
前者的过程是:
P0,P2输出16位地址,用ALE信号将P0的低8位地址信号锁存到74373的输出端;然后,P0作为数据总线,用PSEN信号,读入程序存储器的指令;2764的片选通常由最高3位地址组合而成。
后者的过程是:
使用6424,过程与前者几乎相同,不同的地方仅仅是,用RD/WR信号取代PSEN信号……
[/Quote]恩,帮我看看我找的答案有错吗,谢谢~

1)应用系统中无片外RAM
  在不执行MOXV指令时,PO口作力数据用的双向总线,用于输入指令或输出程序存储器的低8位地址。P2口专门用于输出程序存储器的高8位地址。P2口具有输出所存功能;而PO口除了输出地址外还要输入指令,故要用ALE来锁存PO口输出的地址。在每个机器周期中,允许地址锁存器两次有效,在ALE下降沿时,锁存出现在PO口上的8位地址。  2)应用系统中有片外RAM
  RAM在执行访问片外RAM的MOVX指令时,16位地址应转向数据存储器。在指令输入以前,P2~PO只是程序存储器,在指令输入并判定是MOVX指令后,ALE在机器周期S5状态锁存的PO口地址不是程序存储器的低8位,而是数据存储器地址。若执行的是MOVX A,@DPTR,或MOVX@ DPTR,A指令,则此地址就是数据存储器地址。若执行MOVXA,@RI,或MOVX@RI,A则RI的内容为低8位地址,P2口线上将是P2口锁存器的内容。在同一机器周朔,不再出现有效取址信号,下一个机器周期中ALE的有效锁存信号也不再出现,当RD/WR有效时,PO口将读偶数据存储器的内容。

bjtea 2011-10-29
  • 打赏
  • 举报
回复
外部存储器分为程序存储器(例如2764)和数据存储器(例如6424).
前者的过程是:
P0,P2输出16位地址,用ALE信号将P0的低8位地址信号锁存到74373的输出端;然后,P0作为数据总线,用PSEN信号,读入程序存储器的指令;2764的片选通常由最高3位地址组合而成。
后者的过程是:
使用6424,过程与前者几乎相同,不同的地方仅仅是,用RD/WR信号取代PSEN信号,实现读、写。
TomiTwo 2011-10-29
  • 打赏
  • 举报
回复
在访问外部存储器时,P2为高8位地址,P0为低八位地址,组成16位外部访问地址,构成64k的地址空间。P0还作为数据的输入。ALE是地址所存信号,即在Movx指令执行时,ALE产生变化让外部寄存器锁存输入的地址,然后从P0读入数据。

27,508

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧