Problema con el conteo programado en CSS con un pic 16f84a

Hola!
tengo un problema con mi conteo, es un contador, simple con dos botones pulsadores que se muesta en un lcd, al momento que pulsa un boton te debe ir sumando uno a uno, el otro boton hace lo mismo, mi problema no esta en que no cuenta. Si no en que hay momentos que pulsas el boton y no te lo registra ese es mi problema y la verdad no se como resolvero? en pocas palabras quiero que cada botonaso se cuente! nesesito ayuda esta bien explicado que hace cada linea
les adjunto mi simulacion en proteus donde se daran cuenta, cuando pulsan el boton hay veces que no lo cuenta el pulso
tambien les adjunto mi programacion en C y el .hex

Saludos y muchas gracias amigos electronicos!
 

Adjuntos

  • Contador_16f84A.zip
    38.7 KB · Visitas: 15
Sabes, a veces el simuladr puede ser enganoso, te sugiero que lo pruebes en vivo y ver si tiene el mismo problema, lo que quiero decir es que lo armes en protoboard, luego trata de verificar si tiene el mismo problema, si lo tiene tienes que testear los dos pulsadores que tienes en el circuito, tienes que tomar en cuenta que el primero que testees sera el primero que hara caso, por mas que pulses el segundo pulsador, el softwareno hara caso.
 
Ver el archivo adjunto 67789 ahi te mano e sofware corregido

esta simulado en proteus 7.8

Muchas gracias, lo checare y ahi te digo que como me fue, muchas gracias por su tiempo a los dos!

Saludos camardas!



hola otravez disculpa que fue lo que le faltaba, por que lo que note fue inicizalizamos con void inicializar() y agregastes despues de esto otro void...void main() fue lo que note pero se lo implemente a un 16f877a y me da el mismo error te adjunto el 16f877a con el .hex y la cimulacion!

saludos!
 

Adjuntos

  • contador 16f877a.zip
    80.6 KB · Visitas: 27
Última edición:
No s puedes pasarme el siguiente archivo
#include <lcd40x4.c>
es que el Css de mi compu no tiene esa libreria
asi podre compilar tu programa



Ver el archivo adjunto contador 16f877a_copia.rar /aqui te mando el softwre corregido, lo unico quetienes que tomar en cuenta es que primero entran luego sale



Sabes el problema de tus programas esta en que tienes que aliminar primero el ruido con un retardo de 80ms luego con un while, verificar si sigue presionado la tecla (0 logico), recien procedes a hacer los procedimiento, y una cosa ya encontre la libreria que necesito para manejar tu LCD de 40 por 4.
 
Última edición:
No s puedes pasarme el siguiente archivo
#include <lcd40x4.c>
es que el Css de mi compu no tiene esa libreria
asi podre compilar tu programa



Ver el archivo adjunto 67895 /aqui te mando el softwre corregido, lo unico quetienes que tomar en cuenta es que primero entran luego sale



Sabes el problema de tus programas esta en que tienes que aliminar primero el ruido con un retardo de 80ms luego con un while, verificar si sigue presionado la tecla (0 logico), recien procedes a hacer los procedimiento, y una cosa ya encontre la libreria que necesito para manejar tu LCD de 40 por 4.

Muchas gracias pareja, si para serte franco estoy comenzando a programar pic y me cuesta algo de trabajo en llevar una buena logica de trabajo! ya revise el programa corregido, para que me quede mas claro cuando pones

while(TRUE){
{
if(input(pin_a0)==0)
{
while(input(pin_a0)==0)
{

en la tercera linea if(input(pin_a0)==0) aqui le estamos diciendo que si es igual a zero (0 logico) o sea que no hubo botonaso, va entrara al if y de ahi entra al bucle infinito asta que pulsemos (1 logico) y perdona mi ignoracia pero no vi algun delay_ms(80) para el ruido?

Muchas gracias Waldo Armando por tu tiempo de lo agradesco mucho y que pases una linda noche! y gracias otra vez!
 
El while(true)
{
}
es un buble al infinito, dentro de este pregunto:

if(input(pin_a0)==0)
{
}

es para testear la entrada 0 del puerto a, como en un principio esta en uno, pregunta si precionamos el pulsador, osea, si esta en cero (0).
Luego viene:

delay_ms(80);

Es un retardo de 80milisegundos, es para evitar los rebotes del pulsador mecanico, es muy indispensable si es que queremos armar el circuito en protoboart o placa. Los rebotes son pulsos que suceden dentro de los 80milisegundos, siempre hay rebotes, por mas que uses un buen pulsador.

While(input(pin_a0)==0)
{
}

Quiere decir ,estar dentro del bucle miestrar el pin 0 del puerto a sea 0 logico, en es momento es cuando pulsamos el boton este queda en cero, cuando dejamos de pulsar el boton este vuelve a uno logico y sale de este bucle para continuar la siguiente instruccion.
 
El while(true)
{
}
es un buble al infinito, dentro de este pregunto:

if(input(pin_a0)==0)
{
}

es para testear la entrada 0 del puerto a, como en un principio esta en uno, pregunta si precionamos el pulsador, osea, si esta en cero (0).
Luego viene:

delay_ms(80);

Es un retardo de 80milisegundos, es para evitar los rebotes del pulsador mecanico, es muy indispensable si es que queremos armar el circuito en protoboart o placa. Los rebotes son pulsos que suceden dentro de los 80milisegundos, siempre hay rebotes, por mas que uses un buen pulsador.

While(input(pin_a0)==0)
{
}

Quiere decir ,estar dentro del bucle miestrar el pin 0 del puerto a sea 0 logico, en es momento es cuando pulsamos el boton este queda en cero, cuando dejamos de pulsar el boton este vuelve a uno logico y sale de este bucle para continuar la siguiente instruccion.

Muchas gracias por la explicacion mas desglozada y por tu tiempo, todo fue de gran utilidad, sin ti todavia estaria con ese pequenio problema, Muchas gracias y que tengas un lindo fin de semana waldo!

Saludos!
 
hola saludos alguien me puede ayudar con un programa de interrupcion externa en el pic 18f4550 el programa lo quisiera en CSS Compiler.???
quiero hacer un contador del 0 al 99. quiero que se active un numero ala ves por cada interrupcion.(si le doy un pulso a la interrupcion, que se active un "1" en un display, si doy otro pulso, que se active el siguiente numero "2" y asi susesivamente hasta al 99)

si pudieras aportarme algun ejemplo por lo menos del 1 al cinco...graxiaz
 
hola saludos me podrias ayudar con un programa de interrupcion externa en el pic 18f4550 el programa lo quisiera en CSS Compiler.???
quiero hacer un contador del 0 al 99. quiero que se active un numero ala ves por cada interrupcion.(si le doy un pulso a la interrupcion, que se active un "1" en un display, si doy otro pulso, que se active el siguiente numero "2" y asi susesivamente hasta al 99)

si pudieras aportarme algun ejemplo por lo menos del 1 al cinco...graxiaz

hola saludos alguien me puede ayudar con un programa de interrupcion externa en el pic 18f4550 el programa lo quisiera en CSS Compiler.???
quiero hacer un contador del 0 al 99. quiero que se active un numero ala ves por cada interrupcion.(si le doy un pulso a la interrupcion, que se active un "1" en un display, si doy otro pulso, que se active el siguiente numero "2" y asi susesivamente hasta al 99)

si pudieras aportarme algun ejemplo por lo menos del 1 al cinco...graxiaz
 
Atrás
Arriba