合泰單片機是硬件堆棧,8051是軟件堆棧,兩者是不一樣的
硬件堆棧是用硬件來進行堆棧操作的,它的層數是有限的,有的是四五層,有的是十多層
調用一次函數用一層,函數里面再調用一次其它函數就又用一層,這樣就用了兩層了(8051不需要在乎這個東西)
硬件堆棧就不一樣了,容易溢出
所以,合泰的C是不允許遞歸的,在中斷函數內盡量碼代碼,而不是通過函數來處理,能寫代碼就不調用函數(這個......跟C唱反調了)
盡可能的多調用幾個函數來處理,而不是調用的函數中又其它函數
比如:應該是這樣的:
display()
{
aa();
bb();
cc();
}
而不是:
display()
{
aa(); ------------- aa()函數里面包含了函數bb();和cc();
} 這樣使用的話就多用了幾層堆棧了
|