51系列單片機程序跑飛的經(jīng)驗總結(jié)
一、 程序運行跑飛現(xiàn)象:
單片機中的程序計數(shù)器(PC)的值出乎我們所需要的,發(fā)生了異常的偏移,脫離了原本設(shè)定好的程序要執(zhí)行的位置,進入原定程序以外的區(qū)域,例如:程序的空白區(qū)、程序以外的空間或者是某種死循環(huán)中。
二、 跑飛的影響:
使指令的地址碼和操作碼發(fā)生改變,而PC把操作碼當作指令來執(zhí)行,操作碼改變就代表著將執(zhí)行錯誤的指令;或者PC的值指向一個不符合邏輯關(guān)系的指令或非程序的區(qū)域,會造成運行結(jié)果進入死循環(huán),即常說的“死機”。
三、 程序跑飛的原因:
1. 意外中斷。打開了某個中斷,但是沒有響應和清除中斷標志,導致程序一直進入中斷,造成死機假象。
2. 中斷變量處理不妥。
3. 地址溢出。
4. 無條件的死循環(huán)。
5. 看門狗沒有關(guān)閉。
6. 堆棧溢出。
編輯:admin 最后修改時間:2018-05-22