由坑神整理的AVR-Mega16单片机所用到的各种寄存器相关设置
TCNT0:定时器当前的计数值(每次开始和溢出后都要设置初始值)
OCR0:设置定时器比较匹配的值。如果TCNT0==OCR0,并且计数器中断位置位,则会触发匹配中断
TCCR0:如果TCCR0!=0,只要MCU一上电,T/C就开始计时工作。以下代码:
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x00; //set count
OCR0 = 0x0f; //set compare
TCCR0 = 0x02; //start timer
}
要设置T/C计时器的初始值和比较匹配值,设置之前先让计时器停止工作,设置完成之后再重新置位相应的计数器位。
TCCR0:用于设置
1,低三位:是否使用时钟源,是否分频还有驱动方式
2,第6、3位:模式选择,共四种
3,第4、5位:对OCn输出的设置(OCn为某个输出引脚,可能与PB或者其他某个引脚对应)(不同模式OCn的设置不同,参考课本P246-247)
TIFR:记录各类中断是否触发(这里是溢出中断和匹配中断)
开启何种中断应设置TIMSK寄存器
TIMSK:中断使能
注:中断有两个:溢出中断(TCNT0超过0xFF),匹配中断(OCR0与TCNT0匹配)