回答

收藏

[每日一帖] 之9__计时功能的实现

#线上活动 #线上活动 1774 人阅读 | 0 人回复 | 2016-08-16

色彩时钟的表现方式是色彩,而计时则整个DIY的核心,否则时钟就失去了实际意义。
那如何用单片机的内部资源来实现计时功能呢?
我们知道在单片机内部其资源配置可谓面面俱到,如I/O口、定时器/计数器、串行通讯及中断等。使用定时器/计数器,就可完成计时处理的任务,其设计思想为:使用定时器产生基准的秒信号,然后在进行分、秒、时的进制处理。所涉及的函数有:定时器初始化函数TimeInit()、定时器中断处理函数Time0()及相应的主程序。
  1. //产生5ms计时信号
  2. void TimeInit(void)
  3. {
  4.           /* 模式设置 */  
  5.       TMOD = (TMOD & 0xf0) | 0x01;
  6.           /* 赋初值 */
  7.           TH0 = 0xee;
  8.           TL0 = 0x00;
  9.           /* 定时器中断及全局使能 */
  10.           IE =IE| 0x82;
  11.           TR0 = 0;
  12. }
  13. //使用5ms信号实现计时功能
  14. void Time0() interrupt 1
  15. {
  16.     /* 重新加载初值 */
  17.           TH0 = 0xee;
  18.           TL0 = 0x00;
  19.     /* 中断处理 */
  20.     if(0 != i)
  21.     {
  22.         i--;
  23.     }       
  24.     j=j+1;
  25.     if(j>200)       
  26.     {   
  27.       j=0;
  28.           f=1;
  29.       rtc++;       // 秒计时器
  30.           //   时钟计时处理
  31.       if(rtc>59)
  32.       {
  33.         rtc=0;
  34.         mm++;     // 分计时器
  35.         if(mm>59)
  36.                 {
  37.                         hh++;  // 时计时器
  38.                         mm=0;
  39.         }                                       
  40.                 if(hh>23) hh=0;
  41.       }
  42.     }       
  43. }
复制代码
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条