Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: dario9669 en 9 Septiembre 2013, 00:45 am



Título: ayuda a programar un pic 16f84a
Publicado por: dario9669 en 9 Septiembre 2013, 00:45 am
hola quisiera hacer un programita para un pic 16f84a , el proyecto se basa de esta manera ,
son 3 pulsadores cada uno maneja 3 leds independientemente un pulsador de oto , po ej ;
pulsador 1 :
1° pulso prende un led rojo y lo deja prendido
2° pulso prende otro led rojo y queda prendido
3° pulso prende otro led rojo y lo deja prendido
4° pulso apaga todos los led rojos

pulsador 2 :
hace lo mismo que el pulsador 1 pero con led verdes , indepemdientemente del pulsador 1

pulsador 3:
hace lo mismo que pulsador 1 y 2 tambien independientemente de los otros dos pulsadores .
de esta forma se pueden prender los led con su respectivo pulsador de forma independiente sin importar que haga o en que estado este cada conjunto de led
basicamente con la distribucion de patas del pic 16f84 seria esta

pulsador 1 =porta,0 --> led =b0,b1,b2

pulsador 2 =porta,1 --> led =b3,b4,b5

pulsador 3 =porta,2 --> led =b6,b7,a3

si alguien me puede dar una mano con esto se los voy a agradecer ya que no manejo el tema de sentencias de programacion , si puedo hacer el tema de grabar el pic con el archivo hex , MUCISIMAS GRACIAS A TODOS UN ABRAZO


Título: Re: ayuda a programar un pic 16f84a
Publicado por: xiruko en 10 Septiembre 2013, 21:10 pm
No creo que nadie vaya a hacerte el programa, o bueno al menos hablo por mí y ya te digo que no te lo haré.

Y bueno para darte un poco de ayuda, tienes que saber que los pulsadores padecen de rebotes con lo que para detectar cuando se ha pulsado no basta con leer el pin al que este conectado y ver su estado, ya que así verás que los leds se te encienden y apagan más de una vez cuando hagas solo una pulsación.

En su lugar, deberías tener dos variables, una para detectar el estado anterior del pulsador y una para detectar el estado actual. Si la anterior estaba en 0 y el actual está en 1 significa que ha habido un flanco de subida y tendrías que encender el led. Si quieres hacerlo por flanco de bajada pues sería al revés. Así para evitar los rebotes, solo te bastará con tener un flag que lo pongas a 0 cuando detectes un flanco de subida (o bajada, como quieras) y que lo vuelvas a poner a 1 al cabo de, por ejemplo, 400 o 500 msec. Y claro, para detectar si se ha pulsado habrían dos condiciones: 1. que se detecte un flanco de subida, y 2. que el flag esté a 1.

De esta manera conseguirás detectar la pulsación solo 1 vez sin rebotes y sin que pasen cosas que no quieres que pasen.

Un saludo!