内存不足、栈溢出

使用51单片机开发会容易出现DATA区内存不足的情况,有时体现为某SEGMENT OVERFLOW。这个时候可以充分利用128字节的片外RAM,在定义较大的数据类型时在最前面加上idata,在后面的程序中直接调用就可以了。

另外经常会出现栈溢出的问题。如果在主函数中单独调用子函数不会出错,而在另一个函数,例如中断中调用就会出问题的话,这个时候编译会通过,但是仿真的时候就会看到出错了。这种情况多半是由于函数多重调用导致的栈溢出,解决方法是简化子函数的调用方式,或者直接地,把几个子函数写成一个子函数,然后在这个函数中使用goto语句,这样的话工作量会很大,但是成效应该是最好的。

原文地址:https://www.cnblogs.com/viaduct/p/5883685.html