老古开发网首页
导航:老古开发网首页文章索引索引第2525页文章分类单片机第48页→[在C51中变量的空间分配几个方法]
| -文章搜索 - 最新文章 - |

第3063篇:在C51中变量的空间分配几个方法

发布时间:2006年10月15日 点击次数:4394
来源:   作者:
 

1、  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区。

欢迎进入老古论坛进行讨论
[单片机] 相关文章:
MCU的供电和去藕
简介:
1、建议在印制电路板中,VDD和GND分别由电源层和地层实现。连接到AVDD和AGND引脚的模拟电源应直接布线到电源层和地层,它们不能和任何一个数字电源共享线路连接。 2、数字和模拟电源端都必须安放退藕电容。 数字电源连线上的每两个电源引脚必须至少接有一个100nF电容,并尽量靠近这些引脚。较为理想的是每个电源引脚都有一个10nF或100nF的退藕电容。模拟电源应单独使用100nF和1nF电容并联去藕,并尽量靠近AVDD和AGND引脚。所有这些退藕电容都应是低ESR的陶瓷......

自己制做显卡温控报警器装置
对国内C语言教材的一点感想
单片机模拟遥控器
SPI接口介绍
 
下一个:[嵌入式系统]linux内核分析
简介:
启动   当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处 的代码,也就是ROM-BIOS起始位置的代码。BIOS先进行一系列的系统自检,然后初始化位 于地址0的中断向量表。最后BIOS将启动盘的第一个扇区装入到0x7C00,并开始执行此处 的代码。这就是对内核初始化过程的一个最简单的描述。   最初,linux核心的最开始部分是用8086汇编语言编写的。当开始运行时,核心将自 己装入到绝对地址0x90000,再将其后的2k字节装入到地址0x90200......

上一个:[综合电子]硬件开发基本准则

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:31毫秒