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