找回密码
 注册
关于网站域名变更的通知

单片机中的ROM和RAM是什么

2024-3-27 11:43| 查看: 133| 评论: 0

摘要: 众所周知,51 内部的存储器分为数据存储器 RAM 和程序存储器 ROM。以 AT89c51 为例,其中有 128 字节随机存储器(又称数据储存器 RAM)和 4K 字节的只读存 储器(又称程序存储器 ROM)。 先说说这个 4K 字节的程序 ...
众所周知,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 来寻址。访问效率低,此外这 种数据指针不能对称操作。

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


本站资讯文章系编辑转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。
本站拥有对此声明的最终解释权。
收藏 邀请
关闭

推荐内容上一条 /1 下一条

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-24 19:12 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

返回顶部