计时器&溢出中断MikroC代码

时间:2013-08-02 14:18:30

标签: avr atmega mikroc

void TimerFunction()
{
TIMSK=(1<<TOIE0);
TCNT0=0x00;
TCCR0 |= (0<<CS02) | (1<<CS00) | (0<<CS01);
}

//##############################################################################
ISR(TIMER0_OVF_vect)
{
    // process the timer0 overflow here
  countClock ++;
  count++;
  delay++;
//some extra code 
}

然后

void main()
{
 //someCode
 TimerFunction();
}

但它对我不起作用,那么启动定时器0及其中断服务程序的正确方法是什么?

3 个答案:

答案 0 :(得分:0)

乍一看,我会说你错过了

sei();  // set global interrupt flag

如果不在//someCode范围内...在任何情况下我都建议仅在初始化所有特定中断源(定时器,USART等)后打开全局中断使能标志

答案 1 :(得分:0)

是的,在你的代码中没有设置全局中断标志。如果针对MikeD的解决方案无效,请尝试以下方法:

asm{sei};

答案 2 :(得分:0)

使用SREG.SREG_I = 1;启用全局中断