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区。
分享到:
相关推荐
C51中变量的空间分配几个方法 1 、 data 区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到 data 区内,比 如 for 循环中的计数值。 2 、 data 区内最好放局部变量。 因为局部变量的空间是可以覆盖的...
关于在keil c51中如何定位变量、常数和函数的位置
本文章主要讲解Keil c51指针变量。
单片机C51学习 单片机C51-绝对地址 变量拆分为ASCII
本文主要简单介绍了Keil C51中变量的使用
Keil C51 中产生随机数的方法和样例
在C51中要实现对时间的精确延时有以下几种方法 其一:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒,就插入个这样的函数。 其二:对于延时比较长的,要求在大于10us,...
附录十五、C51程序中嵌入汇编程序 16 附录十六、调试(Debug)菜单 20 附录十七、C51函数定义 21 附录十八、循环 21 附录十九、51单片机 特殊功能寄存器(SFR) SBUF使用方法 (串口通讯) 23 附录二十、内部函数 25
keil C51的几个小入门程序-----流水灯keil C51的几个小入门程序-----流水灯keil C51的几个小入门程序-----流水灯keil C51的几个小入门程序-----流水灯keil C51的几个小入门程序-----流水灯keil C51的几个小入门程序-...
单片机空间分配看*.M51文件,ARM,DSP空间分配看*.map文件 1、函数定位: 假如要把C源文件 tools.c 中的...在工程中建立一个新的文件,如InitVars.c,在其中对要处理的变量赋初值(假设是code变 量): char code m
作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用...
C51的结构体数据在单片机编程中的应用
Keil C51中文教程 Keil C51中文教程 Keil C51中文教程
C51编程头文件的使用方法C51编程头文件的使用方法
在c51上实现网络连接
这是txt格式的,文中介绍了几种在C51程序设计中的精确延时方法。
Keil_C51里面lib文件生成和调用方法
c51步进电机控制方法源码c51步进电机控制方法源码c51步进电机控制方法源码c51步进电机控制方法源码
Keil C51 中C语言编程下,函数绝对地址的定位方法,即将某个函数生成的代码放到ROM中的指定位置