历史上的今天
返回首页

历史上的今天

今天是:2025年12月15日(星期一)

正在发生

2022年12月15日 | 51单片机的内存映射(一)

2022-12-15 来源:zhihu

本文主要讲述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区的重要性。



推荐阅读

史海拾趣

意普(ESPE)公司的发展小趣事

意普(ESPE)公司成立于XXXX年,初期专注于光电保护技术的研发。在创始人XXX的领导下,公司凭借对光电技术的深入理解和创新,成功研发出首款红外线安全保护装置,并在行业内获得了广泛的认可。这一技术的突破不仅为公司赢得了市场份额,也为后续的发展奠定了坚实的基础。

Highland Electronics Co Ltd公司的发展小趣事

在公司快速发展的过程中,High Tech Chips Inc深刻认识到单打独斗的局限性。因此,公司积极寻求与全球知名科技企业的战略合作。通过与华为、三星等手机制造商的合作,High Tech Chips Inc的芯片产品被广泛应用于这些企业的旗舰机型中,极大地提升了产品的知名度和市场占有率。同时,公司还与英伟达、英特尔等芯片巨头建立了技术合作关系,共同推动芯片技术的创新和发展。

Eby Electro Inc公司的发展小趣事

Eby Electro Inc公司的创始人李明,是一位对电子技术充满热情的工程师。在20世纪90年代初,他看到了电子行业的巨大潜力和未来发展趋势,于是决定创立自己的公司。起初,公司只有几名员工,主要业务是设计和制造电子零部件。李明凭借其过硬的技术能力和对市场的敏锐洞察,带领公司逐步打开了市场。他坚持质量第一的原则,赢得了客户的信任。随着业务的拓展,Eby Electro Inc逐渐在电子行业中崭露头角。

DECON公司的发展小趣事

品质是企业的生命线,DECON公司深知这一点。因此,公司建立了完善的品质管理体系,从原材料采购到生产过程的每一个环节都进行严格的质量监控。公司引进了先进的生产设备和技术,优化了生产流程,提高了生产效率和产品质量。同时,公司还建立了完善的售后服务体系,为客户提供及时、高效的技术支持和解决方案。

启臣微(Chip)公司的发展小趣事

作为一家高新技术企业,启臣微深知绿色生产的重要性。公司采用先进的生产工艺和设备,实现了生产过程中的节能减排。同时,公司还积极参与环保公益活动,倡导绿色生活方式,为社会的可持续发展贡献了自己的力量。

Continental公司的发展小趣事

近年来,大陆集团在特种商用车胎领域也取得了重要突破。2014年,大陆集团在亚洲国际物流技术与运输系统展览会上发布了一款全新的产品——SC8特种商用车胎。这款产品是专门针对亚洲物料搬运业而开发出来的,适用于仓库、饮料业、造纸业等多个行业。SC8轮胎具备超深的轮胎花纹和极佳的性能,为物料搬运业提供了更高效、更安全的解决方案。这一产品的推出进一步巩固了大陆集团在商用车胎领域的市场地位。

问答坊 | AI 解惑

请问现在电子行业好找工作吗

请问现在电子行业好找工作吗…

查看全部问答>

三极管的资料

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 三极管的资料,都是比较全的,可以做为选用的参考。  …

查看全部问答>

困扰2天的问题!!C#+wince

各位好!本人刚接触WINCE,现在要在装有Wince5.0的终端上开发个程序。用的是C#. 在终端上调试,遇到问题是图片不能显示,报错也没具体显示什么错误,只有个Exception。 在模拟器上可以显示。 猜是部署的时候图片没部署到终端上去,自己把图片文 ...…

查看全部问答>

WinCE初学

我是刚刚开始学习WinCE嵌入式,不知道如何入手,请赐教。 很想在这方面发展,特别是硬件,希望给点建议。 硬软件应该怎么学习…

查看全部问答>

IC Design 公司招聘(北京)软件工程师

jonathan@chinaeejob.com Linux  Emedded Software嵌入式软件工程师 1.本科以上学历,计算机相关专业。 2. 2年以上相关工作经验。 3.熟悉Linux程序设计 4.有手机平台开发经验者优先考虑。 流媒体软件工程师(RTP/RTSP/MMS pro ...…

查看全部问答>

STM32初级阶段硬件设计问题

在设计硬件电路时遇到了以下的问题,请问大家:1、仿真的问题:     1)用万利199的开发板,上面的JTAG只是用来仿真自己另外开发的板子么,如果用它仿真要做或者买一根JTAG的电缆么,如果是这样我们开另开发板了就不 ...…

查看全部问答>

帮忙给时钟加个闹钟和秒表,各位大神帮帮忙

#include #define uint unsigned int #define uchar unsigned char sbit rs=P2^0; //定义液晶显示器控制端口 sbit rw=P2^1; sbit en=P2^2; sbit s1=P1^0; //定义按键控制 sbit s2=P1^1; sbit s3=P1^2; sbit s4=P1^3; sbit SPK=P3^0;//蜂鸣器,通过 ...…

查看全部问答>

恩智浦推出面向紧凑非调光灯的新款LED驱动器IC

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 SSL2108x系列针对非隔离拓扑结构设计,为100V至230V市场提供统一设计平台 …

查看全部问答>

arm 中 “<<”, “>>” 的含义是什么?

不清楚<<, >>的含义,譬如1<<25, 这句代表什么含义?菜,谢谢指教。…

查看全部问答>

AM335x学习心得之PINMUX的配置

PINMUX是TI为方便大家对脚进行初使化设置编写的一个软件,可以完成对管脚的配置。利用这个工具可以方便大家对一些管脚头文件的定义的生成,让我们省去编写头文件的烦恼。首先从TI的官方网站下载软件包:http://software-dl.ti.com/dsps/dsps_public ...…

查看全部问答>