历史上的今天
返回首页

历史上的今天

今天是:2024年11月04日(星期一)

正在发生

2020年11月04日 | 51单片机中的ROM和RAM分别是什么?

2020-11-04 来源:51hei

众所周知,51 内部的存储器分为数据存储器 RAM 和程序存储器 ROM。以 AT89c51 为例,其中有 128 字节随机存储器(又称数据储存器 RAM)和 4K 字节的只读存 储器(又称程序存储器 ROM)。


先说说这个 4K 字节的程序存储器或者说只读存储器,我们写的程序经过编译器 编译成机器码都是存在这个区域,所以称为程序存储器;但单片机上电执行的时 候,此区域内的数据只能读取而不能写入,他的只读存储器的名称从这而来。


89c51 的 ROM 采用的是 FPEROM(Flash Programmable and Erasable Read Only

Memory),具体工艺我也不太清楚,号称可以擦写 1000 次,也就是说你每天写

30 次,一个多月就报废了。


在说说 128 字节的随机存储器或者说数据存储器,程序运行过程中,一些中间变 量存储在这个地方,也能从这个地方获取需要运算的值,所以称之为随机存储器, 也称为数据存储器。个人觉得相当于计算机的内存,掉电丢失。


看看 MSC-51 指令就知道,所有的数据移动指令都是对 RAM 区操作的,就是因为 无法改变 ROM。


51 内部的存储器在物理上可分为 4 个区域:片内 ROM,片外 ROM,片内 RAM 和片外 RAM。从逻辑上可分为三个区域,64KB 片内外统一编址的程序存储器(ROM),

128 字节或 256 字节的片内数据存储器(RAM),64KB 片外数据存储器(RAM)。


对应的 keil 编译器关键字为:

data    :    片内数据存储器(RAM)低 128 字节(51 系列片内只有 128 字节,52 系列有 256 字节)

bdata:    可位寻址的片内 RAM 以上两种类型可以快速的存取数据,常用来放临时性的传递变量或使用频率较高 的变量。

idata :    片内数据存储器(RAM)256 字节

xdata:    片外数据存储器 64KB

pdata:    片外数据存储器低 256 字节



code:    64KB 程序存储器(如果变量定义在这个空间,后面就不能修改了,如果 有语句改变它的值,编译器就会报错。)


此外,C51 还有三种存储模式(这是在开发环境里面设置的):SMALL, COMPACT,

LARGE


SMALL 模式下,如果不做特别说明,参数及局部变量默认为 data 型,放在片内 RAM128 字节内,访问迅速。由于内部的 RAM 有限,如果变量过多,会导致频 繁的使用寄存器,而使代码变的冗长。此时栈也在片内的 RAM,栈长很关键, 因为栈长依赖于不同函数的嵌套层数。


COMPACT:不做特别说明,参数及局部变量默认为 pdata,栈空间在内部 RAM。


LARGE:参数及局部变量默认为 xdata,使用 DPTR 来寻址。访问效率低,此外这 种数据指针不能对称操作。


全局变量会根据定义的类型或者存储的模式分配在相应的存储区内,有固定的地 址,如果全局变量过多则会导致占用太多内存,处理速度变慢。


推荐阅读

史海拾趣

AirBorn公司的发展小趣事

随着业务的发展,AirBorn开始将目光投向全球市场。公司积极参与国际电子展会,与全球各地的客户建立合作关系。同时,AirBorn还加大了对研发和生产设备的投入,提升产品质量和生产效率。这些举措使得AirBorn的产品在全球范围内赢得了良好的声誉,公司也逐渐成长为一家具有全球影响力的电子连接器制造商。

ABLIC公司的发展小趣事

ABLIC的起源可以追溯到精工电子有限公司旗下的精工半导体有限公司(SII Semiconductor Corporation)。在半导体产业蓬勃发展的背景下,日本政府通过政策投资银行对SII进行了注资,使其在原有业务基础上进一步拓展。然而,随着股权结构的变动,SII决定在2018年进行品牌重塑,更名为ABLIC,并专注于模拟半导体业务的发展。这一决策标志着ABLIC踏上了全新的发展道路。

Hpc Technology Inc公司的发展小趣事

在“2018慕尼黑上海电子展”上,ABLIC展示了其即将推出的紫外传感器。这一产品的推出,彰显了ABLIC在传感器领域的创新能力。紫外传感器在环境监测、安全防护等领域具有广泛应用前景。ABLIC凭借其在半导体技术方面的深厚积累,成功研发出具有高性能和稳定性的紫外传感器,为市场带来了新的选择。

艾迈斯(AMASS)公司的发展小趣事

艾迈斯(AMASS)公司创立之初,便专注于智能设备动力连接器领域。面对市场的激烈竞争和技术的不断更新,公司创始人凭借深厚的行业经验和前瞻性的眼光,带领团队攻克了一个又一个技术难关。他们深入市场调研,精准把握消费者需求,成功推出了一系列具有竞争力的连接器产品。这些产品不仅性能稳定、质量可靠,而且具有极高的性价比,迅速在市场上赢得了良好的口碑。

FOTEK公司的发展小趣事

进入21世纪,福禄克通过一系列精明的并购活动,实现了业务的快速扩张。2000年,公司成功收购了Wavetek Wandell Goltermann的精密测量部门,这次并购不仅增强了福禄克在电气校准市场的竞争力,还为其带来了丰富的技术专利和客户资源。此后,福禄克继续通过并购方式,进入新的技术领域和市场领域,不断拓宽其业务范围。

DSMI Electronics SA公司的发展小趣事

为了进一步扩大市场份额,DSMI Electronics SA公司开始实施全球化战略。公司积极拓展海外市场,通过参加国际展会、建立海外销售网络等方式,将产品销往全球各地。同时,DSMI还注重本土化经营,根据不同市场的特点和需求,调整产品策略和营销方式。这些努力使DSMI在国际市场上取得了显著的成绩。

问答坊 | AI 解惑

一块单片机上实现

一块单片机上实现 12位AD、DA转换,CAN接口在总线上扩展 数据传输的RS485用75176加一个P1.X口 还有红外遥控,声光报警,方波输出如果一个功能一个脚,那P1口足够用了,不够用还是在总线上扩(用373做输出,244做输入) LED数码显示或键盘也用37 ...…

查看全部问答>

LabVIEW 实践教学教程

  一个自己用了后,感觉效率很高的LabVIEW 学习教程,两个星期包你学会使用!…

查看全部问答>

武汉高校内部赛题

本帖最后由 paulhyde 于 2014-9-15 09:19 编辑  …

查看全部问答>

图片浏览器:加载大图片的问题

  因为有时候用户可能翻页的速度很快 我必须速度准备好图片,但是有时候图片实在太大了 需要等待很久(比如说一秒) 目前IPHONE 在滑动过快的时候 是显示一张比较模糊的图片,不晓得是怎么实现的 大家有什么好方法 进来talk talk…

查看全部问答>

LCD上电初始化

    在使用LM6029A 128*64的LCD模块时,LCD的复位信号由复位电路提供,控制器是S6B0724A01。第一次上电初始化LCD总是不成功,紧接着再上电LCD可以成功初始化,然后隔四五分钟或者更长时间,再上电,LCD还是不能成功初始化。后来用I/O 口 ...…

查看全部问答>

关于hive注册表?

boot.hv是放在HIVE BOOT SECTION ;END BOOT SECTION之间的,在系统启动的时候实现加载! 那么,在注册表中的其它部分是怎么确认分别归属于default.hv和user.hv的, 是不是有什么标签?  …

查看全部问答>

[DIM3517试用]

-------首先要谢谢EEWorld和SEED对我的信任,给了我这个难得试用的机会。对于规模较小的公司来说,设计完整,做工精炼的开发板都是一项不小的开销,何况是对于工程师个人。所以EEWorld和SEED能提供这样的试用机会,我十分高兴也很兴奋。第二,说说 ...…

查看全部问答>

STM8eeprom问题严重--求解

我用STM207,写EEPROM时会导致CPU复位,,不知是何故,, 只要把串口通讯线接上,  一写EEPROM就会死机复位,,,. 拔掉好像不死,,,,怎么会这样,,,,哪位高人请指点指点…

查看全部问答>

UART4_IRQn定义

红色部分用IAR编译的时候提示 undefined,换成绿色的却没有问题?? void NVIC_Configuartion(void) {   NVIC_InitTypeDef NVIC_InitStructure; /*Config the NVIC Preemption Priority Bits*/   NVIC_PriorityGrou ...…

查看全部问答>