电路很简单,旋转编码器,两个脚接PD3和PD2,开启PD3的外部中断允许。中断响应试过下降沿,上升沿,任意变动,能响应。(PB0~PB4是发光二极管,没有仿真器,只有用点亮标志位来判断程序走到哪)
中断响应如下: 问题是无论哪种触发方式,左右旋转,一直响应PB3,也就是最后一个判断。(改过触发方式,改过 if (PIND3==0),结果都一样)
void int1_isr(void)
{
CLI(); //禁止外部中断
DDRB=0XFF;
PORTB=0XFF;
if (PIND3==0) //先判断是高电平产生的中断还是低点平的中断
{
if (PIND2==0)
{PORTB&=~BIT(0);kon-=1;if(kon>4096)kon=0;}
else
{PORTB&=~BIT(1);kon+=1;if(kon>4096)kon=4095;}
}
else
{ if (PIND2==1)
{PORTB&=~BIT(2); kon+=1;if(kon>4096)kon=4095;}
else
{PORTB&=~BIT(3);kon-=1;if(kon>4096)kon=0;}
}
SEI();
}
求哪位大神,帮我看看,问题出在哪里
|