AT89S52muc用keil2 c语言写,但程序运行时出现堆栈溢出怎么解决

来源:百度知道 编辑:UC知道 时间:2024/06/30 13:32:58
AT89S52muc用keil2 c语言写,
但程序运行时出现堆栈溢出应该怎么解决??
先谢谢你的回答

但是你说的“如果用中断的话..不要用using 0,1,2,3这种.. ”
是什么意思是把比如“using 0”这样的语句去掉吗。
我用中断了,一个是t0,一个串行接收。
方便的话留下你的QQ

如果你没有手动初始化过堆栈指针的话.
那么就是你用的数据太多了.大于52拥有的256字节要求

如果不想换单片机的话.
那么少用一些全局变量,减少调用函数的层次
申请指针变量的时候..少用通用指针.
如果指向是数据区的话.一般一个指针变量可以减少2个字节

如果用中断的话..不要用using 0,1,2,3这种..
降低堆栈的使用量..
如果还不行..
直接换单片机了...数据区不够那是搞不定问题的

堆栈溢出的解决办法是扩展数据存储器,并将堆栈指针定位到扩展的外部数据存储器。
要多大的堆栈区,扩展多大的外部数据存储器,2k不够,扩展8k,8k不够,扩展16k。

为什么一定要qq呢?
百度hi不同样可以聊吗?