历史上的今天
今天是:2025年01月05日(星期日)
2018年01月05日 | 在C51程序设计中变量的空间分配几个方法
2018-01-05 来源:eefocus
C51中变量的空间分配几个方法
1、 data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。
2、 data区内最好放局部变量。
因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;
3、 确保你的程序中没有未调用的函数。
在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。
4、 程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。
在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。定义方法是: bdata bit LEDState;但位类型不能用在数组和结构体中。
5、 其他不频繁用到和对运算速度要求不高的变量都放到xdata区
上一篇:单片机在便携式设备中的应用与设计
史海拾趣
|
你好,1MHz属于中波频段内。你要干扰的信号源的场强和调制方式我不知道。我只能给你提供个10W左右的1MHz的高频振荡器,我曾经用这个做过调幅发射机。你如果做干扰器的话还需要锯齿拨波发生器做信号源。… 查看全部问答> |
|
BOOL IncomingBarPWndProc (HWND hwnd, UINT uimessage, WPARAM wParam, LPARAM lParam) { BOOL bResult = FALSE; LPCTSTR ...… 查看全部问答> |
|
不知道为什么我刚买的清华紫光的U盘插到电脑上就自动运行并且打开了U盘 但是在我同学电脑上不出现这个问题,而其他人的U盘在我的电脑也不出现问题! 请问这个问题是怎么造成的?? 怎解决呢?? 谢谢!!~… 查看全部问答> |
|
谈谈430中ADC10四种通道采样的问题,希望能对大家有所帮助 起始对于ADC10四种通道采样的问题,如何操作ADC10,我想大家应该都知道,不知道的就去看手册吧。对于大多数人来说,就像我自己,最大的困难就是如何取值,ADC10中自带一个DTC可以不借助CPU而自动传值,但是传到RAM里的值如何读出来输入到引脚上,这 ...… 查看全部问答> |




