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; float 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模式。

其次,为安全起见,当程序中定义多于128字节的其它变量时,最好申明为xdata型,如 uchar xdata table[100];意思为定义一个100个字节容量的数组,将其在扩展RAM中分配存储空间。另外一定要注意,在large模式下,编写程序时,定义的变量总数千万不要超过对应单片机的内部最大RAM字节数,因为即使超过了,编译器也不会提示错误,但是程序必定会出错。

微型计算机中的rom跟ram关系,STC单片机内部扩展RAM的应用相关推荐

  1. STC - 同时外挂扩展RAM和12864时, C库函数失效的问题

    文章目录 STC - 同时外挂扩展RAM和12864时, C库函数失效的问题 概述 笔记 原理图 - 外挂XRAM 原理图 - 12864 错误现象 总结 END STC - 同时外挂扩展RAM和12 ...

  2. 如何用stc单片机内部ad采集多路交流信号

    用stc单片机内部ad采集多路交流信号,有两种办法: 一.用两个AD转换芯片,两路模拟量分别接一个.用单片机控制两个AD芯片同时启动转换,这样基本可以实现采集到同一时刻的两路模拟量值. 二.用两个采样 ...

  3. 单片机编程php,STC单片机内部FLASH读写程序(最新整理)

    <STC单片机内部FLASH读写程序(最新整理)>由会员分享,可在线阅读,更多相关<STC单片机内部FLASH读写程序(最新整理)(6页珍藏版)>请在人人文库网上搜索. 1.S ...

  4. 在微型计算机中硬件和软件的关系是_,计算机的硬件系统和软件系统的关系是什么?...

    计算机的硬件系统和软件系统的关系是缺一不可. 硬件它是所有软件运行的物质基础.与硬件直接接触的是操作系统,它处在硬件和其他软件之间,表示它向下控制硬件,向上支持其他软件. 在操作系统之外的各层分别是各 ...

  5. 在微型计算机中 cmos属于A顺序存储器,2019年9月网络教育统考计算机模拟卷(精华版)...

    2019年9月网络教育统考时间临近,复习期间做一些模拟题是有必要的,本文是2019年9月网络教育统考计算机模拟卷(精华版). 一.单选题练习 1. 完整的计算机系统由 ( C ) 组成. A.运算器. ...

  6. 微型计算机中的位置的是什么,电脑基础知识问答卷

    你想自己知道有多了解电脑知识么?下面小编给大家带来了-,想了解自己对电脑知识的实力,就动脑做做吧. 一.选择题***选择一个正确的答案******30分*** 1.下列叙述正确的是 A 世界上第一台电 ...

  7. STC单片机RAM在KEIL编程使用

    随着STC推出的各种新型号的单片机,其RAM空间大小也已经远超传统8051单片机RAM空间,本文主要总结传统8051单片机RAM和STC单片机RAM使用问题.并且介绍如何在编程中使用STC单片机的高容 ...

  8. 51单片机的c语言外部扩展,51单片机资源扩展:扩展片外RAM

    上一文中扩展了单片机的程序存储器,4KB存储空间提升到64KB.其实,4K的代码空间还凑合,但是51自带的256B数据存储空间使用起来还真紧张,其中留给用户的连128B都不到,所以不得不扩展片外RAM ...

  9. STC单片机使用Printf

    #include "STC8Axx.h" #include "Uart1.h" #include "Sys.h"#include <i ...

  10. 单片机中的ROM,RAM和FLASH的作用

    本文部分参考自:http://blog.sina.com.cn/s/blog_98ca54fc01017y4t.html 并在此基础上进行整理,添加了关于flash的问题. 之前从较为抽象的角度介绍了 ...

最新文章

  1. crc16modbus查表法_查表法计算CRC16校验值
  2. (常用API)正则表达式匹配练习
  3. 【除夕最炫烟花代码】—— HTML+JQuery实现2022跨年烟花特效
  4. 找回计算机管理账户,怎样找回原来的电脑用户账号?
  5. IntelliJ IDEA之Java开发常规项目配置介绍
  6. cad详图怎么画_CAD的图框应该怎么画? - CAD自学网
  7. python 转Excel二维表为一维表
  8. 面向对象系列(二)-封装,继承,多态
  9. 微信小程序-开放标签
  10. 发展心理学类毕业论文文献包含哪些?
  11. 集成VueCli5各种功能与插件(一)安装
  12. 关于pbootcms中被挂马以后的处理
  13. python算积分蒙特卡罗_蒙特卡罗计算积分
  14. 其他的一些生活小常识
  15. 你是否愿意用华为鸿蒙系统,如果华为改用自研的“鸿蒙”系统,你是否愿意尝试?...
  16. 学习笔记 JavaScript ES6 Promise的静态方法
  17. Oracle中tablesinfo_Oracle X$Tables | 學步園
  18. wxpython制作桌面悬浮球
  19. ucore lab 2
  20. 误码率matlab怎么计算,关于误码率的问题 急!!!!!

热门文章

  1. png转ico+windows图标+GIMP
  2. 多旋翼无人机ROSC++开发例程(四):基于Prometheus开源项目与Casadi开源优化求解器的模型预测控制简单应用例程
  3. mybatis日期查询
  4. 微信摇心愿如何选不同服务器,2020微信游戏摇心愿活动参与方法介绍
  5. (送书)《美好企业》导读:企业家需要超越世俗的成功
  6. 2022韦莱韬悦人力资源管理季刊
  7. 中国人民银行征信中心登录时无法输入密码,控件安装无效
  8. 复盘第二届长安杯电子取证习题
  9. 如何坚持完成自己的目标和计划?
  10. JS中改变this指向的两种方法