这是基于51单片机的定时器中断服务程序,可以借鉴。
void timer0() interrupt 1 //定时器0中断服务程序
{
static unsigned int Cnt200us=0; //声明200微妙计数变量
static unsigned int Cnt500ms=0; //声明500毫妙计数变量
Cnt200us++; //每进入中断一次200微妙计数变量自+1
if(Cnt200us>=2500) //如果Cnt200us>=2500,0.5秒
{
Cnt200us=0; //Cnt200us计数变量清0
Cnt500ms++; //Cnt500ms计数变量自+1
Buzzer=~Buzzer; //蜂鸣器端口取反(间歇响)
LED=~LED; //LED端口取反(闪烁)
if(Cnt500ms>=40) //如果Cnt500ms>=40,20秒
{
Cnt200us=0; //Cnt200us计数清0
Cnt500ms=0; //Cnt500ms计数清0
Buzzer=1; //关闭蜂鸣器
LED=1; //关闭LED
ET0=0; //关闭定时器0中断
TR0=0; //关闭定时器
}
}
}
这是基于51单片机的定时器中断服务程序,可以借鉴。
void timer0() interrupt 1 //定时器0中断服务程序
{
static unsigned int Cnt200us=0; //声明200微妙计数变量
static unsigned int Cnt500ms=0; //声明500毫妙计数变量
Cnt200us++; //每进入中断一次200微妙计数变量自+1
if(Cnt200us>=2500) //如果Cnt200us>=2500,0.5秒
{
Cnt200us=0; //Cnt200us计数变量清0
Cnt500ms++; //Cnt500ms计数变量自+1
Buzzer=~Buzzer; //蜂鸣器端口取反(间歇响)
LED=~LED; //LED端口取反(闪烁)
if(Cnt500ms>=40) //如果Cnt500ms>=40,20秒
{
Cnt200us=0; //Cnt200us计数清0
Cnt500ms=0; //Cnt500ms计数清0
Buzzer=1; //关闭蜂鸣器
LED=1; //关闭LED
ET0=0; //关闭定时器0中断
TR0=0; //关闭定时器
}
}
}
举报