專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

AVR定時(shí)器1的普通模式設(shè)置

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年09月01日   【字體:

 如何設(shè)置定時(shí)器1的寄存器呢?我們僅要簡(jiǎn)單的隨著以下流程

1.對(duì)T/C1 控制寄存器B TCCR1B,設(shè)置分頻或者無分頻。TCCR1B|=BIT(2);
2.對(duì)TCNT1H 和TCNT1L 賦初值。
3.對(duì)T/C1 中斷屏蔽寄存器TIMSK,使能定時(shí)器1 溢出中斷。TIMSK|=0x04;
4.對(duì)全局中斷使能使能。SREG|=BIT(7);
5.之后再編寫相關(guān)的中斷函數(shù)即可。
那么現(xiàn)在出現(xiàn)了一系列的問題?分頻有什么用?又如何對(duì)TCNT1 賦初值?照以下的公式計(jì)算:要賦給TCNT1 的初值= ( 65536 - ( ( 晶振頻率/分頻) * 定時(shí)時(shí)間) )
搞了半天,就是分頻置初值,使能中斷、開總斷。與51極相似!
定時(shí)器0:
void miao(void)
{
   if(num == 125)//實(shí)際是8MS中斷一次
  {
      num = 0;
   if(second++ == 60) second = 0;
  }
  else
  {
   num++;
  }
  TCNT0 = 0x05;
}
void Timer0Init(void)
{
   TCCR0 = 0x04;
  TCNT0 = 0x05;
  TIMSK |= (1<<0);
  SREG |= 0x80;
}
定時(shí)器1:
// T/C1中斷入口
void miao(void)
{
   if(num == 100)
      num = 0;
  else num++;
  TCNT1H = 0x85;
  TCNT1L = 0xED;
}
void Timer1Init(void)
{
   TCCR1B = 0x04;
  TCNT1H = 0x85;
  TCNT1L = 0xED;
  TIMSK |= (1<<2);
  SREG |= 0x80;
}
關(guān)閉窗口

相關(guān)文章