查看: 77|回复: 0

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

[复制链接]

55

主题

1

好友

491

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    昨天 08:02
  • 签到天数: 201 天

    [LV.7]常住居民III

    爱板会员勋章 活跃会员勋章

    发表于 2016-8-16 08:58:29 |显示全部楼层
    色彩时钟的表现方式是色彩,而计时则整个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. }
    复制代码
    回复

    使用道具 举报

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

    关闭

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


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-10 09:02 , Processed in 0.098583 second(s), 10 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部