参考来源:Keil > Help > uVision Help > Cx51 Compiler User’s Guide > Language Extensions > Memory Types
Cx51编译器可以访问8051的所有存储区域,声明变量时可以指定分配的存储区,也可以基于内存模型配置进行隐式分配。
实际项目中经常用到的是 xdata, code
变量声明/定义时,添加关键字data,idata,bdata,pdata,xdata,code。
MCU访问内部RAM时,读写速度比扩展RAM速度快。
因此在编写应用代码时,把频繁使用的变量放在内部RAM,使用较少的变量放在外部RAM。
Flash中的变量,只能进行读操作,掉电保存。
RAM中的变量,可以读写操作,掉电不保存。
8051存储器结构
data
data只能声明变量,不能声明函数。
读写data变量时,MCU使用8位地址内部RAM(低位128字节)。
优点是读写速度最快,缺点是可用空间太小。
idata
idata只能声明变量,不能声明函数。
读写idata变量时,MCU使用8位地址内部RAM(全部256字节)。
可访问空间为内部RAM的全部256字节,其中低位128字节和data空间重复,只是访问方式不同。
bdata
bdata只能声明变量,不能声明函数。
读写bdata变量时,MCU使用8位地址内部RAM(部分16字节)。
可访问空间为内部RAM的16字节,地址范围为0x20~0x2F,位于data空间内部。
pdata
pdata只能声明变量,不能声明函数。
读写pdata变量时,MCU使用8位地址扩展RAM(低位256字节,一个页)。
xdata
xdata只能声明变量,不能声明函数。
读写xdata变量时,MCU使用16位地址扩展RAM(全部地址,最大64K字节)。
code
code可以声明常量,也可以声明函数。
读code常量时,MCU使用16位地址Flash空间(最大64K字节)。
声明函数时,编译器默认隐式添加code关键字,用户不用处理。
微信公众号:萤火虫的电子笔记
分享电子产品开发软、硬件方面知识,51单片机、STM32、ARM、AltiumDesigner PCB设计、开发平台、软件工具等知识分享。
欢迎转发,请注明出处及作者。关注微信公众号,获取最新文章动态。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/13022.html