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

Temas similares

17/07/2014 #21


Hola a todos, he leído este hilo y es el mismo problema que tengo.
Debo hacer un trabajo para mis estudios, las condiciones son:

1.- Tengo un numero entero y uno decimal(float)
2.- Se deben incrementar al pulsar un botón ( el valor a incrementar no interesa, solo es para visualización de entero y decimal(float))
3.- Con otro botón resetear o dejar en cero.
4.- Cuando se reinicie se debe partir del ultimo valor que se debe guardar en memoria interna del pic.
5.- Hacerlo indefinidamente.

Todo bien (gracias a los ejemplos aquí dejados)
El problema es cuando debo guardar el dato float(decimal) en la eeprom y luego leerlo


Aquí lo hecho hasta el momento



Código:
#include <16f877a.h>
#device  adc = 8 // a 8 bits
#use     delay(crystal = 4MHz)
#include <lcd420.c>

#define pulsador pin_c0 // pulsador para cambiar
#define reset pin_c1 //pulsador para resetear
void main (void)
{
int8 entero;
float decimal;
//leo las memorias
   entero = read_eeprom(0);
  decimal = read_eeprom(0x01);// duda  
lcd_init();                   // Inicializar la pantalla.
    while (true)
   {
      
     if(input(pulsador))
     {
   
   entero=entero + 1.9;             // varia el valor.
   decimal=decimal + 1.1;           // Varia el valor.
          }
            
     if(input(reset))
     {
  
   lcd_init();
   entero=00;             //`pone a cero la cuenta.
   decimal=0;             // pone a cero la cuenta.
          }
      
lcd_gotoxy(1,1);
printf(lcd_putc,"ent=");// imprime ent
lcd_gotoxy(8,1);
printf(lcd_putc,"dec=");//imprime dec
lcd_gotoxy(5,1);
printf(lcd_putc,"%d",entero);//imprime valor en entero
delay_ms(100);
lcd_gotoxy(13,1);
printf(lcd_putc,"%f",decimal);//imprime valor en decimal
delay_ms(100);
      
//aqui debo escribir en memoria

write_eeprom(0,entero);
delay_ms(10);
write_eeprom (0x01,decimal);         
delay_ms(10);
   }
}

¿Podrían ayudarme por favor? (No sé casi nada de programación por no decir nada)

Javier.
17/07/2014 #22
Moderador

Avatar de D@rkbytes

talquino2012 dijo: Ver Mensaje
El problema es cuando debo guardar el dato float(decimal) en la eeprom y luego leerlo

¿Podrían ayudarme por favor? (No sé casi nada de programación por no decir nada)
Utiliza la librería internal_eeprom.c que viene por defecto.

Esa librería tiene funciones para guardar y leer datos float hasta 64 bits:

Por ejemplo: write_float_eeprom(address, float data) y read_float_eeprom(address)

Suerte.
22/07/2014 #23


D@rkbytes dijo: Ver Mensaje
Utiliza la librería internal_eeprom.c que viene por defecto.

Esa librería tiene funciones para guardar y leer datos float hasta 64 bits:

Por ejemplo: write_float_eeprom(address, float data) y read_float_eeprom(address)

Suerte.
Estimado d@rkbytes, le agradezco todo la paciencia y ayuda entregada, así como el programa que me facilito, adjunto lo que me ha resultado hasta el momento, es una incubadora que realiza ;

1.- seteo de temperatura máxima y mínima y las muestra en pantalla
2.- Muestreo de temperatura y la muestra en pantalla
3.- Con pulsador automático, el motor pap funciona cada una hora por 5 min ( aquí los tiempos son menores para simulación)( la señal enable para el motor la asumo siempre uno por eso no esta acá)
4.-- Con pulsador automático abierto se puede hacer funcionar el motor a izquierda o derecha según necesidad
5.- ante corte de energía o reinicio guarda los últimos datos de seteo y tiempo en memoria

Esta de mas decir que es un programa de principiante por lo que se puede depurar, mejorar.

Lo dejo acá por si alguien le sirve, quiere mejorar o modificar, solo les pido que después lo suban

Juan Carlos
Archivos Adjuntos
Tipo de Archivo: rar incubadora ULTIMA VERSION.rar (128,7 KB (Kilobytes), 18 visitas)
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.