TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: fco1306 en 24 de Mayo de 2009, 09:06:37
-
Estoy usando un pic 12f629 a 4mhz interno y programando en pic simulator.Necesito saber el tiempo que mantengo pulsado un interruptor conectado al pic.Sería para hacer una condición.Si lo mantengo menos se cinco segundos ejecute unas instrucciones,si lo mantengo más de cinco otras.He estado mirando en el foro y en la web pero no he encontrado nada que me sirva.¿Hay alguna manera sencilla de programar ésto?
Muchas gracias
-
Hola.
Puedes activar un timer para que cuando presiones el pulsador inicie el conteo.
-
Me lo temía.De momento mis conocimientos no llegan a los timer.¿Hay alguna página o ejemplo que sea sencillo de seguir?.He mirado en el foro y lo que viene no lo entiendo.
He pensado que igual puedo usar waitms.Algo así
while gp3<>0
waitms 50
contador=contador+1
wend
Mientras se accione el pulsador se ejecutará el while.Haciendo pausas por ejemplo de 50ms,podemos saber cuantas pausas se han hecho hasta que se deja de accionar el pulsador.Si es mayor de una cantidad se ejecutan unas órdenes,si no,otras.
-
Hola.
La ventaja de usar Timer es que la espera es activa. Pero creo que si daria resultado como tu dices, es otra manera de contar, la diferencia con el Timer es que el Timer haria esa cuenta automaticamente.
Saludos
-
Miraré a ver si encuentro alguna página en donde se diga como usar los timer.
Muchas gracias
-
En este enlace tienes la configuración para el timer1, es para el 675 pero sino recuerdo mal es la misma que para 629.
http://www.todopic.com.ar/foros/index.php?topic=24123.0
y con Waitms como indicas, es tambien posible.
-
Si, el tema sería mas o menos así:
Inicio de micro
configuración de puertos, etc etc
configuración de timer por interrrupciones
Ir a Principal
Interrupciones
contador 5s = 100 ? ( suponiendo que hagas interrupciones cada 50ms)
no= incrementar contador 5s +1 y salir interrupciones
si , entonces Flag contador =1 y salir interrupciones
Principal
Flag contador=0
- pulsador activado?
no= espero
si= antirrebotes (20ms creo que es suficiente y no influirá tanto en tus 5 segundos)
activar timer y poner contador 5 segundos a 0
- pulsador desactivado?
no= espero (mientras tanto el contador se va incrementando por cada interrupcion)
si , entonces preguntamos si Flag contador = 1
no= no ha llegado a 5 segundos . Vamos a menu "es menor de 5s"
si= ha llegado a 5 segundos. Vamos a menu "es mayor a 5s"
es menor a 5s
Hacemos bla bla
ir a Principal
es mayor a 5s
Hacemos blu blu
ir a Principal