我写了一个在5s时间里按键次数检测程序,我在线调试的时候还是可以的,但是一旦烧到单片机中就不行了,好象程序就死在那了,如果让RA2处于低电平5s左右时,这时还是可以返回键值1,怎么会这样,请高手指点一下,下面是我的程序:
Time5s_Over是5s时间的标志;
#define AlarmTime RA2
unsigned char KeyScan(void) {Keytime1=0; while(Time5s_Over==0){ LOOPK1:if(AlarmTime==1){ while(AlarmTime==1){ if(Time5s_Over==1) {Time5s_Over=0;goto RET;}asm("CLTWDT");}} if(AlarmTime==0){ DELAY(10); if(AlarmTime==0){Keytime1++; LOOPK0: while(AlarmTime==0){asm("CLRWDT"); if(Time5s_Over==1){Time5s_Over=0;goto RET;}} f(AlarmTime==1){ DELAY(10); //延时2ms if(AlarmTime==1) continue; else goto LOOPK0;} else goto LOOPK1;}}} RET: Time5s_Over=0;return(Keytime1);} |