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