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