в котором должен происходить переход можно работать так:
cur = (cur - zeroState) & 3
if( cur == prev )
return;
if( prev == 0 ) {
entry = cur;
} else if( cur == 0 && prev != entry ) {
if( entry == 1 )
up();
else if( entry == 3 )
down();
}
prev = cur;
Кстати, про стабильном состояние не гарантируется что-либо? Потому что это нестандартный инкрементальный энкодер, со стабильным состоянием и дребезгом, поэтому разработчики могли подумать над тем чтобы стабильное состояние имело какое-нибудь характерное свойство. Например, одна из фаз - разомкнутая.