标题: 如何改写这个单片机中断程序,灯亮5分钟,灭1分钟,最多循环5次。谢谢大神 求帮助 [打印本页]

作者: 落魄书生123456    时间: 2020-6-3 09:07
标题: 如何改写这个单片机中断程序,灯亮5分钟,灭1分钟,最多循环5次。谢谢大神 求帮助
void Timer0_Service() interrupt 1
{
   static uint count = 0;  
   static uchar flag = 0;
         static uchar flag2 = 0;
         unsigned int i,j;
   //count = 0;
  TR0 = 0;   
   TH0 = 0xec;
   TL0 = 0x78;  
  TR0 = 1 ;   
   count++;
        LED1=1;
        LED2=0;        
        //bell=1;
        if( count ==30000)
   {
      bell =0;
     count = 0;
                 count++;
                 LED1=0;
                 LED2=0;
        /* TH0 = 0xec;
    TL0 = 0x78; */
                 flag++;
                /*for(i=0;i<11000;i++)
                 {for(j=0;j<1100;j++);}
                 i=0;j=0;*/
   }         
  if( flag ==5)
   {
     bell=1;
                // flag = 0;
      //TR0 = 0;   
               
                  /*TH0 = 0xec;
      TL0 = 0x78; */
                  LED2=0;
                   LED1=1;
                  //count=0;
                 /*        for(i=0;i<11000;i++)
                 {for(j=0;j<11000;j++);}
                 i=0;j=0;*/
   }
         if( flag ==5)
                {
      flag = 0;
      //TR0 = 0;
                        LED2=0;
                   LED1=0;
                        TH0 = 0xec;
      TL0 = 0x78;
                 count=0;
                 /*        for(i=0;i<11000;i++)
                 {for(j=0;j<11000;j++);}
                 i=0;j=0;*/
    }
}


作者: lihuanpei    时间: 2020-6-3 20:45
用for(i=1;i<=5;i++)
作者: angmall    时间: 2020-6-4 06:22
中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如果中断一次有很多任务需要执行完全,可以在中断子程序中设置一个标志位,在主程序中查这个标志位,当标志为1时,就在主程序中完成这些任务,这样就不会影响其它中断源的中断,也不会使中断产生混乱。

作者: xianfajushi    时间: 2020-6-4 08:36
可参我这个回复的例子中的中断使用,计时和其它操作莫放在中断里面。https://ask.csdn.net/questions/1078609
作者: xianfajushi    时间: 2020-6-4 11:06

无标题.png (48.07 KB, 下载次数: 93)

无标题.png

作者: 落魄书生123456    时间: 2020-6-4 21:00
xianfajushi 发表于 2020-6-4 11:06

非常感谢兄弟。
作者: 落魄书生123456    时间: 2020-6-5 16:08
angmall 发表于 2020-6-4 06:22
中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如 ...

我想实现 测量温度大于设置温度,执行中断,LED1亮,LED2灭,最多执行5次,LED1,LED2都不亮。关闭中断。还能继续测量温度。为啥实现不了。

4I8VGM2VUIL`XGCEUU3@$8F.png (11.92 KB, 下载次数: 112)

4I8VGM2VUIL`XGCEUU3@$8F.png

7XRWNOYFTK$Y)OZ}RZ%M$T2.png (16.2 KB, 下载次数: 59)

7XRWNOYFTK$Y)OZ}RZ%M$T2.png

K%6K7P8GCW8I$}~00E[E3KF.png (26.6 KB, 下载次数: 47)

K%6K7P8GCW8I$}~00E[E3KF.png

作者: 落魄书生123456    时间: 2020-6-5 16:19
angmall 发表于 2020-6-4 06:22
中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如 ...

谢谢兄弟,我学到不少知识,能不能看一下我发的帖子,帮我解决一下问题。
作者: 落魄书生123456    时间: 2020-6-5 16:21
落魄书生123456 发表于 2020-6-4 21:00
非常感谢兄弟。

谢谢兄弟,我自己编写的程序,实在是写不出来了 ,学到了不少知识,烦请兄弟帮我解决一下我新帖子的问题。
作者: 戡拤    时间: 2022-10-19 14:44
angmall 发表于 2020-6-4 06:22
中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如 ...

请问可以将定时器里关于PWM程序放在主程序中吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1