51RAM不够问题

51单片机一般有RAM和XRAM,RAM访问速度快,但是容量小,一般编译器会根据程序情况,自动分配,也可以手动分配
方式1:定义变量的时候 前面加 xdata关键字, 则分配到XRAM
例如 unsigned char xdata str[] = “Hello C51!”;
定义变量的时候 前面加 data关键字, 则分配到RAM
例如 unsigned char data str[] = “Hello C51!”;
方式2:在Keil或者编译环境中可以调整内存模式为Large,Small,Compact,如下图
在这里插入图片描述
选定一种模式后,再配合方式1,对指定变量做例外处理。
比如,在我们需要将我们写的核心算法程序做lib时,lib里面变量比较多,则可以选定Large模式,则没有特殊说明,变量被分配到XRAM,一些和用户程序接口的变量,则可以通过指定data分配到RAM区,供用户程序快速访问。

另外,编译代码时,也可以指定编译模式,会影响最终使用到的指令和地址空间范围,large模式支持64K地址寻址,当然代码量也是最大的。如下图
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值