合泰单片机是硬件堆栈,8051是软件堆栈,两者是不一样的 硬件堆栈是用硬件来进行堆栈操作的,它的层数是有限的,有的是四五层,有的是十多层 调用一次函数用一层,函数里面再调用一次其它函数就又用一层,这样就用了两层了(8051不需要在乎这个东西) 硬件堆栈就不一样了,容易溢出 所以,合泰的C是不允许递归的,在中断函数内尽量码代码,而不是通过函数来处理,能写代码就不调用函数(这个......跟C唱反调了) 尽可能的多调用几个函数来处理,而不是调用的函数中又其它函数 比如:应该是这样的: display() { aa(); bb(); cc(); } 而不是: display() { aa(); ------------- aa()函数里面包含了函数bb();和cc(); } 这样使用的话就多用了几层堆栈了 |