变量的修饰date、xdate

变量的修饰date、xdate一 Keil51 中的 const 与 code amp KeilMDK 中的 const 与 code 在 Keil51 中 code 修饰的变量放在 ROM Flash 中 而 const 修饰的变量为只读 不可修改 放在 RAM 中 定义变量前加 xdata

一、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。
编程小号
上一篇 2025-09-23 19:51
下一篇 2025-08-11 18:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/77307.html