当前位置:网站首页 > 技术博客 > 正文

51单片机c语言数据存放



参考来源:Keil > Help > uVision Help > Cx51 Compiler User’s Guide > Language Extensions > Memory Types

Cx51编译器可以访问8051的所有存储区域,声明变量时可以指定分配的存储区,也可以基于内存模型配置进行隐式分配。

关键字存储空间地址范围访问方式data内部RAM(低位128 bytes)0x00~0x7F直接寻址idata内部RAM(全部256 bytes)0x00~0xFF间接寻址bdata内部RAM(指定 16 bytes)0x20~0x2F位寻址/直接寻址pdata扩展RAM(低位256 bytes)0x00~0xFF间接寻址xdata扩展RAM(最大64K bytes)0x0000~0xFFFF间接寻址codeFlash(最大64K bytes)0x0000~0xFFFF间接寻址

实际项目中经常用到的是 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设计、开发平台、软件工具等知识分享。

欢迎转发,请注明出处及作者。关注微信公众号,获取最新文章动态。
在这里插入图片描述

版权声明


相关文章:

  • 单臂路由原理与配置2025-01-05 22:01:04
  • 数据结构快速排序图解2025-01-05 22:01:04
  • 命令行选项语法错误类型命令/帮助2025-01-05 22:01:04
  • knn算法百度百科2025-01-05 22:01:04
  • 红黑树结构图2025-01-05 22:01:04
  • k2p高恪固件评测2025-01-05 22:01:04
  • oauth原理2025-01-05 22:01:04
  • 微信小程序源码免费下载2025-01-05 22:01:04
  • fcntl ioctl2025-01-05 22:01:04
  • 迭代器+12025-01-05 22:01:04