我用的是m16的T0定时器设置为普通模式,使用内部1m晶振,8分频。
实验数据
TCNT0 = 0xff; 输出为11.63khz 86us,与理论值基本不符。125k/2=65.2khz
TCNT0 = 0xfc; 输出为10.42khz 96us,与理论值基本不符。125k/8=15.6khz
TCNT0 = 0xfa; 输出为7.813Khz 128us,与理论值基本不符。125k/12=10.42khz
TCNT0 = 0x00; 输出为242.7hz 4.12ms,与理论值基本相符。125k/512=244hz
中断中就2句话。
void timer0_ovf_isr(void)
{
TCNT0 = 0xfa;
PORTD^=(1<<PD7);
}
void timer0_init(void)
{
TCNT0 = 0xfa; //set count
TCCR0 = 0x02; //start timer
}
请高手指教,难道我理论值算错了? |