51单片机的存储空间梳理

文/Edward
我们在学习传统的MCS-51单片机的时候,一定学习过51单片机的存储结构。传统的MCS-51存储器有三个空间,分别是片内RAM(内部数据存储器)、片外RAM(外部扩展的数据存储器) 和 ROM(内部或者外部程序存储器)。
按照具体数据的物理存储空间来说,MCS-51单片机在有四个物理存储空间,它们分别是:片内程序存储器(片内ROM)、片外程序存储器(片外ROM)、片内数据存储器(片内RAM)、片外数据存储器(片外RAM)。
1  片内RAM空间
上述的这四种物理存储空间中,最早的8031单片机,只有数据存储器即内部RAM是标配的,其他都需要外扩,而到来的8051兼容机中,内部的数据存储器(RAM)和内部的程序存储器(ROM)都成了标配。只不过更加不同型号,RAM和ROM的大小有些许区别。
那么,在那个存储器贵如金的年代,为何还要将RAM作为标配?而且这个还是价格非常昂贵的静态RAM。这是因为,哈佛结构的计算机,存储器是整个计算体系的核心,你可以发现,51单片机外设相关的存储器,它们都被编入数据存储器(RAM)的地址。如图1所示。
图1 MCS-51单片机内部256字节RAM存储分布
由图1中,我们可以发现,MCS-51单片机的地址范围是00H到7FH (52系列延伸到FFH),为8位地址,所以最大可寻址的范围为256个单元地址。
这些地址被分成4个功能区:
  • 地址00H~1FH,共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7。此存储区如果需要使用寄存器进行数据的存储,则可以直接使用寄存器寻址。如“MOV A,R0”。

  • 地址20H-2FH,共16字节,是位寻址区,共有128个“位”,位地址:00~7FH。此区域的变量,也可按照字节寻址,来读写。如,我们将20H地址的第0位(0或者1)移入程序状态字(PSW)的进位标志位(C),则可以:“MOV C, 20H.0”。

  • 地址30H-7FH,这个区域内的内存空间,主要是存放用户编写程序时产生的临时数据,这块区域内的寻址方式都为间接寻址,而且只能按照字节单位进行寻址。如果使用C语言要访问内部存储区,那么你所定义的指针只能指向这一片地址。

  • 地址80H-FFH,此区域为特殊功能寄存器区(SFR),共有128个地址,其中离散的分布着21个特殊功能寄存器,必须直接寻址才能读写。另外,部分地址可以被8整除的特殊功能寄存器,也可以支持位寻址。(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。

  • 注意,在51单片机的内部RAM中进行编程的时候,必须使用MOV指令进片内RAM的读写。

 2  外部RAM扩展
除了内部RAM的这些存储空间,MCS-51单片机也支持外部RAM的扩展。普通51单片机最大可以片外扩展64K字节空间的RAM,其地址范围为0000H~FFFFFH,我们可以使用标准MCS-51单片机的P0口和P2口对RAM进行扩展。其扩展电路如图2所示。
图2 外部RAM扩展

片外RAM地址的最大范围是0000H到FFFFH,即最大容量为64KB。对片外RAM读写,必须使用 MOVX 指令。
对片外RAM采用间接寻址方式,R0、R1和DPTR都可以做为间接寻址寄存器,R0、R1是8位的寄存器,即R0、R1的寻址范围最大为256个单元,而DPTR是16位地址指针,寻址范围就可达到64KB。
也就是说在寻址片外RAM时,寻址范围超过了256B,就不能用R0、R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。
 3  片外ROM扩展
除了RAM可以扩展之外,51单片机还支持外部程序存储器的扩展,此时做外ROM扩展的时候,需要使用到PSEN引脚去做芯片的选通。PSEN(非)为外部程序存储器读选通信号,在读外部ROM时PSEN(非)低电平有效,以实现外部ROM单元的读操作,全拼为Program Store Enable。外部ROM的扩展电路如图3所示。
图3 MCS-51单片机外部ROM扩展

ROM的地址范围是0000H到FFFFH,容量即为64KB,地址长度16位,作用是 存放程序及程序运行时所需的常数。
其中4K地址(0000~0FFFH)的空间保留在了在片内,剩余的其它地址被用作片外ROM的地址,因此如果要扩展片外ROM,则其地址范围最大为(0x1000~0xffff)。当引脚EA为高电平时,则寻址内部ROM,当EA为低电平时,则寻址外部ROM。如果单片机想要读取ROM中的数据,必须使用 MOVC 指令。
(0)

相关推荐

  • 国开电大 单片机技术 形考任务答案

    第一章 微机基础知识第二章 89C51单片机芯片内部结构及原理一.填空题:1. 通常51单片机上电复位时PC=H.SP=H﹑通用寄存器则采用第组,这一组寄存器的地址范围是从H-H.(0000,07,0 ...

  • 增强型51和传统51单片机外设操作的区别

    文/Edward 前面的内容,我们从传统的51单片机出发,从硬件的基础上,一步步衍生出了增强型51单片机所增强的地方.现在我们可以清楚地了解,增强型51单片机对比传统的51单片机,增强的地方在于存储器 ...

  • 增强型51单片机扩展方式

    文/Edward 大家是否思考过一个问题,为什么现在的51单片机在做宣传的时候,不外乎都是称作为"增强型51单片机"?与传统的51单片机相比,究竟哪些地方得到了扩展? 在回答这个问 ...

  • 一天入门51单片机

    本套教程共3节课程,熟悉这3节课程的话,你已经入门51单片机了. 下面是内容正文 单片机学习的第一步,什么是单片机最小系统? 我来打个比喻吧. 我们都知道,人的大脑是可以控制眼耳口鼻,手脚,全身等等, ...

  • 单片机“朝花夕拾”系列——乐创增强型51单片机讲义序

    本来想的是认认真真地做一部ARM内核的MCU教程和文档,这个入口最好的芯片切入口就是STM32.然而最不凑巧的是,现在STM32无论哪一个型号都是一"芯"难求.以至于我Layout ...

  • 如何看待增强型51单片机?

    文 / Edward  1  辩证地看待51内核单片机 要回答这个问题,首先需要来看一下传统的51单片机.在有些文章或者书本中,对于51单片机的态度是全面否定的,一旦听到某人要学习或者使用51单片机, ...

  • 51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版)

    一.思路及相关问题 1.逻辑思路: 当按下key1时 led1亮起来 因为按下去具有瞬时性不用while,用if语句,当松开时,用while(!key1) ,函数调用. 先在脑海里想象它的大致运行过程 ...

  • 在51单片机上跑RTOS有没有意义?

    最近看见我的一个技术交流群在讨论一个问题:在51单片机上跑RTOS有没有意义? 今天就来围绕51和RTOS展开讲讲. 1关于51单片机及性能和资源 51单片机可以说是我们这一代人的经典,因为它资源不是 ...

  • 51单片机+DAC0832的信号发生器Proteus仿真设计(附仿真文件+Word文档+C程序

    设计要求: 1.输出4种波形:方波.锯齿波.三角波.正弦波: 2.幅值可调节范围为2V-10V: 3.频率可调节范围为20Hz-80Hz: 设计思路: 通过Keil平台下的C语言编程,单片机控制输出的 ...

  • 51单片机汇编语言实现交通灯 代码有详细注释

    用51单片机实现一个交通灯的控制 交通灯的变化模式为:初始化状态为东西红灯都亮→延迟 3s 变为东西方向绿灯,南北方向红灯→过 20S 后,东西方向变黄灯,南北方向依然是红灯→过 3S,东西方向变红灯 ...