Antirebote por software

Necesitaria que alguien me diera una mano para hacer por soft un antirebote para un ejercicio con el pic 16f84. El ejercicio es el siguiente.
Presionando el pulsador 1, el led del port_b se encendera y permanecera en este estado al soltar el pulsador. Al presionar nuevamente el pulsador 1, dicho led debe apagarse y debe encenderse el led 2. Lo mismo debe repetirse para las 8 salidas del port_b. Todo esto usando assembler. Gracias!
 
Revisa este enlace: Leer botones e interruptores, ahi veras como hacer un antirrebote por software.

Sobre lo que quieres hacer de dar click en el boton y que permanezca encendido el led hasta que vuelvas a dar click lo puedes hacer con la instruccion XOR.
 
Hola!
Sabes. no quedé tan contento con ese tutorial. Me parece que las rutinas que allí salen igual pueden fallar.

Entonces te sugiero lo siguiente. Los rebotes pueden durar hasta 50mS después de la pulsación del botón. Entonces, haz una rutina que lea el pin al que está conectado el botón, y cuando este se apriete, la rutina salte a una subrutina que sea un delay de 50mS. Esto hace la espera necesaria hasta cuando el botón se haya estabilizado al fin.

Eso es lo que te recomiendo.
Saludos!

PD: Ah! Y sabías que un botón no es venir y conectarlo asi nomás en una entrada del PIC? Sabes que hay que ponerle resistencias de cierta manera para que no se vuelva loco el PIC? Si no sabes, pregunta. Estaré dando vueltas por aquí.
 
ELIUSM gracias por tu comentario, esa rutina que esta en la pagina funciona y al menos a mi no me ha dado ningun problema, aunque tambien he usado rutinas con retardos como la que tu indicaste, despues pondre una rutina con un retardo para que el antirrebote sea mas seguro.

Sobre lo que dices de que se deben poner resistencias para poder leer un boton a que te refieres? El boton lo conecto utilizando una resistencia de pull-up de modo que el pic siempre lea un 1 hasta que el botón es presionado. Lo que hago es incorrecto? Quisiera que me dijeras a que te refieres, estoy totalmente dispuesto a aprender. Muchas gracias.
 
Hola cumpa!

Mira, es eso lo que tu dices, lo del Pull-Up. Lo que pasa es que si dejas una entrada del pic libre, sin conexión a nada (o a un pulsador no presionado), esta saltará entre un logico 1 y 0, de manera que al leerla, se leerán puras "pulsaciones del pulsador" erróneas, lo que es indeseado, cierto? Bueno, entonces hay que "amarrar" a tal entrada, para que no salte. Eso se hace con una resistencia, normalmente a tierra. Cuando se apriete el pulsador, es cuando todo se conecte a un polo positivo, el que finalmente tira todo para el lado de dar un lógico 1. Es como una palanca que está amarrada por un elástico, y venes tu y con fuerza la tiras para el otro lado. Bien, ahora menos bla bla y más práctica, te adjunto un esquema donde verás como es que se deben conectar las resistencias. Y suerte con eso.
 

Adjuntos

  • resistencias_147.bmp
    13.3 KB · Visitas: 1,256
Vaya, muchas gracias, eso no lo sabía. La configuración que yo uso me la enseño mi profe de digitales y no es alguien que sepa poco, sin embargo tu configuración si debe ser mas segura.
 
Hola!
Me faltó agregar otro detalle:
Lo que te publiqué allí se llama "Pull Up". O sea, si no aprietas el pulsador siempre leerás un 1 lógico en ese pin del PIC.
Para hacerlo al revéz, o sea, para leer un lógico 0 cuando no aprietas el pulsador, se hace lo que se llama Pull Down, poniendo el GND en donde está el 5Vpositivo y 5Vpositivo en donde está el GND.

Asique: Pull Up y Pull Down. Recién hace poco me di cuenta de todo eso, sabiendo inconscientemente de la existencia de estas configuraciones.

Saludoos!
 
Hola gente, solo queria agregar que esa resistencia de 100 ohm esta de mas, para que hacer un divisor de tension, si lo que quieres es un nivel logico LOW, basta con tirar a tierra la linea. Te comento esto ya que cuando diseñas una placa y necesitas el mayor espacio posible, hay que pensar en deshacerse del material redundante. Imagina un teclado de muchas teclas. Ahora al hacerlo alreves(con la logica alreves) necesitas esa resistencia para no tirar directamente los 5v al PIC, lo recomendable seria, agrandar mas ambas resistencias para dejar que menos corriente circule por el micro. Espero no tomes a mal el comentario "ELIUSM", es solo con animo de ayudar.

saludos :)

chaos :)
 
Hola!
Jajaja Phlako, te urges mucho. Gracias por el aporte!
Tenía entendido que esa resistencia estaba para ablandar un poco el choque cuando se apretaba el pulsador, ahora si, claramente no es necesaria para cuando se conecta a GND.
Saludos!
 
Atrás
Arriba