51单片机的内存映射(一)

发布时间:2022-12-15  

本文主要讲述51单片机RAM部分的内存映射,其内存空间如下图所示:




51单片机内部有256个字节的RAM空间,低128个字节为工作寄存器组区(0x00H-0x1FH)、位寻址区(0x02H-0x2FH)、通用RAM区(0x30H-0x70H),SFR寄存区(0x80-0xFF)这段空间定义51单片机所有的控制寄存器和状态寄存器。下面我们就以上图中自底向上的顺序逐一介绍一下各区的功能以及访问方法。


  1. 工作寄存器区

工作寄存器区为R0-R7,它们各为1个字节,但51单片机一共有4组工作寄存器,单片机在工作过程中只能有一组工作寄存器工作。各个工作寄存器的地址以及工作寄存器组的选择如下图所示:




工作寄存器的功能是传递函数参数、局部变量的赋值、保存函数运行的结果等。此外,很多指令也都会用到工作寄存器,我们可以先来想一下这样一个问题:四个数的和能否利用51单片机实现呢?一起来看看下图:




add函数接收了三个参数a、b、c而没有d,是不是不能传递参数d呢?先来看看官方文档的解释:

Cx51编译器最多在MCU寄存器中传递三个函数参数。由于不将参数写入内存或从内存读取参数,因此该机制显著提高了系统性能。参数或参数传递可以由REGPARMS和NOREGPARMS指令控制:


原来51的确最多只能传递三个参数,可是现在超过了三个该怎么办呢?是不是只能算三个数的加减呢?如下图所示,add函数传递的参数分别是1、2、3、4,我们运行的结果是A,也就是十进制的10,那么第四个参数去哪里了呢?


经过仿真我们知道第四个参数是入栈了。(看来栈是可以在工作寄存器区的,但最好不要这样做,而是应该在.S文件中让SP指向0x60之后)

注意:51单片机中的int是2个字节! 51单片机SP上电默认值是0x07,i、j、t入栈0x07+2*3=0x13,51单片机栈是正增长的,所以第四个参数的位置就是0x14与0x15所在的位置。


2、位寻址区

0x20-0x2F一共16个字节、128位,所以寻址范围是0-0x7F,内存映射关系如下图所示:




使用方法就是C51特有的关键字,sbit关键字对应的汇编指令就是BIT。(注意: SFR寄存器也可以位寻址哦!)




关键字 sbit 修饰后指向的是P2.1所在的位置。P2^1是在SFR寄存器区通过位寻址的,之所以为1是因为还没对它进行赋值,因此其默认值为1。位寻址区是非常有用的,比如对P2.1进行位操作,不会影响到P2.0、P2.2等其他一些I/O口,所以是一种非常方便的操作方式。其实STM32也可以达到这样的效果!


3、通用RAM区

通用RAM区可以运行函数的局部变量,因为SP指针是保护调用函数和中断函数现场的。具体表现为:

1.保护断点:将PC压入栈,执行完中断函数后,弹出PC之前的值,恢复到中断前程序运行的点。

2.保护现场:对寄存器组的值进行保护。


4、SFR寄存器区

特殊功能寄存器区定义了控制和监视51单片机运行的控制寄存器和状态寄存器,定时器、I/O口、串口、中断等相关寄存器都在这里定义。同时这个区域是离散的,是为生产商而留的,但52单片机是可以访问这里的,只不过需要间接寻址,对于C语言编程而言则不需要关注这个,C语言自身可以将其转化。那么,52单片机的堆栈又增长了128个字节供我们使用。


好了,让我们再来回顾总结一下以上内容吧!

全篇主要通过KEIL以及程序介绍了51单片机RAM区各模块的作用。第一方面,通用寄存器组所占据的地址空间以及程序运行时该区产生的作用。第二方面,位寻址区的重要意义与作用,若不用位寻址就只能用读-写-改的形式,这样不仅用起来不方便,而且还会增加代码量。第三方面,通用RAM区和SFR区的重要性。



文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    唯一可以选择的空间也就只有特殊功能寄存器以外的区域了。对于增强型51单片机来说,它的内存空间刨去特殊功能寄存器区,还可以给其使用的空间有两个,一个是内置RAM剩余空间,还有一个是内置的外扩RAM。 对于STC8A8K系列......
    51单片机的内存映射(二);本篇主要讲述单片机的FLASH内存映射,首先来看一下FLASH的内存映射表: 上图中启动地址是0x0000,也就是单片机上电后PC指向的这个位置,我们......
    、通常把运算器和控制器合在一起称为中央处理器(Central Processing Unit),简称CPU。   2、通常把外存储器、输入设备和输出设备合在一起称之为计算机的外部设备。   51单片机的内......
    51单片机的内存映射(一);本文主要讲述51单片机RAM部分的内存映射,其内存空间如下图所示: 51单片机内部有256个字节的RAM空间,低128个字节为工作寄存器组区(0x00H......
    要运行的任务的堆栈内容移到系统的硬件堆栈中,并将硬件堆栈中的内容弹出到各个寄存器。这个过程就完成了任务的切换。 结 语 本文介绍了在基于51系列单片机的嵌入式操作系统开发中,可能遇到的几个问题和它们的解决办法。这些......
    地址可以被8整除的特殊功能寄存器,也可以支持位寻址。(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。 注意,在51单片机的内部RAM中进行编程的时候,必须使用MOV指令......
    路中的每个硅电子都不能被保存,并且这个过程限制了内存的大小。因此,RAM和ROM是通过CPU总线连接的。 通过51单片机的RAM地址,ROM地址,可以看到,ROM存储程序,通过CPU传递数据,到RAM......
    如何采用51单片机开发操作体系;1,操作体系软件的代码不能太长 由于51系列单片机的体系硬件资本相对缺乏,假如操作体系的代码比运用程序的代码还大,乃至使得用户的运用程序要考虑给操作体系让出资本,这样......
    单片机的内部资源、存储器结构、时钟体系以及工作时序等方面进行介绍。 1. 内部资源 在51单片机内部,主要包含以下几个模块: (1) CPU:51单片机的CPU采用8051核心,支持......
    或节拍脉冲。是CPU和其他单片机的基本时间单位。机器周期:通常用从内存中读取一个指令字的最短时间来规定CPU周期(机器周期),也即CPU完成一个基本操作所需的时间。指令周期:指令......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>