本帖最后由 霸气侧漏 于 2014-9-30 11:03 编辑
怎么减少RAM的使用量,用的是12864无字库的,定义了很大的数据用的code,为了显示方便,层层调用。stc12c5612ad,
发现ram占用很大,然后再修改编译选项
方法一:
QQ截图20140929095520.png (20.08 KB, 下载次数: 1)
下载附件
2014-9-29 09:55 上传
方法二:
,后来在给特定的函数使用void delayUs(uint xdata Tus);就编译通过
只是在进中断服务函数里调用函数,经常运行失败。
大家还有什么办法减少RAM的方法
方法1:少用全局变量,多用局部变量
方法2:少使用不需要的函数
方法3: 使用合适的数据类型,能用bit就不用char,能用char就不用int。
方法4:其次,如果使用RAM,可以在变量声明的时候指定存储位置,如:
char data var[8]; // 变量声明在C51.RAM(0x00-0x80)地址,使用MOV指令,可直接寻址
char idata var[8]; // 变量声明在C51.RAM(0x80-0xFF)地址,使用MOV指令,间接寻址,会增加指令数
char xdata var[8]; // 变量声明在C51.XDATA地址,使用MOVX指令,会增加指令数.
keil C51有个覆盖分析,就是你说的这个事情,我当时开始学cm3时,想当然也以为也有这个覆盖分析。。。其实就是因为51内存太小,他的函数默认不可重入的
中断函数用using不是可以避免入栈操作呀。。。你的意思是指定using后它使用的内存就不会参与覆盖分析吗,我没有尝试过呢
一周热门 更多>