单片机数据存储空间分配 日期: 2007-03-20 10:39 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区
查看全文 | (已有 0条评论) 查看评论 发表评论 鲜花:0朵 送鲜花 便便:0坨 扔便便 单片机原理