变量的修饰date、xdate

一、Keil 51中的const与code & Keil MDK中的const与code

在Keil 51中,code修饰的变量放在ROM(Flash)中,而const修饰的变量为只读(不可修改),放在RAM中!

在Keil MDK中,如进行STM32的开发,code修饰符无法使用,使用的话会报错。那么要怎么来修饰存放在ROM中的变量?此时是用到const,用const修饰的变量是存放在ROM中的。

二、修饰变量

1.date  与idate

我们正常定义的变量默认是是data 区的

data:访问直接寻址的片内存储器,即内部RAM,它采用直接寻址方式,对变量最高速的访问最快

idata:访问间接寻址的片内存储器,即内部RAM .

eg:BF6952A 采用 DW8051 核作为 MCU 核,

●16K FLASH
● 256(内部)+512(外部)字节 SRAM
这是他的内存
 
data 区:共 256 字节,地址为 00H~FFH ,其中包括工作寄存器组、位寻址区、缓
冲以及 SFR ,其中缓冲区包含了堆栈区。通过立即寻址方式来读取与写数据。
 
idata 区:共 128 字节,地址为 80H~FFH ,该区域用户可以完全使用。通过工作寄
存器间接寻址方式来读取与写数据。
 
这是手册的解释,date区有256字节,idate128个字节,所以可见后面的 地址  80H~FFH
data 区与idata 区是共用空间;所以当我们定义不同区时,访问的速度不一样和存储的空间不一样,所以在定义程序变量时要注意堆栈空间,避免程序跑飞。
 
2.xdate  与pdate
 
xdata:访问外部数据存储器,即外部RAM
pdata:访问当前页面内的外部RAM中的XDATA,每一页256字节,按页访问;
(对PDATA 段寻址比对XDATA 段寻址要快,因为对PDATA 段寻址只需要装入8 位地址,而对XDATA 段寻址需装入16 位地址,所以尽量把外部数据存储在PDATA 段中。)
 
3.外部RAM与内部RAM
所以这两个区别简单说读取速度的区别,对于应用是要区别,内部空间相对小,对于程序中的全局变量或单个局部变量需占较大存储空间时,可以定义为xdata型,保存到XRAM区;对于要经常用到的变量可以定义到外部RAM。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值