Decodificar secuencia binaria de 4 bits

Hola a todos,tengo que hacer un codigo que me permita saber, partiendo de cualquier posicion de la secuencia que recibo desde un contador binario en forma aleatoria,si la cuenta es ascendente o descendente y poner una salida a 0 o 1 para manejar un driver de stepper CW-CCW

A B C D bits

0 0 0 0
1 0 0 0
0 1 0 0
1 1 0 0
0 0 1 0
1 0 1 0
0 1 1 0
1 1 1 0 ------la secuencia puede empezar en cualquier posicion y subir o bajar en los siguientes 4 bits
0 0 0 1
1 0 0 1
0 1 0 1
1 1 0 1
0 0 1 1
1 0 1 1
0 1 1 1
1 1 1 1

Si me pudiesen ayudar con el codigo les estaria muy agradecido.

Deberías haber leido un poco las normas y luego como esta organizado el foro para saber que esto es una consulta que debió ir en otra sección.
Será movido tu hilo a Software.

Los números representan su equivalente decimal. Estan expresados en binario de 4 bits pero tienen también una forma decimal que va según tu los has presentado de 0 a 15 o en hexadecimal 0 a F

Entonces lo unico que debes hacer es convertir esas 4 entradas a formato decimal y luego comparar el valor actual con el anterior. Si es mayor avanza si es menor retrocede
traduzco
ABCD serán 4 entradas

supongamos que asignas A al pin2, B al 3, C al 4, y D al 5

luego lees sus valores y lo pasas a formato decimal de este modo

bool A, B, C, D;

    A = digitalRead(pinA); // donde pinA = 2 definido previamente
    B = digitalRead(pinB);
    C = digitalRead(pinC);
    D = digitalRead(pinD);
    byte = valor = A<<3+B<<2+C<<1+D; // esto hace que cada valor de tu table se convierta en el número decimal correspondiente

luego si tomas otra variable que llamas valorAnt o sea el valor Anterior y los comparas veras que al restarlos te da un número positivo o negativo.

   if (valor > valorAnt)
      digitalWrite(SalidaPin, HIGH);
   if (valor < valorant)
      digitalWrite(SalidaPin,  LOW);

   valorAnt = valor;

ahi tienes mas o menos como hacerlo. El resto te lo dejo a ti.