|
|
你這個程序中就是為了等待中斷產(chǎn)生,防止程序跑飛
單片機(jī)中使用while(1),大部分還是為了防止程序跑飛,因為很多時候執(zhí)行完某段程序后單片機(jī)的程序指針PC(就是程序指針)并不會停止,仍然會繼續(xù)從ROM中讀取指令并執(zhí)行,這樣一來可能會出現(xiàn)程序跑飛的情況,進(jìn)而出現(xiàn)不確定的結(jié)果,我們加個while(1)就能讓程序在執(zhí)行完后在原地循環(huán),相當(dāng)于停在原地,防止跑飛。
原則上來講,如果程序中沒有加結(jié)尾的話,程序計數(shù)器會繼續(xù)累加,從而執(zhí)行正常程序后面的ROM空間里面的指令,不過一般這個指令都是0XFF,這就要看這條指令的含義了,如果是空的話就會一直執(zhí)行到最后,直到程序計數(shù)器溢出,只是不知道程序計數(shù)器發(fā)生溢出是一個什么狀態(tài),有可能回到復(fù)位狀態(tài)值,也有可能直接就讓單片機(jī)死在這里不工作,這個就要看單片機(jī)的具體設(shè)計了。
在主程序里應(yīng)當(dāng)有
while(1)
{
..;
}
否則單片機(jī)的程序會繼續(xù)按地址運(yùn)行下去,到0ffffh后-》00000h。
如果不加while(1)語句,單片機(jī)依然正常運(yùn)行,就是后面的地址里恰好有什么東西使得程序形成死循環(huán),沒有飛跑,那也是湊巧。 |
評分
-
查看全部評分
|