MCS-51单片机的存储器组织结构

发布者:创新之梦最新更新时间:2018-11-23 来源: eefocus关键字:MCS-51  单片机  存储器  组织结构 手机看文章 扫描二维码
随时随地手机看文章

特点:哈佛结构,程序存储器与数据存储器分开,两者各有一个相互独立的64K(0x0000 ~ 0xFFFF)的寻址空间(准确地说,内部数据存储器与外部数据存储器不是一回事)。


程序存储器:


① 用于存放程序(可执行的二进制代码映像文件,包括程序中的数据信息),还包括初始化代码等固件。


② 为只读存储器。注意,这里的“只读”,是指单片机(CPU)在正常工作时对其的访问方式是只读的;而现在大多数单片机的程序存储器(不管是内部还是外部)都采用了FLASH ROM,来取代以前所用的ROM、E2PROM等,可方便地进行在线编程(ISP)。


③ 标准8051的内部程序存储器大小为4KB(0x0000 ~ 0x0FFF);而具体的51核的兼容单片机的内部ROM大小需要参考其Datasheet,例如P89C51RA2xx的内部程序存储器是8K的Flash。


④ 内部、外部存储器统一编址,在软件设计上(指令系统中)没有差别;是否使用外部程序存储器是通过引脚EA在硬件电路上控制的:不使用外部程序存储器时,EA=0(接地);如果扩展了外部程序存储器,则使EA=1,当寻址到内部存储空间以外时,会自动转向外部程序存储器空间(与扩展外部程序存储器有关的还有PSEN和ALE的时序配合,以及P0和P2口用于地址线)。


[注] 一般直接选用内部程序存储器满足代码大小要求的单片机型号,避免扩展外部存储器,造成系统软硬件设计上的复杂和额外开销。


数据存储器:


为RAM。首先必须要强调的是,不管是物理上还是逻辑上,51单片机的内部、外部数据存储器都在不同的地址空间。两者不是一回事,用途也不一样,访问的指令也不同(内部RAM为MOV指令,外部为MOVX)。


1、内部数据存储器(内部RAM)


相当于内存,为程序(进程)中的变量和常量分配存储空间,掉电后内容消失。


标准8051的内部RAM为256B(0x00 ~ 0xFF):其中可供用户自由使用的是低128B(0x00 ~ 0x7F)区域,高128B中定义了26B的特殊功能寄存器(SFR),其余没有定义,因而没有意义。


P89C51RA2xx的片内RAM是512B(片内RAM不等于内部RAM,见释疑2)。


[说明] 关于内部RAM中的SFR,其中不但定义了一些控制字段,还包括累加器(ACC)、程序状态字(PSW)、数据指针(DPTR)、堆栈指针(SP)等,值得注意的是,片上I/O口P0 ~ P3的地址也在这里定义(即有3个特殊功能寄存器的地址实际上是P口的地址)——这是因为51单片机的I/O口与存储器是统一编址的*。


2、外部数据存储器(外部RAM)


上面谈到“I/O口与存储器统一编址”的问题,因此,这里称作外部RAM空间更为合适。在这个64KB地址空间中(0x0000 ~ 0xFFFF),除了可以扩展外部RAM外,还可以扩展外部I/O设备。


外部RAM主要用于存储程序运行时产生的重要数据(如数据采集结果、数据处理结果、系统日志等),这时一般需要外加电源进行掉电保护,以在系统掉电时保存其中的数据信息;也可用于数据的暂时存储,供CPU正常读写操作使用。因此外部RAM主要是使用其“可随机访问、读写方便且高速”的特性。


* 所谓I/O口与存储器统一编址,是指I/O口与主存在同一地址空间,将处理器的可寻址存储空间中专门划出一部分地址空间分配给I/O口使用。这与PC机的x86处理器不同,x86体系结构为I/O口专门定义了独立于存储空间之外的地址空间(事实上,除X86外,其他体系结构的处理器都对I/O口与存储器统一编址,可参考《Linux Device Drivers》)。


释疑1:51只有16根地址线,为什么能同时将程序存储器和外部数据存储器都扩展到64KB呢?即外部即有ROM,又有RAM,如何知道访问的是哪个?


在体系结构上,程序存储器和数据存储器是不同的地址空间,两者的访问是不会相互干扰的,这主要是通过在硬件和指令集设计上来实现的。


在硬件上,访问外部ROM是通过EA和PSEN引脚来控制的;访问外部RAM则是通过WR和RD信号来控制的;


在指令集上,访问外部ROM不需要使用显示指令,是通过PC(指令计数器)来控制取指地址的(跳转指令也可能引起PC跳转);而访问外部RAM则需要在程序设计上使用指令MOVX来执行。另外,访问内部RAM则使用了指令MOV,以区分外部RAM的访问。


释疑2:P89C51RA2xx的片内RAM是512B,是如何组织的?


        P89C51RA2xx的片内RAM是512B:其中内部RAM为256B(使用MOV指令访问,定义与标准51相同);另外的256B为XRAM(片内的外部数据存储器),属于外部存储器的范畴,因此用途也同外部RAM,使用MOVX指令访问,当程序中的全局变量或单个局部变量需占较大存储空间时,可以定义为xdata型,保存到XRAM区。注意这个片内的XRAM掉电后其数据也会丢失;另外,如果要扩展外部RAM,则一般是设置XRAM为禁用态。


关键字:MCS-51  单片机  存储器  组织结构 引用地址:MCS-51单片机的存储器组织结构

上一篇:测量引脚/INT1(P3.3)输入的正脉冲宽度
下一篇:8051/89C51的21个专用寄存器介绍

推荐阅读最新更新时间:2024-03-16 16:18

基于CW7900的跟踪式集成稳压电源电路图
CW7900是固定负压输出的单片机集成稳压器,其最大输出电流为1.5A。输出电压5~24V。电路具有过流,过热和调整管安全工作区保护电路,如图为 CW7900 构成的跟踪式集成稳压电源电路图:
[单片机]
基于CW7900的跟踪式集成稳压电源电路图
51单片机上AD和DA操作
一、ADC0804的操作 1、试验板上ADC0804的接线图 AD芯片上的第5管脚INTR没有接线,因为该实验板读取A/D数据没有用中断法,所以可以不接该引脚。 2、芯片的操作时序图如下 操作芯片时基本按照此顺序操作各个引脚。操作过程:在此实验中要连续转换连续读取数据,就将CS一直置低,没有用到中断也不用操作INTR引脚,剩下就只用操作WR和RD引脚,首先将WR置低,经过tW(WR)L时间后拉高WR,转换开始,经过1~8个A/D时钟周期1/fCLK和内部Tc时间后,转换完成;接着将RD置低,经过tACC时间后数字输出口上的数据达到稳定状态,此时直接读取数字输出端口数据,读完数据直接拉高RD。 3、用单片机控制ADC
[单片机]
51<font color='red'>单片机</font>上AD和DA操作
单片机控制的网络交换机设计与实现
摘要:介绍基于单片机控制的智能以太网交换机的研制过程,包括硬件电路、单片机软件和PC的管理程序。用户通过PC的管理程序或PC的超级终端,可实现对网络交换机的配置和管理。 关键词:单片机 以太网交换机 AL101 引 言   随着计算机性能的提高及通信量的聚增,传统局域网已经越来越超出了自身负荷,交换式以太网技术应运而生,大大提高了局域网的性能。网络交换机能显著的增加带宽,可以建立地理位置相对分散的网络。局域网交换机的每个端口可并行、安全、实时传输信息,而且性能稳定、结构灵活、易于安装、便于管理,能很好地满足企业网和电信运营商宽带接入的需求。 1 网络交换机的硬件设计   随着人们对网络应用中的安全性和高带宽的需求,网络交
[应用]
基于51单片机的园艺温室智能监控系统设计
系统功能简介 本系统所要完成的任务如下: (1)人性化的设计。界限温度值及湿度能够由用户根据不同的需求输入并通过显示器显示,能够实时、准确的显示当前的温度值与湿度值。 (2)通过采集的温度值及湿度值,准确的判断预定值与当前值之间的差异,看是都符合预定值,及时的采取措施,使其到达设定的范围,若室内烟雾浓度过高时还会启动蜂鸣器报警装置,同时LED灯亮,从而达到提示的作用。 具体功能如下: 系统通过独立按键中的K1键选择改变最高温度、最低温度、最高湿度、最低湿度、烟雾浓度预定值,通过K2键调高设定的预定值,通过K3键调低设定的预定值。 当温度高于预定的最高值时,LED1灯亮,同时风扇工作;当温度低于预定的最低值时,LED2灯亮,
[单片机]
基于51<font color='red'>单片机</font>的园艺温室智能监控系统设计
51单片机入门之静态数码管
LED数码管是单片机外围接口设备中常用的显示设备,有七段管和米字管两种,实验室中常用的是七段管。其工作方式有两种:共阴极和共阳极。所谓共阴极是把LED的com端都接地,而共阳极就是把com端都接高电平。其驱动显示方式也有两种:静态显示和动态显示。 静态显示中每个数码管占用单片机的一个八位口I/O口,工作时点亮的段常亮。于该种方式而言,硬件电路简单,编程简单,但是浪费单片机的I/O口。下面简单演示一下该种驱动方式。 P2口接一个数码管,数码管显示的数字每秒钟自动加一,加到9后清0,一直循环,本实验中数码管采用共阴极接法。 实验原理图如下: 实验程序如下: view plain copy #include #def
[单片机]
51<font color='red'>单片机</font>入门之静态数码管
单片机应用中的实用技巧
在单片机的应用中,有许多巧妙的技巧和方法,如果都能熟悉与掌握的话,对于减小系统资源,降低电路成本,提高设计的可靠性都很有帮助,本文为读者们提供一些较为常用的单片机应用中的实用技巧。 1、用一个I/O口控制2个单色指示灯。 由于单片机中的I/O口通常可设置为三种状态,即输出高电平、输出低电平和输入状态(高阻态)。利用这一点,可以很方便地用一个I/O口实现对2个指示灯的控制。其电路如右图所示。 当要使LED1亮时,I/O口可置为低电平。此时LED2无电流流过,不会亮。 当要使LED2亮时,I/O口可置为高电平。此时LED1无电流流过,不会亮。 若要LED1、LED2均不亮,可将I/O口置为高阻态,此时发光管被VD1旁路,
[单片机]
<font color='red'>单片机</font>应用中的实用技巧
基于8051单片机的温湿度采集系统设计
通过前面的学习,我们学会了如何用串口发送数据和接收固定字节的命令。今天,我们继续讨论串口应用协议,主要焦点还是在如何有效地使用串口发送数据。为了简化描述,假设我们基于8051单片机开发一个温湿度采集系统,周期将温度和湿度数据上报到上位机。温度和湿度定义如下: float temperature = 25.0; //温度 float humidity = 70.0; //湿度 我们至少可以设计出以下两种不同的串口应用协议: 1.固定大小的消息:先发送float类型的温度,再发送float类型的湿度。每次传输8个字节。 温度(4字节) 湿度(4字节) 代码实现: // 固定消息发送温度和湿度函数 void se
[单片机]
基于8051<font color='red'>单片机</font>的温湿度采集系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved