找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2616|回复: 9
打印 上一主题 下一主题
收起左侧

如何改写这个单片机中断程序,灯亮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;*/
    }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

9#
ID:861694 发表于 2022-10-19 14:44 | 只看该作者
angmall 发表于 2020-6-4 06:22
中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如 ...

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

使用道具 举报

8#
ID:707421 发表于 2020-6-5 16:21 | 只看该作者

谢谢兄弟,我自己编写的程序,实在是写不出来了 ,学到了不少知识,烦请兄弟帮我解决一下我新帖子的问题。
回复

使用道具 举报

7#
ID:707421 发表于 2020-6-5 16:19 | 只看该作者
angmall 发表于 2020-6-4 06:22
中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如 ...

谢谢兄弟,我学到不少知识,能不能看一下我发的帖子,帮我解决一下问题。
回复

使用道具 举报

6#
ID:707421 发表于 2020-6-5 16:08 | 只看该作者
angmall 发表于 2020-6-4 06:22
中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如 ...

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

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

4I8VGM2VUIL`XGCEUU3@$8F.png

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

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

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

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

使用道具 举报

5#
ID:707421 发表于 2020-6-4 21:00 | 只看该作者

非常感谢兄弟。
回复

使用道具 举报

地板
ID:332444 发表于 2020-6-4 11:06 | 只看该作者

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

无标题.png
回复

使用道具 举报

板凳
ID:332444 发表于 2020-6-4 08:36 | 只看该作者
可参我这个回复的例子中的中断使用,计时和其它操作莫放在中断里面。https://ask.csdn.net/questions/1078609
回复

使用道具 举报

沙发
ID:155507 发表于 2020-6-4 06:22 | 只看该作者
中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如果中断一次有很多任务需要执行完全,可以在中断子程序中设置一个标志位,在主程序中查这个标志位,当标志为1时,就在主程序中完成这些任务,这样就不会影响其它中断源的中断,也不会使中断产生混乱。
回复

使用道具 举报

楼主
ID:768837 发表于 2020-6-3 20:45 | 只看该作者
用for(i=1;i<=5;i++)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表