水电之家讯:我认为单片机堆栈溢出最重要的原因是我们编程序有问题,即在程序设计初期没有留出足够的空间供堆栈使用,堆栈一旦溢出程序一般会乱指,就是我们所说的程序跑分。一般我们不容许出现这个现象,因此我们在设计程序的时候首先要在内部RAM里开辟一段连续的地址当堆栈使用,且只能让它通过PUSH和POP指令进行访问,而且每次访问堆栈后注意别让堆栈溢出。
STC单片机堆栈溢出的解决方法
RAM模式用large,尽量用XRAM,减少函数嵌套层数,如果一个函数只被一个函数调用,就尽量合并下。
编译器会根据片内RAM消耗量自动确定SP指针,而且51也只能用片内RAM做堆栈。
KEIL C51的堆栈不需要你去设置的,编译器会把DATA ram剩余的空间都划分给栈,所以尽量减少对DATA的使用。水电之家为您提供最全面的管材,管件,水电,电线,电工,管材水电品牌的装修知识点和各种管材水电的导购与在线购买服务,拥有最便宜的管材水电价格和最优质的售后服务,每天都有秒杀的抢购活动哦!敬请登陆水电之家:http://shuidian.jc68.com/


















