超簡單的編碼開關(guān)(單鍵飛梭開關(guān))解碼程序
//外部中斷0,用于編碼開關(guān)解碼,解碼圖:A接中斷腳(AVR的PD2),以此為基準(zhǔn),B用來判斷方向(連到AVR的PA1),C接地
//A-|
//|-----|__________|----------|____________
//C-|
//
//B-|
//|----------|__________|----------|____________
//C-|
//CW===>>>ROTATION
//外部中斷設(shè)置(ISC01=0,ISC00=1):INT0引腳上任意的邏輯電平變化都將引發(fā)中斷
#pragmainterrupt_handlerint0_isr:2
voidint0_isr(void)
{
//externalinteruptonINT0
GICR=0;//禁止外部中斷
if((PIND&0x04)==0)//先判斷是高電平產(chǎn)生的中斷還是低點平的中斷
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;
}