我写了一个程序,在主循环加入一部分代码,‘中断里的计数器就不计数了。
主循环加的代码如下:
k=cell_u_alram+cell_d_alram+pile_d_alram+pile_u_alram;
if((cnt!=cnt1)&&(k==0))
{ //j=cnt%4;
l=cnt>>4;
disp_yw(0xb3,0x12,0x08,0x10+l); //u
l=cnt&0x0f;
disp_yw(0xb3,0x13,0x00,0x10+l); //u
if(cnt==4) cnt=0;
switch(cnt)
{case 0:
{disp_temp();break; //显示温度
}
case 1:
{disp_ui(3); //显示电压电流
break;
}
case 2:
{disp_temp();break; //显示温度
}
case 3:
{disp_ui(4); //显示电压电流
break;
}
default:
break;
}
cnt1=cnt;
}
中断函数如下:
void timer0_int() interrupt 1
{
TR0=0; //定时器0停止计数
TF0=0;
TH0=0X3B; //重装初值
TL0=0XC0;
wdi=~wdi; //喂狗
count1++; //计数器自加
count2++;
count3++;
if(count1==100)
count1=0; //计数器1复位
//cnt++;
if(count1==0)
ranking++;
if(count2==25)
{count2=0; //计数器2复位
sound++;
}
if(count3==107)
count3=0;
if(count3==0)
cnt++;
if(sound==2) sound=0; //计数器3复位
//if(cnt==4) cnt=0; //计数器4复位
if(ranking==50) ranking=0; //计数器5复位
TR0=1; //定时器开始计数
}
cnt和ranking计到1就停止了。
这是怎么回事呀?请高手帮忙,谢谢! |