找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机定时器及中断实现百秒以内正计时程序

查看数: 1797 | 评论数: 1 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-11-16 15:49

正文摘要:

定时器及中断设计电路如图所示,可以看到使用两个数码管来显示。实现百秒之内的正计时器(如17秒),到达17秒LED闪一下计时结束,数码管实时显示正计时值。 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载 ...

回复

ID:491577 发表于 2022-11-16 22:04
用定时器中断计数可以实现任意时间定时,无论是秒、分钟、小时、天、月都没有问题的。这是基本功。
例如:
void T0INTinit() //定时器T0初始化
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;  //50ms
        EA=1;  //开总中断
        ET0=1; //开定时器0
        TR0=1; //开始计时
}


void T0INT() interrupt 1//50ms定时器中断
{
        static  unsigned int  m,s0,fen0,h0,day0;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        m++;//
        if(m>=20)
        {
          s0++;
          s++;//秒变量,需要定义成全局变量
          m=0;
        }
        if(s0>=60)
        {
          fen0++;
          fen++;//分钟变量,需要定义成全局变量         s0=0;
        }
        if(fen0>=60)
        {
          h0++;
          h++;//小时变量,需要定义成全局变量
          fen0=0;
        }
        if(h0>=24)
        {
          day0++;
          day++;//天变量,需要定义成全局变量
          h0=0;
        }
        if(day0>=30)
        {
          yue++;//月变量,需要定义成全局变量
          day0=0;
        }
  }

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

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

Powered by 单片机教程网

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