请大家帮我分析一下下面这段程序:
//*********定时器溢出中断模块******************//
#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语句就能正常执行了,真不知怎么办,请大家帮忙指点一下。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |