下面这个程序,按下按键,蜂鸣器响一下,帮忙分析一下中断里面那些语句的作用?

u8 bzon;
u8 cpbzon;
u8 bzunm;
u8 bzoff;
void Beefun(u8 param,u8 len)
{
if(param)
{
bzon=len;
cpbzon=bzon;
bzunm=param-1;
}
}

void main()
{
while(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
Beefun(1,250);
}
}
}
}

void T0_time() interrupt 1
{
TF0=0; //清除中断标志
TR0=0; //关中断

if(cpbzon)
{
cpbzon--;
BEEP = 0;
if(cpbzon == 0)
bzoff = 100;//蜂鸣器间隔时间设置
}

if(bzoff && (cpbzon==0))
{
bzoff--;
BEEP = 1;
if(bznum && (bzoff == 0))
{
bznum--;
cpbzon = bzon;
}
}
TH0=0xf8; //重装初始值
TL0=0x2f;
TR0=1; //开中断
}

首先,程序是不完整,如果这就是全部,无法实现功能;
假设这是一部分,我脑补完这一部分的程序,大概功能是想按键之后,蜂鸣器响0.5s就停止,中断后面的if(bzoff&&(cpbzon==0))就显得多余,关蜂鸣器直接在if(cpbzon)后加个else(BEEP=1;)就行了;
还有一种情况就是按下之后隔0.5s后蜂鸣器响0.2s,但是这种情况就缺少关蜂鸣器的代码了;
温馨提示:答案为网友推荐,仅供参考
相似回答