No.52077 作者:guest 邮件:guest@guest.com ID:6 登陆:16560次 文章数:7648篇 最后登陆IP:219.68.9.43 最后登陆:2005/5/20 1:37:44 注册:2003/3/10 16:21:00 财富:35062 发帖时间:2004/4/6 8:58:51 发贴者IP:61.30.106.99 标题:guest:各位高手快進來看一下 摘要:No.52077各位高手快進來看一下 我采用AT89C52 用C51編寫一個控制系統軟件,經過KEIL C51編譯過後,實際運行中出現程序跑飛的現象,因為我的系統是逐步增加功能的方式進行調試,每增加一個功能就不斷反復驗證直到OK后,才加入下一功能,但發現後來隨程序不斷的增加,就出現一些怪現象,甚至CPU無法正常復位跑程序,因為程序從理論上是通過的,所以直接懷疑經KEIL C51編譯后出現自動編排的碓棧空間不足造成程序跑飛,分析產生的M51文件,發現很奇怪為什麼 STACK 放在idata 區的0x66,而且從直接跟在前面的data變量後面,所以只有26字節空間,采用軟件仿真有時可看到sp_max:0x7c,所以很容易造成STACK不足,請教各位KEIL C51高手,怎樣才能人為地將STACK放在idata區的ox20 請看下面M51文件的變量分配空間: * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 0016H UNIT ?DT?MAINLOOP 001EH 0002H *** GAP *** DATA 0020H 0006H BIT_ADDR ?BA?IRQ DATA 0026H ......