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