单片机中中断服务函数 有哪位大神能帮我解释一下下面这段程序什么意思,就算能让我清楚一点也成,谢谢了
voidtime1_int()interrupt1//中断服务函数,1表示定时器0溢出中断{uccount,count1;TL0=0xb0;TH0=0x3c;if(fla...
void time1_int() interrupt 1//中断服务函数,1表示定时器0溢出中断
{
uc count,count1;
TL0=0xb0;
TH0=0x3c;
if(flag==1)
{
count++;
if(count==10)
{
buzz=0;
led=0;
}
if(count==20)
{
count=0;
buzz=1;
led=1;
}
}
if(yanshi==1)
{
count1++;
if(count1==10)
{
led=0;
}
if(count1==20)
{
count1=0;
led=1;
sec++;
if(sec==30)
{
sec=0;
flag3=1;
yanshi=0;
on_off=1;
}
}
}
} 展开
{
uc count,count1;
TL0=0xb0;
TH0=0x3c;
if(flag==1)
{
count++;
if(count==10)
{
buzz=0;
led=0;
}
if(count==20)
{
count=0;
buzz=1;
led=1;
}
}
if(yanshi==1)
{
count1++;
if(count1==10)
{
led=0;
}
if(count1==20)
{
count1=0;
led=1;
sec++;
if(sec==30)
{
sec=0;
flag3=1;
yanshi=0;
on_off=1;
}
}
}
} 展开
展开全部
void time1_int() interrupt 1//中断服务函数,1表示定时器0溢出中断
{
uc count,count1;
TL0=0xb0; //重赋初值,50毫秒中断值
TH0=0x3c;
if(flag==1) //标志位1则执行内部程序
{
count++; // 计数变量count加1
if(count==10) // 10次计数满
{
buzz=0; // 蜂鸣器开启
led=0; //LED灯点亮
}
if(count==20) //20次计数满
{
count=0; //计数变量清0
buzz=1; //关闭蜂鸣器
led=1; //LED灯灭
}
}
if(yanshi==1) //延时标志为1则执行内部程序
{
count1++; //计数变量count1加1
if(count1==10) //满10计数
{
led=0; //LED灯点亮
}
if(count1==20) //20次计数满
{
count1=0; //计数变量清0
led=1; //LED灯灭
sec++; //秒变量加1
if(sec==30) //30秒到
{
sec=0; //秒变量清0
flag3=1; //标志flag3置1
yanshi=0; //yanshi置0
on_off=1; //on_off置1
}
}
}
}
{
uc count,count1;
TL0=0xb0; //重赋初值,50毫秒中断值
TH0=0x3c;
if(flag==1) //标志位1则执行内部程序
{
count++; // 计数变量count加1
if(count==10) // 10次计数满
{
buzz=0; // 蜂鸣器开启
led=0; //LED灯点亮
}
if(count==20) //20次计数满
{
count=0; //计数变量清0
buzz=1; //关闭蜂鸣器
led=1; //LED灯灭
}
}
if(yanshi==1) //延时标志为1则执行内部程序
{
count1++; //计数变量count1加1
if(count1==10) //满10计数
{
led=0; //LED灯点亮
}
if(count1==20) //20次计数满
{
count1=0; //计数变量清0
led=1; //LED灯灭
sec++; //秒变量加1
if(sec==30) //30秒到
{
sec=0; //秒变量清0
flag3=1; //标志flag3置1
yanshi=0; //yanshi置0
on_off=1; //on_off置1
}
}
}
}
追问
虽然不是太懂,不过谢谢大神了
展开全部
void time1_int() interrupt 1//中断服务函数,1表示定时器0溢出中断
/* 上面这里有问题格式问题 */
{
uc count,count1; //定义两个 UC类型。我也不知道uc是什么类型。没看到定义
TL0=0xb0; // TL0 不知道哪里定义的,从赋值来看因该是单片机接口
TH0=0x3c; // 同上
if(flag==1) //如果标志位等于1
{
count++;
if(count==10)
{
buzz=0;
led=0;
}
if(count==20)
{
count=0;
buzz=1;
led=1;
}
}
/*上面这段应该在循环函数里面,count做自+1运算。当count=0的时候关闭LED灯,当count=20的时候开启LED灯。buzz应该是做LED灯的时候一起工作,关闭的时候一起关闭*/
if(yanshi==1)
{
count1++;
if(count1==10)
{
led=0;
}
if(count1==20)
{
count1=0;
led=1;
sec++;
if(sec==30)
{
sec=0;
flag3=1;
yanshi=0;
on_off=1;
}
}
}
/* 和上面的差不多应该放在循环里面。count1=10的时候,LED灯灭。count1=20的时候,LED灯亮起来。再用sec做一次++,应该用于计算led循环点亮的次数,到达30次后。停止点亮。退出循环,*/
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询