再贴教新手定时器的用法

[复制链接]
2073|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

粉丝
快速回复 在线客服 返回列表 返回顶部