TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jhonjz en 20 de Septiembre de 2012, 19:06:52

Título: Cómo configurar dos pulsadores
Publicado por: jhonjz en 20 de Septiembre de 2012, 19:06:52
Hola a todos, ya he elaborado algunas sencillas aplicaciones, la última fue la de un semáforo usando un pic16f877, aún soy muy novato en este campo de la electrónica, sin embargo, creo que todo con prácitca y dedicación se puede lograr abarcar actividades más complejas. La duda que traigo en esta ocasión tiene que ver en cómo puedo configurar dos pulsadores digamos RC0 Y RE0 de tal forma que una vez que se pulse RE0 me modifique o cambie la manera de trabajar de RC0, digamos por ejemplo que si RC0 me está incrementando un valor, una vez que se pulse RE0, me lo modifique y quede trabajando al contrario, ya he visto dos formas de incrementar y decrementar mediante el códgio a=a+1 y a=a-1 u otra forma es usando ++ y --, esto me funcionó perfectamente en el programa que ahora estoy montando, pero con los dos pulsadores RC0  solamente me los incrementa y RE0 lo contrario, y esto no es lo que pretendo, sino que RE0 solamente cambie la función de RC0, o sea que bien sea que incremente o decremente, cómo lo hago?
Agradezco su coloaboración. Saludos.
Título: Re: Cómo configurar dos pulsadores
Publicado por: AngelGris en 20 de Septiembre de 2012, 19:43:14
  Lo que puedes hacer es que al presionar RE0 cambie de valor una bandera (variable que tome el valor 0 o 1). Cuando presiones RC0, debes testear el estado de dicha variable y si es 0 decrementas, si vale 1 incrementas.
Título: Re: Cómo configurar dos pulsadores
Publicado por: fantaxmax en 20 de Septiembre de 2012, 21:19:56
imagino que usas ccs, entonces aqui dejo lo que podrias hacer

para el boton RC0

Código: C
  1. int modo;
  2. int a;
  3. void RC0() //es solo referencia
  4. {
  5. if(modo==0x00){a++;}
  6. else if(modo==0x01){a--;}
  7. }

para el boton RE0

Código: C
  1. //asumo que se toman las mismas variables que arriba
  2. void RE0()
  3. {
  4. {
  5. if(modo==0x00){modo=0x01;}
  6. else if(modo==0x01){modo=0x00;}
  7. }

teoricamente con eso debiese funcionarte, cabe destacar que lo escribi aqui y no lo he probado, pero es tan simple que va a funcionar, lo que yo llame como funcion RC0 es lo que debe hacer cuando apretas el boton RC0, igualmente para RE0 espero te sirva

Saludos!
Título: Re: Cómo configurar dos pulsadores
Publicado por: jhonjz en 20 de Septiembre de 2012, 22:31:05
Gracias fantaxmax, interaré realizar lo que me propones, parece que sí funciona, Ah! tamibén agradezco a AngelGris, lo de la bandera o flag era lo que me faltaba.