比较经典的错误,程序及问题我复制保存了,哪天要是当师傅,可以当个反面教材。
再次理了一个你程序流程,还有一个问题,if(key){ state++; switch{} ;}switch包含在if(key)中是另一个导致出错的问题。没有key,则State++,switch、timeCNT都不会被执行!!!
嵌套逻辑虽然有时也正常,且有些时候还必须这样嵌套,但不好控制。
但我一般喜欢顺序控制逻辑,较清晰。
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) {改变状态 }
你试试。另外switch中可以不要delay,delay可加在switch前,时间还有执行整个while(1)内语句、函数调用的时间,所以不用累加到10000、20000. |