1、DATA区内存空间小,所以只有频繁用到的或对运算速度要求很高的变量才放到DATA区,比如for循环中的计数值。
2、DATA区内最好放局部变量。
因为局部变量空间是可以覆盖的(某个函数的局部变量空间在退出该函数时就会释放,由别的函数的局部变量覆盖使用),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;
3、确保程序用没有未调用的函数。
在Keil C中遇到未调用函数,编译器就会将其认为可能是中断函数。函数里的局部变量的空间是不释放的,也就是同全局变量一样处理。
4、程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。
在51系列的芯片中有16个字节位寻址区bdata, 其中可以定义8*16=128个逻辑变量。定义方法是: bdata bit flag; 但位类型不能用于数组和结构体中。
5、其他不频繁用到和对运算速度要求不高的变量都放到xdata区。
6、如果想节省DATA空间,就必须用large模式,将未定义内存位置的变量全放到xdata区。当然,最好对所有变量都要指定内存类型。
7、当使用到指针是,要指定指针指向的内存类型。
在C51、C251中,未定义指向内存类型的的通用指针占用三个字节;而指定指向DATA去的指针只占1个字节;指定指向XDATA区的指针占2个字节。
如指针p是指向data区,则定义为:char data *p; 还可以指定指针本身存放的内存类型,如:char data *xdata p; 其含义是指针p指向DATA区变量,其本身存放在XDATA区。