c51单片机中不同定义(idata,xdata ,code,idata)变量的存储位置不同

本文介绍了在Keil环境下C51单片机中常见的变量存储类型如code、data、idata、bdata、xdata等,详细分析了它们在内存位置、速度和掉电特性上的区别,以ch552g芯片为例,并着重对比了存储类型的时间效率和优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keil中对不同变量的数据进行存储

在这里插入图片描述
上图中是很长看到的一种存储数据变量code,类似这种存储方式还有data,xdata,idata,bdata,这些方式制定了数据的存储位置,方便程序中数据能够更快的处理(对于小数据量当然就没有这方面的考虑)。

传统c51单片机存储位置和变量定义图示

参考1参考2
data: 内部RAM低128字节,响应速度最快,采用直接寻址方式
idata: 内部RAM全256字节,采用间接寻址方式,速度相对较慢
bdata:片内RAM,位寻址方式
xdata:外部扩展RAM,采用**DPTR(data pointer数据指针访问,以16个二进制位为一个基础位,也就是两个字节为一个访问位)**访问
pdata:外部扩展RAM低256字节,分页寻址(一页256byte)
code:程序存储区,一般是内容较多且不需要修改的数据。

以ch552g芯片为例说明数据存储位置

从内存大小和数据传输速度分析

存储类型存储时间优点缺点
idata掉电丢失内部RAM,快速的数据传输,就像电脑中的内存条一般容量不大
data同上是idata的低字节(iRAM),高字节是直接访问的特殊功能寄存器
xdata外部扩展ram,掉电丢失以数据指针方式访问,16位为一个单位
codeflash,掉电不丢失存储空间大,常用于存储不变的数据和程序访问速度慢

内部数据存储空间idata共 256 字节,如下图所示,已全部用于 SFR 和 iRAM,其中 iRAM 用于堆栈
和快速数据暂存(低128字节)
,可细分为工作寄存器 R0-R7、位变量 bdata、字节变量 data、idata 等

在这里插入图片描述

pdata和xdata是同样的地址但反问方式不同

参考
例如,若xdata有65536字节,但pdata执行的一页256字节,则需要256个pdata的地址就可包含所有xdata的地址
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值