登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

为何用8954时所用RAM大于234就一直复位无法启动

作者:pilibeibei 栏目:单片机
为何用8954时所用RAM大于234就一直复位无法启动
我用89C54,当所用RAM大小为236个时,怎么也启动不起来的,一直复位,删掉两个变量就可以。可是54应该不至于这么小的RAM的,我想是不是我编程序时有什么问题,烦请各位大侠帮小弟出出招,推断一下是什么原因,如何解决!不甚感激!
系统是有看门狗的,不过我想应该不是那的问题!

2楼: >>参与讨论
2shift
是不是堆栈不够用的了
你说的236个,包括通用寄存器组吗?如果不包括,肯定是不够用的了

3楼: >>参与讨论
xymxym
8954应该也只有256的RAM吧!
有可能是堆栈溢出,也有可能是IDATA区的RAM搞的鬼,因为在C启动时,只对DATA区的RAM进行清零,IDATA的RAM是随机的,如果程序一开始你就对IDATA的RAM有操作但又没有在定义时清零就出现了不正常的问题,当然这种可能性不高,最有可能是堆栈的问题。建议将速度要求不高的变量定义成IDATA区,因为堆栈使用的是DATA区的RAM。

4楼: >>参与讨论
pilibeibei
我编程时是常用变量的才用DATA的
首先谢谢两位的建议。236个是KEIL编译出来的显示使用data大小。
我的变量是常用的才用DATA,一般都用IDATA,不过又改了几个,还是一样复位!
而且我看了一下堆栈,中断时确实是溢出了,我再修改一下看看!

5楼: >>参与讨论
pilibeibei
RAM用量太大了,堆栈没空间了!
 
6楼: >>参与讨论
zhusonglinw
把堆栈设从08H 开始,再不行只能减少变量了
 
7楼: >>参与讨论
hotpower
应该还有768个
SST有1KRAM

参与讨论
昵称:
讨论内容:
 
 
相关帖子
请问:有多少人知道51如何在C下使用位操作?
求助:一个很久都没有弄清的概念,谢谢!
C51有什么理由这样编译?
紧急请教——怪问题
请帮我选择低功耗51芯片?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号