打印

定时中断的一种管理方法

[复制链接]
1412|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ocon|  楼主 | 2007-6-14 22:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各软定时器都使用同一个timer0作为时基,各计数器的判断和改写都放在中断里完成,然后管理相应的标志位,在工作循环里按这些标志操作。例如:
//中断处理
#int_timer0
void get_time()
{
    set_timer0(get_timer0()+13); //刷新timer0初值
    count++;
    if(count>=20) //timer0每溢出20次
    {
        count=0;
        get_in(); //扫描一次IO
        sec++;
        show++;
        take++;
        if(sec>=1000)
        {
            sec=0;
            sec_tick=1; //秒节拍标志
        }
        if(show>=200)
        {
            show=0;
            show_tick=1; //动画节拍标志
        }
        if(take>=1000)
        {
            take=0;
            take_tick=1; //其他时间标志
        }
    }
}

工作循环中需要开始定时的时候:
show=0; 
show_tick=0;
然后等待show_tick==1即可。

相关帖子

沙发
程序匠人| | 2007-6-14 23:11 | 只看该作者

加油,我先占个沙发

使用特权

评论回复
板凳
gyt| | 2007-6-15 06:37 | 只看该作者

谢谢共享

使用特权

评论回复
地板
ayb_ice| | 2007-6-15 08:06 | 只看该作者

这有新意吗。。。

使用特权

评论回复
5
ocon|  楼主 | 2007-6-15 11:13 | 只看该作者

楼上,我水平有限啊,呵呵

使用特权

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

本版积分规则

142

主题

4841

帖子

14

粉丝