超简单的编码开关(单键飞梭开关)解码程序
扫描二维码
随时随地手机看文章
//外部中断0,用于编码开关解码,解码图:A接中断脚(AVR的PD2),以此为基准,B用来判断方向(连到AVR的PA1),C接地
//A-|
//|-----|__________|----------|____________
//C-|
//
//B-|
//|----------|__________|----------|____________
//C-|
//CW===>>>ROTATION
//外部中断设置(ISC01=0,ISC00=1):INT0引脚上任意的逻辑电平变化都将引发中断
#pragmainterrupt_handlerint0_isr:2
voidint0_isr(void)
{
//externalinteruptonINT0
GICR=0;//禁止外部中断
if((PIND&0x04)==0)//先判断是高电平产生的中断还是低点平的中断
if((PINA&0x02)==0)//再判断B线上的电平
{
keycounter--;
keydirection=0;
}
else
{
keycounter++;
keydirection=1;
}
else
if((PINA&0x02)==0)
{
keycounter++;
keydirection=1;
}
else
{
keycounter--;
keydirection=0;
}
GICR=0x40;
}