單片機堆棧溢出怎么解決?
我認為單片機堆棧溢出最重要的原因是我們編程序有問題,即在程序設計初期沒有留出足夠的空間供堆棧使用,堆棧一旦溢出程序一般會亂指,就是我們所說的程序跑分。一般我們不容許出現(xiàn)這個現(xiàn)象,因此我們在設計程序的時候首先要在內部RAM里開辟一段連續(xù)的地址當堆棧使用,且只能讓它通過PUSH和POP指令進行訪問,而且每次訪問堆棧后注意別讓堆棧溢出。STC單片機堆棧溢出的解決方法
RAM模式用large,盡量用XRAM,減少函數(shù)嵌套層數(shù),如果一個函數(shù)只被一個函數(shù)調用,就盡量合并下。
編譯器會根據(jù)片內RAM消耗量自動確定SP指針,而且51也只能用片內RAM做堆棧。
KEIL C51的堆棧不需要你去設置的,編譯器會把DATA ram剩余的空間都劃分給棧,所以盡量減少對DATA的使用。
編輯:admin 最后修改時間:2018-05-08