本文介绍ATmega 16 单片机的T0使用
M16中的T0是8位定时器/计数器
以下内容摘至ATmega 16 Datasheet




注意,使用前要将OC0设置输出,上拉电阻
使用CTC方式产生38K方波。红外常用的
void timer0_init(void) //CTC模式输出38KHz方波,用于红外检测
{
OCR0 = 11; //设定TOP值
//TOP=7372800/(2*8*38000)-1=11 选11 38.397KHz(13uS)
TCCR0 = (1<<WGM01)|(0<<WGM00)|(0<<COM01)|(1<<COM00)|(0<<CS02)|(1<<CS01)|(0<<CS00);
//8分频,CTC模式,OC0取反输出方波
}
使用快速PWM,用于电机调速。其它方式PWM可参考DataSheet
void timer0_init(void)
{
TCCR0=0x6A;//不匹配输出高电平,匹配OCRA清零,快速PWM
TCNT0=0x00;//初始值
OCR0=0x35;//匹配值
}