单片机中中断服务函数 有哪位大神能帮我解释一下下面这段程序什么意思,就算能让我清楚一点也成,谢谢了

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;
}
}
}

}

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
}
}
}

}追问

虽然不是太懂,不过谢谢大神了

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-04-25
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次后。停止点亮。退出循环,*/
}

c51 单片机编程中断问题,中断后不能继续返回main函数,哪位高手看一下...
void int1_srv() interrupt 2\/\/INT1中断服务函数,中断向量标号2 { my_delay_10ms(1);\/\/延时消抖 KEY_BIT = 1;\/\/读MCS51的IO口之前要先对其置1 if(KEY_BIT == 0)\/\/按键仍然是按下状态 { \/\/while(KEY_BIT == 0);\/\/等待按键抬起 这部分就不用了。使用边沿触发,不必在等待按键抬起...

单片机中的Timer0Interrupt(void) interrupt 1下的程序是用来做什么的...
那是中断服务程序,看你贴出来那个函数名称貌似是定时器0的中断,定时器你装完初值,开定时器后,定时器就开始计时,定时器有四种工作模式,比如工作方式0,16位定时器,可以定时65536us,当从初值加到65536后,产生溢出,定时器向cpu申请中断,cpu转去执行中断服务程序,执行完后回到main函数,51单片机共...

2.单片机基础知识讲解--中断服务函数
中断是51单片机中实现实时响应的重要机制之一,能够使单片机在执行某个任务时,暂停当前程序执行,转而去处理更高优先级的任务,直至任务完成再返回。中断机制有效提高了单片机的实时性和响应速度。在51单片机中,中断通过设置中断向量表实现。中断向量表记录所有中断服务程序的入口地址,中断发生时,单片机根据...

单片机中,有一个定时中断函数,在中断里有很长的循环程序,这里问题来了...
既然采用中断的方式,就是为了充分利用单片机的时间。像你说的这个问题一种解决的办法是延长中断的时间,中断的时间要长于执行中断程序的时间,因每次中断的执行任务需要30ms,而中断时间是10ms,这根本就不能完成中断的任务吗,当然了,中断时,没有从中断返回,就不会再响应同一个中断的。因此,从中断...

能不能解释一下这些程序是什么意思
首先看前几行:ORG 0000HLJMP STARTORG 000BHLJMP T_0ORG 0030HSTART:从它们的地址可以看出,这可能是 51 单片机的汇编,前几行的意思分别为:程序空间从 0000 位置起 跳转到 START 位置 程序空间从 000B 位置起 跳转到 T_0 处 程序空间从 0030 位置起 START (标记)具体来说,0000(指的是...

哪位高手能给大概讲解一下51单片机“中断”的概念!先谢谢了!
举个例子吧:单片机好比一个人,CPU是大脑,人体感官相当于传感器或者中断口;你在做你的事情,突然有只虫咬了你一下,你条件反射的就会停下手中的事情去处理伤口;这个过程就是中断,你处理完了又回到你要做的事情。中断一样,中断口发中断信号给CPU,CPU接到信号会停止目前程序,进入中断程序,中断...

各位单片机高手,哪位帮我分析一下下面这个程序,问题出...
回答:首先给你解释一下“<<”位移符的作用: 因为你的P1=0xfe,二进制数据就是11111110,左移一位之后为11111100,0往左移了一位,但是最低位系统自动以0补齐,而0x7f的二进制数据位01111111,所以if语句是永远进入不了的。 当然,针对此问题,C51给出了一个解决方案: 使用_crol_()函数可解决此问题...

单片机定时计数的问题,下面这段程序是什么意思啊,是8052,最好能逐行解...
void main(){ init(); 初始化函数 while(1) 大循环 { display(seconds); 让数码管开始显示 计秒 } } 这是一个计时器程序 没有小时 是计秒 然后还有分钟 我也是初学者 有什么问题我们可以再讨论 我的邮箱snowleopard331@163.com 有问题发邮件给我一起讨论 ...

单片机里串行中断服务函数作用是什么呢
楼主的问题我觉得应该出在这里:该中断函数是将接收的数据加一然后回显,方法简单明了,不错。但是进入了死循环。void serial(void) interrupt 4 using 3{uchar i;if(RI){i=SBUF;SBUF=i+1;}\/\/中断内再出中断,打乱了中断服务程序的返回。if(TI){TI=0;}}修改的如下,希望楼主看完后明白这个是...

单片机里串行中断服务函数作用是什么呢?
你的中断服务函数作用是:串口设备每接收一个字节数据(8位)便产生一次中断,并检测是否收到的是字符【,不是则放弃数据,是则保存到数组 jsbuf 里去,然后把随后接收到的字节数据也一一保存到这个数组去,直到接收到字符 】为止,同样保存,并设置标记 rflag;一句话,就是要从接收的数据中,提取 ...

相似回答