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