51单片机外部存储器地使用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

纠结了这么久,现在总算有点儿头绪了,先把它整理到这里先,有几点还是j经常被弄糊涂:地址和数据,地址/数据复用,地址的计算,总线的概念,执行指令跟脉冲的关系,哎呀呀,看来计算机组成和原理不看不行啊,得找个时间瞧瞧,过把瘾了解了解。。。

使用ALE信号作为低8位地址的锁存控制信号。以PSEN信号作为扩展程序存储器的读选通信号,在读外部ROM是PSEN是低电平有效,以实现对ROM 的读操作。

由RD和WR信号作为扩展数据存储器和I/O口的读选通、写选通信号。

ALE/PROG: 当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

当访问外部存储器时,ALE作为锁存扩展地址的低8位字节的控制信号。

当访问外部数据存储器时,ALE以十二分之一振荡频率输出正脉冲,同时这个引脚也是EPROM 编程时的编程脉冲输入端。]

当非访问外部数据存储器时,ALE以六分之一振荡频率固定输出正脉冲, 8051一个机器周期=6个状态周期=12个振荡周期,若采用6MHz的晶体振荡器,则ALE会发出1MHz的固定的正脉冲。因此它可以用来做外部时钟或定时。如果我们把这个功能应用与实际,可能给我们的设计带来简化,降低生产成本。

ALE脚是在使用MOVX、MOVC指令时才会变成有效(这些指令都使用到外部RAM或ROM的地址。这些指令都有一个特点:地址和数据分时出现在P0口)。使用C写程序时,要使用它有效,可用访问内部RAM地址的方法。如:uVariable=*((char *)0x12C),把0x12C地址的内容给uVariable变量。这个过程有效的脚为ALE、RD。

这个信号线的信号生成是MCU硬件电路实现的,不可以人工控制。

在某些内置TOM的MCU里,可以关闭ALE信号输出,以降低EMI。

ALE/PROG(30脚):

以系统时钟 fosc 的1/6的频率,周期性输出方波脉冲。

1系统扩展时,作为外部存储器低八位地址的锁存信号;

2可为系统提供一个频率为 fosc/6 的方波信号;

EPROM型单片机编程时编程输入脉冲(第二功能)

PSEN(29脚):外部程序程序存储器的选通输出信号。

当单片机使用外部程序存储器时,此脚在一个机器周期内产生两次负脉冲,作为外部程序存储器ROM的选通信号;

访问外部数据存储器 RAM 时,此信号无效。

关于出栈和进栈

关于外部数据存储器:

WR:外部数据存储器写信号RD:外部数据存储器读信号

怎么来扩展存储器呢?

首先必须知道的是总线结构扩展系统:

先看看怎么扩展外部程序存储器的扩展:

锁存地址芯片74ls273(低8位地址不能保持一个机器周期,所以要用到锁存器,而高8为能保持一个机器周期):

瞧瞧简单的扩展外部ROM的电路图(PSEN在一个机器周期内产生两次负脉冲,作为外部程序存储器ROM的选通信号,访问外部数据存储器 RAM 时,此信号无效):

访问外部ROM的时序图(P0口呢在一个机器周期内时,首先在第一次ALE下降沿送P0的地址(有74ls373锁存能保持一个机器周期),在第二次ALE下降沿锁存数据,而高8位地址在

P2口,能保持一个机器周期,所以不用锁存器):

想想PSEN就是在B时间段拉低的,故就能把数据给送出去了(O(∩_∩)O哈哈哈~,真NB,谁设计的啊,赞一个,嗯,了解硬件内部结构很重要,所以不要仅仅局限于软件的编程,更需要在有硬件思维的基础上编程)

两片构成64KROM的方法:

多片扩展跟多的ROM呢,没错就是用到了译码器:

懂了扩展ROM,扩展RAM也是一样的;

相关文档
最新文档