timer0.c

来自「ARP协议,含ARP」· C语言 代码 · 共 60 行

C
60
字号
#define START_TICK_TIMER    {TIMSK = 0x02;}
#define STOP_TICK_TIMER     {TIMSK = 0x00;}



/* 功能:10ms定时器(T0)初始化
 * 输入:无
 * 输出:无
 * 返回值:无
 * 说明:无
 */
void init_timer0 (void) {
    //在1Mhz下,256分频,计次39

    TCCR0 = 0x0e;
 
    OCR0 = 39;

    //只保留比较匹配中断
    TIMSK = 0x02;
}
void init_tick_timer (void) {
    //在1Mhz下,256分频,计次39

    TCCR0 = 0x0e;
 
    OCR0 = 39;
}

//一个更精确的停表
void init_stop_watch (void) {
    TCCR1A = 0x00;
    TCCR1B = 0x05;
    TCCR1C = 0x00;
}

void start_stop_watch (void) {
    //16位写,低字节写生效
    TCNT1H = 0x00;
    TCNT1L = 0x00;

    TCCR1B = 0x05; //启动计数CLK
}

us stop_stop_watch (void) {
    union {
        us s;
        uc c[2];
    } t;

    TCCR1B = 0x00; //停止计数CLK

    //16位读,低字节读生效
    cli ();
    t.c[0] = TCNT1L;
    t.c[1] = TCNT1H;
    sei ();

    return t.s;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?