Ich empfehle, die A u B Signal auf einen Wert zusammenzufassen, dann ist die Auswertung weniger verwirrend
z.B:
Links u. rechst muss man ev. je nach polarität auswechselnCode:while (1) { newstate = 0; if (PIND & IO_PD6) newstate |= 2; // A ist 0/1 if (PINC & IO_PC2) newstate |= 1; // B ist 0/1 if (newstate == laststate) continue; // jetzt enthält newstate die werte 0 , 1, 3, 2 switch (newstate) { case 0: if (laststate == 2) "rechts" else "links" break; case 1: if (laststate == 0) "rechts" else "links" break; case 3: if (laststate == 1) "rechts" else "links" break; case 2: if (laststate == 3) "rechts" else "links" break; } laststate = newstate; }
Lesezeichen