没有合适的资源?快使用搜索试试~ 我知道了~
单片机STC内部扩展RAM的应用
4星 · 超过85%的资源 需积分: 50 39 下载量 163 浏览量
2009-08-25
11:05:44
上传
评论
收藏 43KB DOC 举报
温馨提示
试读
2页
RAM是用来在程序运行中存放随机变量的数据空间,51单片机默认的内部RAM只有128字节,52单片机增加至256字节,STC89C52增加到512字节,STC89C54、55、58、516等增加到1280字节,对于编程者来说,一个芯片的RAM越多,写起程序来就越容易得心应手,不会总考虑RAM不够用而担心这担心那,连过多的变量都不敢定义........
资源推荐
资源详情
资源评论
单片机 STC 内部扩展 RAM 的应用
RAM 是用来在程序运行中存放随机变量的数据空间,51 单片机默认的内
部 RAM 只有 128 字节,52 单片机增加至 256 字节,STC89C52 增加到 512
字节,STC89C54、55、58、516 等增加到 1280 字节,对于编程者来说,
一个芯片的 RAM 越多,写起程序来就越容易得心应手,不会总考虑 RAM 不够
用而担心这担心那,连过多的变量都不敢定义。
在前面我们写程序时曾讲到过,如果定义一个变量后,不对这个变量进行
初始化,这个变量默认的初值就是 0,其实这个结论是需要一定的条件的,在
用 KEIL 编写程序时,总程序中所有变量占用的字节之和小于 128 字节,并且
存储器模式为 small 模式的前提下,对定义的变量不进行初始化时,编译器会
默认将变量值设定为 0。一旦程序中的总变量超过 128 字节,必须对所有变量
进行初始化,否则,没有被初始化的变量默认值将是不确定的。当变量总和超
过 128 字节时,必须还要在编译器中重新设定存储器的存储模式,存储器模式
一共有 3 种,分别为 small、compact 和 large 模式,在 KEIL 编译器中有选
项可进行选择,选项表如图 4.4.1 所示。它决定了没有明确指定存储类型的变
量、函数参数等数据的默认存储区域。如果在某些函数中需要使用非默认的存
储模式,也可以使用关健字直接说明。下面对这三种模式分别做介绍。
1. small 模式
small 模式中,所有缺省变量参数均装入单片机内部 128 字节 RAM 中,
当定义类似如:uchar a; %oat b;等变量时,这些变量都装入内部 128 字节
RAM 中。使用该模式的优点是访问速度快,缺点是空间有限,而且是对堆栈的
空间分配比较少,难以把握,碰到需要递归调用的时候需要小心。所以这种模
式只适用于小程序。
2. compact 模式
compact 模式中,所有缺省变量均位于单片机内部 256 字节 RAM 中,和
在 small 模式中使用关健字 pdata 来定义变量的效果相同,如:uchar pdata
a[100];在该种模式下,程序总变量不得超过 256 字节,对于只有 128 字节的
单片机,使用此模式定义变量超过 128 字节时,程序将出错。优点是空间较
small 模式宽裕,速度较 small 慢,但较 large 要快,是一种中间状态。
3. large 模式
在 large 模式中,所有缺省变量可放在多达 64KB 的 RAM 区,包括内部
RAM 和外部 RAM,和使用关健字 xdata 来定义变量的效果相同。这种模式的
优点是空间大,可存变量多,缺点是访问速度慢,尤其对于 2 个以上的多字节
变量访问速度来说更是如此。
方便起见,STC 单片机要访问扩展 RAM 时,可直接用以下方法:首先在编译
器中设置存储器模式为 large 模式,如下图所示:
资源评论
- vivayi82013-10-19很好,谢谢,就是不太详细
- aaaaa工2014-07-08说的很好,再配张图说明就更好了
- lichking0022012-07-10例子不错,但实际没那么复杂,打开AUXR寄存器就可以了!但内部RAM稳定性有待观察
- 天下之狐2013-08-24说的很好,再配张图说明就更好了
bigggao
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功