Ohne mir jetzt deinen Code im Detail angesehen zu haben: Der Encoder kennt nur 4 Zustände. Die kann man einfach in einer Tabelle ablegen und dann jeweils den alten mit dem aktuellem Zustand vergleichen. Über die Tabelle "sieht" man dann, ob es vorwärts oder rückwärts geht. Ein Sprung über 2 oder mehr Tabelleneinträge stellt einen Fehler da. Die Eingänge müssen also schnell genug abgetastet werden.

Pos. Signale
0 00
1 01
2 11
3 10
4=0 00
usw.

Mit freundlichen Grüßen
Thorsten Ostermann