TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: triplegota en 01 de Abril de 2006, 08:45:00

Título: Problema pulsador
Publicado por: triplegota en 01 de Abril de 2006, 08:45:00
Hola,.. me encuentro haciendo un proyecto,. y necesito que cuando pulse un pulsador, una variable incremente su valor pero solamente en una unidad,.. y no siga incrementando aunque continuen los ciclos de programa. He empleado retardos pero me dan problemas.,.. no se si alguien tiene alguna idea para hacer esto. Muchas gracias y un saludo desde Gales
Título: RE: Problema pulsador
Publicado por: vszener en 01 de Abril de 2006, 09:05:00
Buenass!!!no quiero ser pesado en ponerte el enlace al post de Ejemplitos en C para 16F648A jeje pero hay programas que s etrabaja con pulsadores, hay dos maneras de evitar los llamados "rebotes" , uno es mediante hardware y la otra mediante software, en este caso lo realice mediante software, con un retraso es una posibilidad y la otra es mediante un bucle:
Codigo:

  do{ //elimina...
}while(!input(PIN_A0)); //...rebotes del boton


Donde en PIN_A0 debes colocar el pin tuyo donde esta conectado el boton!


Suerte!!!Giño
Título: RE: Problema pulsador
Publicado por: maunix en 01 de Abril de 2006, 16:57:00
Escrito originalmente por triplegota
Hola,.. me encuentro haciendo un proyecto,. y necesito que cuando pulse un pulsador, una variable incremente su valor pero solamente en una unidad,.. y no siga incrementando aunque continuen los ciclos de programa. He empleado retardos pero me dan problemas.,.. no se si alguien tiene alguna idea para hacer esto. Muchas gracias y un saludo desde Gales


Depende que quieres hacer.

Si el bucle de tu programa pasa muchas veces por dicha rutina y el incremento se debe dar cuando se pulsa pero no seguirse incrementando mientras sigue pulsado.... usa la rutina de vszener.

Eso si, nota que solo ejecutaras lo qeu está dentro del while y lo que ocurra con alguna interrupción

Si lo que quieres es leer uuna sola vez el pin y nunca mas... te aconsejo que uses una variable

La variable se inicia en 0.  Al leer el pin se pone en 1 y se incrementa el contador.

Luego nunca mas incrementas el contador si la variable está en 1!

Todo depende que quieras hacer exactamente en tu softwre, como no lo has aclarado es que te pongo esos ejemplos que se me acaban de ocurrir.