查看: 1334|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 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. }
    复制代码
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 07:12 , Processed in 0.101957 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.