不知道为什么进入不了溢出中断,中断也打开了,经试验发现,中断标志也被置1了,但是就是没执行溢出中断子程序。为什么呢?
void timer1_init()
{
TCCR1A = 0x00;
TCCR1B=_BV(ICNC1)|_BV(ICES1); //输入捕获噪音消除,上升沿触发捕获
TCCR1B|=0X04; //256分频
TCNT1H=0X0B;//定时1s
TCNT1L=0XDB;
TIMSK=_BV(TICIE1)|_BV(TOIE1); //输入捕获、溢出中断使能
SREG|=0X80; //sei();
}
void main()
{
uchar i;
DDRA=0XFF;PORTA=0X00;
DDRB=0XF0;PORTB=0XF0;
timer1_init();
ACSR=_BV(ACIC); //比较器初始化,输入捕获使能
while(1)
{
if(a!=0)
{
a=0;
for(i=4;i>0;i--)
{
Display_Buffer[i-1]=f%10;
f/=10;
}
Show_FRQ_ON_DSY();
}
}
}
ISR(TIMER1_CAPT_vect)
{
freq++;
}
ISR(TIMER1_OVF_vect)
{
TCNT1H=0X0B;
TCNT1L=0XDB;
f=freq;
a=1;
freq=0;
}
|