энкодер - по сути, это механический переключатель без ограничения вращения, при вращении ручки замыкает пару контактов, причем замыкание одного из них сдвинуто по углу вращения, вследствие чего он выдает последовательность , соответствующая вращению, например:
00
10
11
01
00
как видно, первый бит просто опаздывает на один шаг, если крутить ручку в одну сторону, и будет спешить, если в другую ... Аааа, ну наконец-то до меня дошло... Верно говорят, поставь правильно задачу - и она будет решена
Хотя, с добавлением тех двух строчек, все работает без ошибок, как ни странно. Логика - страшная вещь, никогда не знаешь, куда она тебя заведет ...