打印

再贴教新手定时器的用法

[复制链接]
1358|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mugenwon|  楼主 | 2008-7-11 22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
只教新手,高人不用看呵呵。
假设某个cpu只有1个定时器,你要用它来实现定时2毫秒,100毫秒,100秒等n种定时时间,怎么处理呢?
有个同事为了这个问题搞了1天还没搞懂,请看程序:

#define TIME0H 0xec//0xec77定时2毫秒,
#define TIME0L 0x77

//其他全局变量不写出

//定时器0中断,如何配置定时器自己看书
void time0(void) interrupt 1//进入为2毫秒一次
{  TH0=TIME0H;    
   TL0=TIME0L;

//====================
//100毫秒一次定时
//====================
++time_20ms;//计数50次,2毫秒x50=100毫秒
if(time_20ms>49)
{    time_20ms=0;
    f_chackbut=1;    //检查项目1
}

//====================
//100秒一次定时
//====================
++time_100s1;
if(time_100s1>249)//计数250次
{    time_100s1=0;
         ++time_100s2;//计数200次,2毫秒x200x250=100秒
         if(time_100s2>199)
         {  time_100s2=0;
            f_chacklight=1;    //检查项目2
         }
    
}

}

在定时器中断里面,利用数值累加就能弄得任何需要定时的时间。处理出标志位和状态等,在主循环检查这些变量即可完成你的任务。就像你的表,秒针只能1次跳一下,但是你数60下你就可以知道这是1分钟。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

96

主题

430

帖子

3

粉丝