【干货分享】STC内部扩展RAM的应用

STC单片机扩展RAM使用指南

前言

RAM是存放程序运行过程中随机变量的数据空间。51单片机默认的内部RAM只有128字节,后面的型号RAM的空间也是越来越大。对于编程者来说,一个RAM的空间越大,写起程序来就会越容易越舒服。
最近在做产品选型的过程中,发现STC数据手册既有RAM,又有SRAM。并且SRAM居然是RAM的4倍。如果是这样的话,编程起来的舒适感就要大大提高了。但是又不确定该怎么去使用,因为之前没接触过这一块。所以专门花了点时间去研究了一下。

STC内部扩展RAM的应用

STC内部扩展RAM的应用:在KEIL中的Memory Model是可以直接选择我们要使用的RAM的。
  • Small:所以缺省变量参数均装入单片机内部的128K RAM中。优点是访问速度快,缺点是空间有限,而且堆栈空间分配比较少,难以把握。
  • Compact:所有缺省变量均位于单片机内部256字节RAM中,和在small模式中使用关健字pdata来定义变量的效果相同,对于只有128字节的单片机,使用此模式定义变量超过128字节时,程序将出错。优点是空间较small模式宽裕,速度较small慢,但较large要快,是一种中间状态。
  • Large:所有缺省变量可放在多达1KB的RAM区,包括内部RAM和外部RAM,和使用关健字xdata来定义变量的效果相同。这种模式的优点是空间大,可存变量多,缺点是访问速度慢,尤其对于2个以上的多字节变量访问速度来说更是如此。 
  • 这里的选择是指没有明确指定存储类型的变量,函数参数等数据默认的存储区域。
我们可以通过DATA、PDATA、XDATA关键字定义变量时直接指定存储的区域。举个例子:
#define ADC_SAMPLE_COUNT 500
unsigned int data adc_buf[ADC_SAMPLE_COUNT];  //默认用RAM存储,内存不足,编译失败
unsigned int pdata adc_buf[ADC_SAMPLE_COUNT]; //存放到256K的RAM,编译通过
unsigned int xdata adc_buf[ADC_SAMPLE_COUNT]; //存放到1k的SRAM,编译通过

应用建议

默认开启Large模式,然后需要快速访问的变量用data声明放到快速访问区。

嵌入式crafter全网平台同名,喜欢视频版的可以移步dy、xhs、b站。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值