Lo mas simple es crear una "tabla" con el estado de las salidas
char tabla[10] = {0b00000011,0b00001100,0b00110000,.....} // Los valores se los pones vos
Luego creas una variable que maneja el indice de esa tabla. Y si la haces avanzar, tu motor va a avanzar, si lo haces retroceder ( restas ) va a ir para atras.
Ejemplo
char i;
// Para adelante
for( i = 0; i < sizeof tabla; i++)
{
PORTB = tabla[i];
delay_ms(100); // Segun el delay que tengas aca va a ser mas rapido o mas lento
}
Vas a tener que aprender para hacer esto:
- Que bobinas energizar, para saber crear la tabla
- Velocidad que queres que se mueva asi le pones el valor correcto en el delay
En caso de querer hacerlo para atras, vas a tener que pensar como hacer para que otro "for" lleve la i desde el tamaño del array hasta 0.