|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
为何用8954时所用RAM大于234就一直复位无法启动 |
作者:pilibeibei 栏目:单片机 |
我用89C54,当所用RAM大小为236个时,怎么也启动不起来的,一直复位,删掉两个变量就可以。可是54应该不至于这么小的RAM的,我想是不是我编程序时有什么问题,烦请各位大侠帮小弟出出招,推断一下是什么原因,如何解决!不甚感激! 系统是有看门狗的,不过我想应该不是那的问题! |
2楼: | >>参与讨论 |
作者: 2shift 于 2006/3/3 9:32:00 发布:
是不是堆栈不够用的了 你说的236个,包括通用寄存器组吗?如果不包括,肯定是不够用的了 |
3楼: | >>参与讨论 |
作者: xymxym 于 2006/3/3 9:35:00 发布:
8954应该也只有256的RAM吧! 有可能是堆栈溢出,也有可能是IDATA区的RAM搞的鬼,因为在C启动时,只对DATA区的RAM进行清零,IDATA的RAM是随机的,如果程序一开始你就对IDATA的RAM有操作但又没有在定义时清零就出现了不正常的问题,当然这种可能性不高,最有可能是堆栈的问题。建议将速度要求不高的变量定义成IDATA区,因为堆栈使用的是DATA区的RAM。 |
4楼: | >>参与讨论 |
作者: pilibeibei 于 2006/3/3 10:03:00 发布:
我编程时是常用变量的才用DATA的 首先谢谢两位的建议。236个是KEIL编译出来的显示使用data大小。 我的变量是常用的才用DATA,一般都用IDATA,不过又改了几个,还是一样复位! 而且我看了一下堆栈,中断时确实是溢出了,我再修改一下看看! |
5楼: | >>参与讨论 |
作者: pilibeibei 于 2006/3/3 15:58:00 发布:
RAM用量太大了,堆栈没空间了! |
6楼: | >>参与讨论 |
作者: zhusonglinw 于 2006/3/5 19:45:00 发布:
把堆栈设从08H 开始,再不行只能减少变量了 |
7楼: | >>参与讨论 |
作者: hotpower 于 2006/3/5 19:50:00 发布:
应该还有768个 SST有1KRAM |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |