找回密码
 立即注册

QQ登录

只需一步,快速开始

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

最近在自学并尝试制作一个闹钟 发现单片机定时器t0和t1无法同时运行

[复制链接]
跳转到指定楼层
楼主
ID:627013 发表于 2019-10-20 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sbit P00=P0^0;
void time0s()
{
TMOD|=0X01;
TH0=0X3c;
TL0=0Xb0;
ET0=1;
TR0=1;  
}
void time1sON()
{
    TMOD|=0X10;
TH1=0X3c;
TL1=0Xb0;
ET1=1;
TR1=1;  
}
void Time0() interrupt 1
{
static ui i=0;
TH0=0X3C;
TL0=0Xb0;
i++;
if(i==20)
{
  i=0;
  second1++;
  if(second1==60)
       {
        second1=0;
  minute1++;
       }
     if(minute1==60)
    {
     minute1=0;
  hour1++;
    }
     if(hour1==24)
    {
     hour1=0;
    }
}
}
void Time1() interrupt 3
{
static ui i=0,r=0;
TH1=0X3C;
TL1=0Xb0;
if(i==20)
{
  r++;
  if(r==60)
   {
    if(minute1==minute2&&hour1==hour2)//小时和分钟相同时闹钟响起
    {
     for(r=0;r<10;r++)
   {
    P00=~P00;
    delay(100);
    r=0;
   }
    }
    }
}

}

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

使用道具 举报

沙发
ID:627013 发表于 2019-10-20 14:10 | 只看该作者
void main()
{

        key();
        time0s();
        time1sON();  
        while(1)               
        {
         if(mode==0)
         {
          shizhong(second1,minute1,hour1);
     
         }
         if(mode!=0)
         {
          shizhong(second2,minute2,hour2);
     }   
        }
}
回复

使用道具 举报

板凳
ID:213173 发表于 2019-10-20 16:36 | 只看该作者
明明一个定时器就足以搞定的事情为什么偏要用两个定时器?而且中断中还用了长延时delay(100);,不互相干扰才怪。
回复

使用道具 举报

地板
ID:7485 发表于 2019-10-20 19:45 | 只看该作者
程序不全,看不出问题。
回复

使用道具 举报

5#
ID:155507 发表于 2019-10-20 20:38 | 只看该作者
你的 允许开总中断  EA=1;  没有看到
回复

使用道具 举报

6#
ID:627013 发表于 2019-10-29 15:26 来自手机 | 只看该作者
wulin 发表于 2019-10-20 16:36
明明一个定时器就足以搞定的事情为什么偏要用两个定时器?而且中断中还用了长延时delay(100);,不互相干扰 ...

第二个定时器的作用是  当时钟与闹钟界面时间相同时 显示闹钟界面并响铃60s  请问一个定时器如何写出
回复

使用道具 举报

7#
ID:606366 发表于 2019-10-30 15:48 | 只看该作者
楼上两位说的对,中断里面最好不要用加延时,如果对时间要求不高,代码还是写在main函数中,中断函数中尽量少写代码;关于定时器1中断服务函数中的代码,你完全可以写在while中循环检测;还有总中断也没有开。
最后,我来告诉你为什么不能同时运行,定时器1的中断优先级低于定时器0的中断优先级,你想判断两个数值是否相同,还没等你判断,定时器0中的数值已经变了。建议初学还是不要用这么多定时器,一个一个来,弄明白了再用也不迟。
回复

使用道具 举报

8#
ID:213173 发表于 2019-10-30 17:58 | 只看该作者
907383184@qq.co 发表于 2019-10-29 15:26
第二个定时器的作用是  当时钟与闹钟界面时间相同时 显示闹钟界面并响铃60s  请问一个定时器如何写出

数码管时钟长短按调整点闪烁+闹钟38译码器+仿真.zip (78.64 KB, 下载次数: 8) 数码管时钟长短按调整点闪烁+闹钟+573+仿真.zip (118.55 KB, 下载次数: 8)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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