请大家帮我分析一下下面这段程序: //*********定时器溢出中断模块******************// #pragma CODE_SEG NON_BANKED #pragma TRAP_PROC void interrupt Timer (void){ TFLG1_C7F=1; //通道7发生中断 waittime++; if((0<waittime)&&(waittime<=1800)){ e=0; PORTB=0xfe;} //以1A充电30min else if((1800<waittime)&&(waittime<=9000)){ e=1; PORTB=0xfd;} //再以700mA充两个小时 else if((9000<waittime)&&(waittime<14400)){ e=2; PORTB=0xfc;} else{ //四小时后停止充电 PTS=0X00; PWMDTY3=0;}
while(!ATD0STAT1_CCF2); //等待转换结束 AD_GetValue(); //读取电流转换结果 u1=ADValue0*(5.0/255.0); I=100.0/98.0*u1-2.0612244898; w1=I*100; m1=w1/100; h=w1%100; m2=h/10; m3=h%10; //用数码管显示电流值 } 每次运行时,无论waittime等于多少,它只执行第一个if语句,但若去掉while(!ATD0STAT1_CCF2)下面的语句,if语句就能正常执行了,真不知怎么办,请大家帮忙指点一下。 |