Hola a todos, tengo un problema con mi código de control de motor dc con el pic16f84a y l293d, explico: el motor esta controlado por arranque (ra0), paro (ra3 y sentido de giro (ra1 y ra2). La secuencia es la siguiente;
Presiono ra0 y arranca (no tiene que arrancar con ningún otro), luego presiono ra1 y cambia de sentido de giro y después presiono ra2 y cambia de sentido de giro !pero! si vuelvo a presionar ra1 ya no cambia de sentido de giro hasta que vuelva a precionar ra0, ese es el único problema. Espero alguien tenga la solución pues ya he tratado de modificar el código y no obtengo el resultado esperado, es muy enrredoso todo esto
Aquí les dejo el código y la simulación...
#include <16F84A.h>
#FUSES NOWDT,XT,NOPROTECT
#use delay(clock=4000000)
int x=0;
void main()
{
set_tris_A(0b11111);
set_tris_B(0b00000000);
output_B(0b00000000);
while(true)
{
input_A();
if ((input(pin_A0)==1) ){
x=1;
}
if ((input(pin_A1)==1) & (x==1) ){
x=2;
}
if ((input(pin_A2)==1) & (x==2) ){
x=3;
}
if ((input(pin_A3)==1) ){
x=4;
}
if(x==1){
output_high(PIN_B2);
output_low(PIN_B3);
}
if(x==2){
output_high(PIN_B3);
output_low(PIN_B2) ;
}
if(x==3){
output_high(PIN_B2);
output_low(PIN_B3);
}
if(x==4){
output_low(PIN_B2);
output_low(PIN_B3);
x=0;
}
}
}