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字节数,因为即使超过了,编译器也不会提示错误,但是程序必定会出错。
关键字:STC单片机 扩展RAM
引用地址:
STC单片机内部扩展RAM的应用
推荐阅读最新更新时间:2024-03-16 12:42
stc单片机不断电下载程序
stc单片机支持串口isp程序下载,不必使用专用下载器,仅使用串口就能下载程序。但每次下载程序都要断电再上电,比较麻烦。 下面介绍一种不需断电就能下载程序的方法,在程序调试时比较方便。 基本原理: stc单片机有专用的复位寄存器,通过对该寄存器写入不同的数值可以实现单片机热启动复位。 寄存器功能如下图所示: 由上图可以看出只要满足某个条件,向ISP_CONTR写入0x60,就可以实现从ISP监控区软启动启动 某个条件设置为:当串口接收到0xaa数据时,单片机执行ISP_CONTR=0x60; 指令,从ISP监控区软启动启动。 演示程序如下: //*************************STC12C5410
[单片机]
中兴暗示将推20GB内存手机:或用内存扩展技术
随着科技的进步,如今智能手机的配置越来越高,配置竞争也依然激烈,就拿内存来说,很多新机的内存已经超过了很多用户家中笔记本电脑的容量,比如联想就已经推出了搭载18GB内存的拯救者电竞手机2 Pro。 昨天,中兴高管吕钱浩在微博称,“20GB 内存手机流畅得不像yyds。”暗示将推出采用20GB 内存的智能手机。 既然目前市面上已经有搭载18GB 内存的手机,20GB 内存的手机即将到来也并不让人惊讶。不过有网友猜测,中兴这款手机实现20GB 内存的方式还有一种可能,那就是不少厂家已经支持的内存扩展技术,也就是将18GB 内存扩展为20GB。此前华为、OPPO、vivo、小米都已经推出了类似的技术,其实就是在内存不足的情况下
[手机便携]
基于STC单片机的智能LED路灯控制器设计
当前巨量的能源消耗和由此引起的能源短缺、价格上涨等已使得节约能源成为一项十分迫切的任务。各国消耗的能源中很大一部分用于照明,其中城市公共照明(主要是道路照明和景观照明)在我国照明耗电中占30%.有资料显示,每年用于照明的电力在3 000 亿度以上,若采用LED 照明,每年就可以节约1/3 的照明用电,基本上相当于总投资规模超过2 000 亿元的三峡工程的全年发电量。综合以上优点,LED光源自然成为城市公共照明的首选,同时目前国内大部分城市的道路照明管理系统直至现在仍在沿用简单的光控、钟控等传统控制方式。这些系统普遍存在着难以反馈路灯运行状态信息、难以进行远程控制等局限,基本没有节电效果,并且采用传统的人工巡检,不仅使路灯管理部
[单片机]
STC单片机波特率自适应方法
0 引言 串口RS 232是工业控制、仪器仪表、计算机外设常用的一种通信协议。串口通信的波特率一般都是选取标准系列值,并要求通信双方严格遵循相同的波特率,实际应用中,一台设备往往要与多种其他设备联络,为适应各种不同设备的通信速度,就要求该设备能适应不同的波特率,实现这种要求的常见方法有两种,一是增加波特率选择开关,二是设计能自动适应各种常见通信速度的串口。第一种方法增加了硬件,同时针对不同对象需要重新设置开关,在不清楚对方波特率的情况下还无法使用。第二种方法采用软硬件结合,通过检测、计算,自动选择正确的波特率,实际使用极其方便。 自适应波特率串口的实现方法通常有以下几种: (1)协议约定通信开始时主机固定发送
[单片机]
一加9RT:支持扩展7GB虚拟内存
一加9RT 5G手机目前已经官宣,外观和部分配置曝光。该产品将于10月13日19:30在线上发布,搭载高通骁龙888处理器,配备三星E4材质120Hz屏幕。 今日,一加宣布 该机将支持扩展7GB虚拟内存 ,流畅不玩虚的。 虚拟内存(部分厂商叫“内存扩展”)是一种通过牺牲部分存储,为低内存手机带来更好的体验的功能, 安卓 手机界的最新趋势之一就是为设备支持虚拟内存。 目前OPPO的旗舰机支持7GB内存扩展,一加以前的机型还没有获得该功能,不过从原理上来说可以通过软件更新获得。 一加9RT将内置19067.44 mm? 空间散热系统 ,这相当于部分平板电脑的散热面积,同时也是迄今散热面积最大的一加手机。 一加9RT手机将提供骇
[手机便携]
基于STC单片机的ISP下载线设计
本文首先介绍了在线编程技术,然后给出了基于STC单片机两种下载线设计电路,最后阐述了ISP下载线的性能特点。实践表明:本设计具有低成本、高灵活性,对单片机爱好者,尤其是初学者,具有很强的实用价值。 一.ISP技术 在单片机的实际应用中,往往要求系统能够脱机运行,这就要求必须将用户程序代码固化到非易失性的程序存储器中。把用户程序代码固化到程序存储器的过程称为编程。传统对程序存储器的编程是通过编程器完成的,用户需要将单片机从目标板上取下来放到编程器上,然后通过烧写软件将程序代码固化到程序存储器中,这种编程方式通常称为脱机烧写(也叫离线编程)。但随着芯片制造工艺的不断提高,贴片式封装得到快速发展,这就使得单片机不可能轻易取下
[单片机]
基于stc单片机的AT89S52离线烧录器程序
下面是部分 源码 预览,完整的代码请到 http://www.51hei.com/bbs/dpj-20605-1.html 下载 #include uart.h #include s51pro.h #include myfun.h #include znfat/znFAT.h extern unsigned char OutBuf ; extern unsigned char InBuf ; unsigned char idata psignbuf ; unsigned char code_buf ; sfr P1M0 = 0x92; sfr P1M1 = 0x91; //定义STC12单片机IO模式特殊
[单片机]
STC单片机免断电下载程序的另一种更简单的方法
看到网上有一些STC单片机免断电下载程序的例子。但是都是要用串口中断来完成。以下是一个程序片断 拿来说明 在调试程序中加入串口初始化代码,串口中断代码即可实现不断电下载程序 TMOD|=0x20; SCON=0x50; TH1=0xfd; //12T时钟9600bps TL1=0xfd; TR1=1; ES=1; EA=1; AUXR=AUXR|0x40; //定时器1使用1T时钟 9600*12=115200bps void uart(void) interrupt 4 { uchar cdd; if(RI) { RI=0; cdd=SBUF; if(cdd==0xaa) { ISP_
[单片机]