减少RAM使用量(实时更新)17楼亮点

2020-01-20 19:11发布

本帖最后由 霸气侧漏 于 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指令,会增加指令数.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
36条回答
霸气侧漏
1楼-- · 2020-01-24 09:35
jswd0810 发表于 2015-2-14 08:30
可能是通讯超时问题,你可以把通讯的波特率降低试试看

通讯超时?串口接受数据后,20ms内不在收到数据就处理数据。应该不是通讯超时
jswd0810
2楼-- · 2020-01-24 12:44
你可以试试再说,修改波特率,这个也就2分钟的事;
还有一种可能是否你在其他地方修改影响了通讯的东西
fengban
3楼-- · 2020-01-24 13:54
有些表,常量之类的就扔flash或eeprom里
霸气侧漏
4楼-- · 2020-01-24 18:59
 精彩回答 2  元偷偷看……
霸气侧漏
5楼-- · 2020-01-24 23:12
jswd0810 发表于 2015-2-14 09:42
你可以试试再说,修改波特率,这个也就2分钟的事;
还有一种可能是否你在其他地方修改影响了通讯的东西 ...

是这样的,串口接受中断里面定义了一个数组unsigned char  tt[30];,来接受数据,然而在主函数里面,用串口发tt[];里的数据发送不了,直接发送0x44  0xff等可以发送,比较奇怪
jswd0810
6楼-- · 2020-01-25 04:08
霸气侧漏 发表于 2015-2-14 10:31
其他地方没有设计这个串口的东西,与串口不沾边。波特率改小也没用

单片机是主机还是从机?

一周热门 更多>