独闷闷网

 找回密码
 立即注册
搜索
查看: 2494|回复: 0
打印 上一主题 下一主题
收起左侧

[原创] 用单片机做一个时钟,定时中断的代码该怎么写?如何解决时间太快的问题?已解答。

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-11 09:00:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小石—哈尔滨:
求大神指教,想弄个定时器,为什么时间跑的飞快? 以下是定时中断的代码:
  1. void time1() interrupt 3
  2. {
  3.         TH1=(65536-5000)/256;
  4.         TL1=(65536-5000)%256;
  5.         num1++;
  6.   if(num1==2)
  7.          {
  8.          num1=0;
  9.          shi=t1/10;
  10.          ge=t1%10;
  11.      t1++;
  12.                                          if(t1==100)
  13.                                         {
  14.                                          t1=0;
  15.                                          
  16.                                          qian=t2/10;
  17.                                          bai=t2%10;
  18.                       t2++;
  19.                                                           if(t2==60)
  20.                                                           {
  21.                                                                  t2=0;
  22.                                                           }
  23.                             }
  24.      }
复制代码


鸿哥-深圳:
我帮你修改如下:

  1. #define const_1s  1000  //你自己慢慢调整这个数字,直到它大概产生1秒钟左右为止

  2. unsigned int uiTimeCnt=0; //多增加这个变量,目的就是让它产生一个时间基准

  3. void time1() interrupt 3
  4. {
  5.         TH1=(65536-5000)/256; //不要这样写公式,涉及运算可能会耗时间,应该直接写它的结果TH1=0xec;
  6.         TL1=(65536-5000)%256; //不要这样写公式,涉及运算可能会耗时间,应该直接写它的结果TL1=0x78;

  7.     uiTimeCnt++; //多增加这个变量,目的就是让它产生一个时间基准
  8.     if(uiTimeCnt>const_1s)  //const_1s是一个宏定义常量,你自己慢慢调整这个数字,直到它大概产生1秒钟左右为止
  9.     {
  10.        uiTimeCnt=0; //及时清零,为下一个时基做准备
  11.              num1++;
  12.        if(num1==2)
  13.            {
  14.              num1=0;
  15.              shi=t1/10;
  16.              ge=t1%10;
  17.          t1++;
  18.                  if(t1==100)
  19.                  {
  20.                          t1=0;
  21.                                          
  22.                      qian=t2/10;
  23.                          bai=t2%10;
  24.              t2++;
  25.                          if(t2==60)
  26.                          {
  27.                                 t2=0;
  28.                          }
  29.                  }
  30.        }
  31.    }
  32. }
复制代码





乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-4-27 09:02 , Processed in 0.177744 second(s), 17 queries .

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