文章
博客 网店

 ATMEGA48/88/168定时器1用于定时(CTC模式)示例程序


可以使用两种方式实现定时,举例以7372800Hz时钟定时1秒

1.使用ICR1的CTC模式

void Timer1Init(void)
{  
  TCNT1=0;
  ICR1=7200; //Top值
  TCCR1B=_BV(WGM13)|_BV(WGM12)|_BV(CS12)|_BV(CS10);//1024分频,CTC模式
  TIMSK1=_BV(ICIE1);//比较匹配中断允许
}
ISR(TIMER1_CAPT_vect)
{
  LED_FLASH;
}


2.使用OCR1A的CTC模式

void Timer1Init(void)
{  
  TCNT1=0;
  OCR1A=7200;  //TOP值
  TCCR1B=_BV(WGM12)|_BV(CS12)|_BV(CS10);//1024分频,CTC模式
  TIMSK1=_BV(OCIE1A);//比较匹配中断允许
}
ISR(TIMER1_COMPA_vect )
{
  LED_FLASH;
}

芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved