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