Revisado el ejemplo.
No esta mal para empezar pero una vez llegado a este momento antes de dar otro paso, lo ideal seria realizar el codigo mas eficiente.
Segun lo has planteado vas asignando valores uno a uno a cad bit y para cada estado.
¿por que no asignas la salida de manera unica cada vez para todos los pines?
Te adjunto una captura de una pantalla y veras como se simplifica mucho la escritura del programa. Si no me he equivocado al asignar los valorea al puerto, el programa debe de realizar lo mismo que el tuyo.
F.