Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

22/07/2012 #1


Contador con PIC16F877A y display
Hola a todos y de ante mano muchas gracias por sus respuestas, estoy trabajando con un pic 16f877a y ya tengo todo lo concerniente a la programación para un contador (logrado gracias a los aportes de este grandioso foro), el problemas que tengo es como hacer qUE este contador empiese a contar (valga la redundancia) mientras mantengo presionado un pulsador y cuando lo suelte deje de hacerlo. Toda la programacion esta hecha en mikroC.

GRACIAS..
22/07/2012 #2


Intenta usar un while().

saludos
25/07/2012 #3

Avatar de danning

hola, es un solo display y es de 9 segmentos?, si es asi mira, entre el pic y el dislpay usa un decodificador bcd a display, si el display es de anodo comun usa un 74ls47 y si es de catodo comun un 74ls48, entonces creas una rutina, yo uso pcw compiler, en c, seria algo asi;

int a; //variable

while(true)
{
if(input(pin_d0)) // en este pin estara el pushbotton, cambias el puerto a tu gusto
{
output_b(a); // esta sera la slaida, donde se conecta el decodificador
delay_ms(1000); // el tiempo a tu gusto
a++;
if(a>=10)
{
a=0;
}
}
25/07/2012 #4


muchas gracias cargamsoft, danning, voy a implementar sus sugerencias. Es un contador de 0 a 9 con display de 7 segmentos
28/07/2012 #5


Fijate, si no lo podes resolver yo te ayudo, estoy haciendo algo parecido y tambien trabajo con mikroC. Aunque lo uqe te dijo danning deberia andar tranquilo.
28/07/2012 #6

Avatar de ilcapo

me parece que hay que usar la EEPROM del pic para almacenar el nuevo numero cada vez que pulsamos el switch ( o lo mantenes apretado) asi cuando soltas el pulsador queda en ese numero y no se hace cero nuevamente , no se que opinara el resto

tienen algun ejemplo en C para usar la EEPROM ? con eso ya podriamos armar este contadorcito
28/07/2012 #7

Avatar de Gudino Roberto duberlin

Amigo ilcapo, en caso de necesitar una remanencia en el dato ante un corte de suministro electrico, es logico utilizar registros en EEPROM, de lo contrario, solo se almacena en un registro volatil de la RAM.
28/07/2012 #8

Avatar de ilcapo

la verdad que tenes razon no se porque se me ocurrio lo de la eeprom!! igualmente me dieron ganas de usar la EEPROM con C jaja XD! ( siempre lo hice con assembler pero es muy tedioso) si alguien tiene un ejemplito para ver como se hace con C desde ya muchas gracias , saludos !
28/07/2012 #9

Avatar de danning

ilcapo, es mu sencillo, en mi compilador yo lo uso asi, para guardar un valor que no pase 8 bits se escribe write_eeprom(direccion, valor); por ejemplo write_eeprom(0x00,1) y para leer es read_eeprom(direccion) es decir, tu guardas un dato que quieres que permanesca aunque la alimentacion halla sido desconectada y cuando lo lees le das una variable para ello; a=read_eeprom(0x00), la variable "a" tendra el valor que esta en esa dirrecion , que con anterioridad guardamos un 1, espero que te sea util,
28/07/2012 #10

Avatar de ilcapo

Ok gracias aca va un programita facil para manejar la eeprom: grabo un numero ( de una tabla) en la eeprom y luego leo la eeprom y muestro el valor guardado por el puerto C del pic , hasta aca funciona OK , adjunto programa y simulacion en proteus

para seguir con el contador que queria el amigo jcosu quiero habilitar las resistencias de pullups del puerto B para hacer una rutina de interrupciones pero cuando coloco la instruccion port_b_pullups(TRUE); nunca pasan a estado logico 1 los pines del puerto B!!! , lo pueden ver a esto en la simulacion en proteus que adjunto, no se porque no se habilitan los pullups! que raro ! en otros programas con esa instruccion se habilitaban ! a ver si alguien ve el error que yo debo estar con sueño ja XD!

saludos!
Archivos Adjuntos
Tipo de Archivo: rar contador_1.rar (36,4 KB (Kilobytes), 142 visitas)
28/07/2012 #11

Avatar de danning

amigo, mira la simulacion, esta trabajando perfecto si necesitabas dormir
Imágenes Adjuntas
Tipo de Archivo: png simulacion.png (218,5 KB (Kilobytes), 52 visitas)
29/07/2012 #12

Avatar de ilcapo

RECORCHOLIS !!! asi me sale a mi :


tendré que reinstalar el Proteus ??
Imágenes Adjuntas
Tipo de Archivo: jpg imagen.jpg (144,5 KB (Kilobytes), 26 visitas)
29/07/2012 #13

Avatar de ilcapo

ya solucione el problema tenia desmarcado tools -> Real time annotation

continuando con el contador de 0 a 9 ahora me salta un nuevo problema! a lo mejor estoy configurando mal las interrupciones por RB4 a RB7 ?? coloco un pulsador en RB4

les paso el programa y simulacion en proteus
Archivos Adjuntos
Tipo de Archivo: rar prueba_20.rar (18,8 KB (Kilobytes), 79 visitas)
14/03/2014 #14


Camaradas.

Necesito un poco de ayuda. Quiero programar un contador con PIC16F877A.

Este es mi código, y me aparece un error.

"Undeclared identifier 'unidades'"
"Undeclared identifier 'decenas'"

¿Podrían ayudarme? De antemano, muchas gracias.

Código:
short numero[ ] = { 0x3F, 0x06, 0x1B, 0x4F, 0x66, 0x6D, 0x5E, 0x07, 0x7F, 0x67 };



void main ()                       //Programa principal

{
     TRISB=0;                         //Configuración de puertos
     TRISC=0;
     unidades = decenas= 0;           //Inicialización de variables


while(1)

{                          //Programa de usuario
PORTB=numero [decenas];
PORTD.F0=1;                           //Habilita display de decenas
delay_ms(10);
PORTD.F0= 0;
PORTB =numero [unidades];             //Envía unidades
PORTD.F1=1;                           //Habilita display de decenas
delay_ms(10);
PORTD.F1=0;

PORTD.F2=1;                           //Habilita display de centenas
delay_ms(10);
PORTD.F2=0;

PORTD.F3=1;                           //Habilita display de unidades de mil
delay_ms(10);
PORTD.F3=0;

unidades++;                           //Incrementa unidades
if (unidades>'9')
{
   unidades='0';                      //Reinicia unidades
   decenas++;                         //Incrementa decenas
   if(decenas>'9')
   {
    decenas='0';  //Reinicia decenas
         }

       }
   }
}
14/03/2014 #15

Avatar de ByAxel

falta declarar las variables 'unidades' y 'decenas'... se hace como la variable número pero sin [] y del tipo correcto byte o char... ver help de mikroc.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.