Autor Tema: incremento y visualizaciòn  (Leído 5135 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
incremento y visualizaciòn
« en: 28 de Julio de 2008, 16:55:08 »
Solucionado el tema de la variable tal cual lo dijieron uds. Muchas gracias
Estoy tratando de hacer  un programa muy simple  que muestre el incremento de una variable mediante un lcd cada vez que por uno de los pines de un  puerto ( el b por ejemplo) del pic se presente un  estado alto de tensiòn (5 volts). Cuando lo compilo me arroja una serie de errores que no logro corregir. por favor dejo el programa para que me digan los errores que estoy cometiendo y corregirlos.
Muchas Gracias.

#include <16f877a.h>  //PIC utilizado         
#fuses XT,NOWDT,NOPROTECT,PUT  //Configuramos los fuses
#use delay (clock=4000000)     //Oscilador a 4Mhz
#use fast_io(b)   //Optimizamos E/S del PORTB
#include <lcd.c>
long int pulsos=0 //declaro la variable  pulsos de 16 bit y la inicializo

//------Programa principal-----
void main(void)
{set_tris_b(0xfe);//Pin RB1 del puerto B como salida, el resto como entrada
 disable_interrupts(global);// Toda las interrupciones desactivadas
do{
   if(input(Pin_b1));  // si se presenta un alto en el pin B1 del puerto
puslos++ // incremento la variable
lcd_init();
printf(lcd_putc,"pulsos= %lu" //presento la variable por el lcd
}while(true); //cicleo infinito
}

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: incremento y visualizaciòn
« Respuesta #1 en: 28 de Julio de 2008, 17:08:25 »
void main(void)
{lcd_init();
set_tris_b(0xfe);//Pin RB1 del puerto B como salida, el resto como entrada
 disable_interrupts(global);// Toda las interrupciones desactivadas
do{
   if(input(Pin_b1));  // si se presenta un alto en el pin B1 del puerto
puslos++ // incremento la variable
delay_ms(500);//Para que no incremente tan rápido
lcd_gotoxy(1,1);//Para escribir siempre en la misma posición
printf(lcd_putc,"pulsos= %lu" //presento la variable por el lcd
}while(true); //cicleo infinito
}

Prueba con esas variaciones del código

cuentanos que tal
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: incremento y visualizaciòn
« Respuesta #2 en: 28 de Julio de 2008, 18:48:39 »
Gracias por la respuesta. Ahora, cuando compilo me aparecen estos errores.

 *** Error 76 "inc.c" Line 13(1,9): Expect ;
*** Error 51 "inc.c" Line 16(1,2): A numeric expression must appear here


la línea 13 es:   delay_ms(500);//Para que no incremente tan rápido
 y la 16 es :     }while(true); //ciclo infinito

Te agradeceré las respuestas.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: incremento y visualizaciòn
« Respuesta #3 en: 28 de Julio de 2008, 18:55:29 »
en donde esta pulsos++ aun no le has puesto el ; acuerdate que despues de cada sentencia, debe de llevar el ; (punto y coma)
printf(lcd_putc,"pulsos= %lu"); en esta linea no pusist el ) y ; saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: incremento y visualizaciòn
« Respuesta #4 en: 28 de Julio de 2008, 19:26:55 »
OK, scientist, no me había percatado de eso. Los errores son menos ahora. Solamente faltaría salvar este :

cuando compilo resulta esto:    Error 116 "inc.c" Line 15(30,31): Printf variable count (%) does not match actual count  ::
 
la línea 15 es:                     printf(lcd_putc,"pulsos= %lu"); //presento la variable por el lcd

gracias y un saludo.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: incremento y visualizaciòn
« Respuesta #5 en: 28 de Julio de 2008, 19:52:46 »
Falta poner la variable:

printf(lcd_putc,"pulsos= %lu"); //presento la variable por el lcd

Sustitúyelo por:

printf(lcd_putc,"pulsos= %lu",puslos); //presento la variable por el lcd

Bueno supongo que quisiste poner "pulsos"

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: incremento y visualizaciòn
« Respuesta #6 en: 28 de Julio de 2008, 20:46:13 »
0 ERRORES, 0 WARNING
AHORA VIENE EL MOMENTO DE LA VERDAD, VERE SI FUNCIONA EL HARD.
HASTA OTRA CONSULTA Y MUCHAS GRACIAS.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: incremento y visualizaciòn
« Respuesta #7 en: 30 de Julio de 2008, 19:57:37 »
Nuevamente en línea. Todo bien, el programa está andando  solo que el incremento es automático y debería de hacerlo solo cuando un nivel de 5 volts aparezca en el PIN B1. Que puede estar sucediendo. Tengo conectado un micropulsador al pin B1 y no le lleva el apunte. Desde ya muchas gracias por su colaboración.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: incremento y visualizaciòn
« Respuesta #8 en: 30 de Julio de 2008, 20:12:06 »
El error es de libro:

if(input(Pin_b1));  // si se presenta un alto en el pin B1 del puerto
puslos++ // incremento la variable

Hay que sustituirlo por:

if(input(Pin_b1))  // si se presenta un alto en el pin B1 del puerto
puslos++; // incremento la variable

Fíjate donde va el punto y coma.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: incremento y visualizaciòn
« Respuesta #9 en: 30 de Julio de 2008, 20:29:18 »
Persiste el conteo automático.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: incremento y visualizaciòn
« Respuesta #10 en: 30 de Julio de 2008, 20:33:23 »
¿Puedes poner todo el programa?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: incremento y visualizaciòn
« Respuesta #11 en: 30 de Julio de 2008, 20:52:10 »
Creo que encontre el error que estoy cometiendo en el hard. El pin tiene que tener una conexión pull up? . Es decir mediante una R tiene que ir a 5volts. cuando lo mando a masa al pin cuenta? O itene que estar permenente en masa. y cuando lo saco de ese estado cuenta. Algo de eso debe ser. Te paso el programa .
 #include <16F877.h>
 #fuses HS,NOWDT,NOPROTECT,NOLVP
 #use delay(clock=20000000) 
 #include <lcd.c> 
 long int pulsos=0;
 void main(void)
{lcd_init();
set_tris_b(0xfe);//Pin RB0 del puerto B como salida, el resto como entrada
 disable_interrupts(global);// Toda las interrupciones desactivadas
do{
   if(input(Pin_b1)){  // si se presenta un alto en el pin B1 del puerto
pulsos++;
}//incremento la variable
delay_ms(500);//Para que no incremente tan rápido
lcd_gotoxy(1,1);//Para escribir siempre en la misma posición
printf(lcd_putc,"pulsos= %lu",pulsos); //presento la variable por el lcd
}while(true); //ciclo infinito
}

Saludos

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: incremento y visualizaciòn
« Respuesta #12 en: 30 de Julio de 2008, 20:56:17 »
Efectivamente hay que poner una resistencia (10K) a +5V y a la patilla de RB0, al mismo tiempo ponemos un pulsador entre esta patilla y masa. De esta forma nos aseguramos que cuando no está apretado el pulsador tenemos +5V en RB0 y que cuando lo pulsamos se pone a masa o a 0V que es lo mismo.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: incremento y visualizaciòn
« Respuesta #13 en: 31 de Julio de 2008, 16:47:48 »
Se podrìa realizar el incremento de esta variable cuando haya un cambio de 0 a 5volts ( es decir por un flanco positivo ) de ser asì, que funciòn serìa.
Muchas gracias

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: incremento y visualizaciòn
« Respuesta #14 en: 02 de Agosto de 2008, 21:07:07 »
Hola.

Se podria usar las interrupciones, la de RB0 vendria bien.

Saludos
El papel lo aguanta todo


 

anything