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语言里的DATA ,XDATA ,BDATA,IDATA,CODE,不是很清楚,因为在微机的c语言里根本没有这些东西,一下子出来难以让人接受,特别是没有硬件基本的朋友们。这也是写程序的时候经常犯错误的地方。请看下表
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !