问题遇到的现象和发生背景
蓝桥杯单片机,写一个按键打开继电器的程序,但在定时器2打开的情况下按键没反应,把定时器这一行注释掉后按键又能正常工作了?
以下是代码:
void main()
{
EA=1;
ALL_init(); //关闭蜂鸣器继电器等
Timer2Init(); //打开定时器2,定时器2用作数码管显示
// Timer0Init();
while(1)
{
// AD=AD_Read(0x01);
key_scan(); //按键扫描
}
}
void key_scan(void)
{
if(P30==0) //s7 出水 flag=1;
{
delay_ms(5);
if(P30==0)
{
while(!P30)
{
flag=1;
Hc_138(buzz);
P0=0x10;
// TR0 = 1; //定时器0开始计时
}
}
}
else if(P31==0) //s6 停止 flag=2;
{
delay_ms(5);
if(P31==0)
{
while(!P31)
{
flag=2;
Hc_138(buzz);
P0=0x00;
// TR0=0; //关闭定时器0
}
}
}
else flag=0;
}
void Timer2Init(void) //4毫秒@12.000MHz
{
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0x80; //设置定时初值
T2H = 0x44; //设置定时初值
AUXR |= 0x10; //定时器2开始计时
IE2|=0x04;
}
void Timer2() interrupt 12
{
if(flag==0)
{
shumaguan_DS1();
}
else if(flag==1)
{
shumaguan_DS2_ml();
}
else if(flag==2)
{
shumaguan_DS2_yuan();
}
}