单片机中存储区的应用

发布者:柳絮轻风最新更新时间:2015-11-11 来源: eefocus关键字:单片机  存储区 手机看文章 扫描二维码
随时随地手机看文章
data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。


2、 data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;

3、 确保你的程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。

4、 程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。

5、 其他不频繁用到和对运算速度要求不高的变量都放到xdata区。

6、如果想节省data空间就必须用large模式,将未定义内存位置的变量全放到xdata区。当然最好对所有变量都要指定内存类型。

7、 当使用到指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。如指针p是指向data区,则应定义为: char data *p;。还可指定指针本身的存放内存类型,如:char data * xdata p;。其含义是指针p指向data区变量,而其本身存放在xdata区。

关键字:单片机  存储区 引用地址:单片机中存储区的应用

上一篇:keil应用小贴士:Use MicroLIB是干什么的
下一篇:AVR/C51和PIC八位单片机性能比较

推荐阅读最新更新时间:2024-03-16 14:38

PIC单片机CCS之C语言(#USE FAST_IO的用法)
#USE FAST_IO 语法:#use fast_io(port) port是A~G 目的:影响编译器如何产生输入输出代码,说明如下.这种指令有效,直到出现下一个#use xxxx_io为止.执行I/O的快速方法将使编译器不用对I/O方向寄存器进行编程就可执行I/O操作,但用户必须保证通过set_tris_X()来设置I/O方向寄存器. 例子:#use fast_io(A)例子文件:ex_cust.c;该文件在前面已经叙述过了
[单片机]
单片机编程-如何快速零基础到入门51单片机(一)
要学习单片机,首先我们了解一些计算机的基本概念和基础操作,然后了解电路及其元器件的基本理论,为我们学习更高级的单片机入门IT和信息技术行业打下一定的基础。 本次我们先学习普中51单片机开发板,这块开发板能在淘宝上买到,而且这种板子也算是比较便宜的了,大概十几块钱,先声明我们和淘宝卖板子的店家没有任何关系,只是告诉大家购买的地方。 华维单片机编程:免费领!单片机入门到高级开挂学习路径(附教程+工具)37 赞同 · 8 评论文章 然后我们还一台需要Windows电脑,XP win7.8.10都是可以的操作都是大同小异的,但是特别说明下就是苹果的电脑好像不行,因为我们接下来使用的这个keil5软件没有苹果的版本,如果你的电
[单片机]
<font color='red'>单片机</font>编程-如何快速零基础到入门51<font color='red'>单片机</font>(一)
使用单片机3个IO口+74HC595驱动驱动控制LCD1602液晶
此内容有一定的深度,初学者不建议看。 最近一直在研究数码管驱动芯片 74HC595 ,发现一件很好玩的事情,那就是 用74HC595做驱动调试程序时,发现它只能输出,不能输入。 查找大量资料,从某个网友制作的mylib.c(NES)中获得了一条指令: #define bin(_a,_b,_c,_d,_e,_f,_g,_h) ((_a) 7|(_b) 6|(_c) 5|(_d) 4|(_e) 3|(_f) 2|(_g) 1|(_h)) 分别是8 7 6 5 4 3 2 1位 我就想既然情况是这样的,那么能不能完全用74595来控制整个1602呢?于是…就有个下面这个有趣的过程了 废话不多说,先上电路系统仿
[单片机]
使用<font color='red'>单片机</font>3个IO口+74HC595驱动驱动控制LCD1602液晶
如何提高单片机C语言程序的执行效率
首先什么是执行效率。我们平常所说的执行效率就是使用相同的算法在相同输入条件下完成相同计算所产生的系统开销,目前来说一般会更多关注执行时间方面的开销。所有语言编写的代码最终要运行,都要转化成机器码。在更短的时间内完成相同的事那么效率就高。 关于如何提高C语言程序的执行效率,以我多年的编程经验在这里我来谈谈我的想法: 1.尽量避免调用延时函数 没有带操作系统的程序只能在while(1)里面循环执行,如果在这里面调用大量的延时这样会很消耗CPU的资源,延时等于是让他在这歇着不干事了,只有中断里面的才会执行。如果仅仅是做一个LED一秒闪烁一次的程序,那么很简单,可以直接调用延时函数,但是实际的项目中往往在大循环里有很多事要做,对于
[单片机]
如何提高<font color='red'>单片机</font>C语言程序的执行效率
51单片机定时器控制LED灯
考试考完了,闲得无聊,正好手头有一块51学习板,捣鼓一下。控制任务如下: P1.0 控制一个 LED 灯,亮0.5s,灭0.5s。 设计思路:这里我们只用 定时器 ,不用软延时。51的定时器最多定时60ms,所以我们设置定时器每50ms中断一次,通过在中断程序设置一个变量来统计中断次数,从而实现较长时间的定时。这里我们是每500ms执行一次灯亮灯灭的动作,所以每10个中断等于500ms(50ms x 10)。第6行,全局变量 ti mer50msCount 就是中断次数。第19-23行,当timer50msCount 为10时,代表500ms时间到,把P1.0 取反,动作一次。 这里有个繁琐的地方,定时器的初值需要手工计算。不
[单片机]
51<font color='red'>单片机</font>定时器控制LED灯
51单片机原理介绍
单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统,以下是8051系列单片机原理和内部结构基础介绍 外部引脚功能 存储空间配置和功能  片内RAM结构和功能  特殊功能寄存器的用途和功能  程序计数器PC的作用和基本工作方式  I/O端口结构、工作原理及功能  时钟和时序  复位电路、复位条件和复位后状态  低功耗工作方式的作用和进入退出的方法 §2-1 单片机原理简介和引脚功能 一、内部结构 二、引脚功能 40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 ⒈
[单片机]
51<font color='red'>单片机</font>原理介绍
基于CIP-51内核单片机的总磷在线自动分析仪
   1 概述   C8051F0XX系列单片机是Cygnal公司新推出的一种混合信号系统级单片机。该系列单片机片内含CIP-51的CPU内核,它的指令系统与MCS-51完全兼容。其中的C8051F020单片机含有64kB片内Flash程序存储器,4352B的RAM、8个I/O端口共64根I/O口线、一个12位A/D转换器和一个8位A/D转换器以及一个双12位D/A转换器、2个比较器、5个16位通用定时器、5个捕捉/比较模块的可编程计数/定时器阵列、看门狗定时器、VDD监视器和温度传感器等部分。C8051F020单片机支持双时钟,其工作电压范围为2.7~3.6V(端口I/O,RST和JTAG引脚的耐压为5V)。与以前的51系列单
[单片机]
基于CIP-51内核<font color='red'>单片机</font>的总磷在线自动分析仪
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved