独闷闷网

 找回密码
 立即注册
搜索
查看: 946|回复: 0
收起左侧

[原创] STC15W104的RAM是128,实际用到108就不可以了,为什么,有什么方法解决?已解答。

[复制链接]
发表于 2015-6-4 14:54:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
海-深圳:
大家早上好,有个问题请教一下:
我用的是STC15W104 这款单片机
存储空间4K,SRAM128byte,
当keil生成data超过108时,下载到单片机工作不正常,减小变量使data小于108下载到单片机正常,请问有没有一些方法满足变量比较多的情况?
1.png
坚鸿-深圳:
这种怪异情况跟编译器有关,我感觉keil本身是不完美的,128字节的ram能用到105也可以接受了。

海-深圳:
是的,128byte RAM用到105是可以了,但是还有部分程序没完成,要增加变量才行。在网上找了资料说是将不常用变量定义为xdata、标志性变量定义为bit,memory Model设置为large模式等等,尝试修改,结果还是不理想。
2.png

丁远:
我一般用51时候,全局变量都是pdata。

海-深圳:
现在暂时还没有用pdata,而是用的是bit位定义的标志位。如下:
1、data为105,下载到MCU后正常。
31.jpg

2、只改一个bit位,如红色标记,data=104.1,下载进去不正常,可对比上图:
32.jpg

3、为了验证,先删除程序中的其他两个unsigned char变量,降低data,并继续用bit位,下载进去正常,如下图:
33.jpg

4、继续将标志位 用bit替换原来的unsigned char,降低data,测试正常。
34.jpg

结论:以下结论不一定完全正确,可以大家一起讨论。
1、这款单片机SRAM为128,实际data用到108以上就不能增加了,可能多余的空间用到堆栈什么的上了吧。
2、通过上述测试,发现最好要留有足够的data空间才保险,比如用到data为104.1也不行。
3、重点是如何降低data使用率,针对51,一些标志位,用bit替换unsigned char对节约data空间是有效的,code大小也在减小。


乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2019-9-15 20:22 , Processed in 0.238523 second(s), 21 queries .

快速回复 返回顶部 返回列表