|
比較經(jīng)典的錯(cuò)誤,程序及問(wèn)題我復(fù)制保存了,哪天要是當(dāng)師傅,可以當(dāng)個(gè)反面教材。
再次理了一個(gè)你程序流程,還有一個(gè)問(wèn)題,if(key){ state++; switch{} ;}switch包含在if(key)中是另一個(gè)導(dǎo)致出錯(cuò)的問(wèn)題。沒(méi)有key,則State++,switch、timeCNT都不會(huì)被執(zhí)行。!
嵌套邏輯雖然有時(shí)也正常,且有些時(shí)候還必須這樣嵌套,但不好控制。
但我一般喜歡順序控制邏輯,較清晰。
if(a>5){
if(a>8){
if(a>10){};
};
}
另一種我喜歡的:
if(a>5){};
if(a>8){};
if(a>10){};
建議:
if(key) ){....; state++; }
delay_ms(1);
switch () { timeCNT++; }
if(timeCNT >4000) {改變狀態(tài) }
你試試。另外switch中可以不要delay,delay可加在switch前,時(shí)間還有執(zhí)行整個(gè)while(1)內(nèi)語(yǔ)句、函數(shù)調(diào)用的時(shí)間,所以不用累加到10000、20000. |
|