Hola que tal,antes que nada feliz año para todos!!!!.Me engancho en este tema por que mi pregunta va relacionada a algo parecido .Estoy haciendo un control de temperatura con 3 sensores lm35 ,los sensores los leo perfectamente y los tengo representados en float, hasta aca ningún problema.
En el programa tengo un menu donde hago un ajuste por cada sensor para que me accione un relay cuando la temperatura me llegue a un valor maximo y uno para un valor minimo, este valor lo voy incrementando y decrementando con pulsadores y luego los guardo en memoria,y aca esta el problema en pantalla me sale 0.0 y ni incrementa ni decrementa , probe pasarlos a int y si funciona.Que estoy haciendo mal ? adjunto parte del codigo para explicarme mejor
Configuracion inicial y variables :
#include <16f876a.h>
#device *=16
#device adc=10
#use delay(clock=4000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,BROWNOUT,NOCPD,NOWRT
#define LCD_ENABLE_PIN PIN_B5 ////
#define LCD_RS_PIN PIN_B6 ////
#define LCD_RW_PIN PIN_B7 ////
#define LCD_DATA4 PIN_B4 ////
#define LCD_DATA5 PIN_B3 ////
#define LCD_DATA6 PIN_B2 ////
#define LCD_DATA7 PIN_B1
#include <lcd.c>
#include <internal_eeprom.c>
#use fast_io(B)
#use fast_io(c)
#use fast_io(a)
float grados1,grados2,grados3;
float Tmin1=0,Tmax1=0,Tmin2=0,Tmax2=0,Tmin3=0,Tmax3=0;
Una de las funciones que me hace la falla :
void ajuste1_Tmax()
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Ajuste Sensor N1\n Tmax %01.1f ",Tmax1);
if (input(pin_c5)) // Boton en C4
{
delay_ms(200); // antirebote
Tmax1+=0.5; // incremento
}
if (input(pin_c6))
{
delay_ms(200);
Tmax1-=0.5;
}
if (input(pin_c7))
{ delay_ms(50);
while(input(pin_c7));
write_float_eeprom(10,Tmax1); // escribe en la memoria
delay_ms(15);
Tmax1=read_float_eeprom(10);
delay_ms(15);
lcd_gotoxy(1,2);
lcd_putc("Tmax1 Memorizado " ) ;
delay_ms(2000);
}
}
Les agradeceré alguna ayudita .
Saludos!!!!
PD en la simulacion en proteus funciona ,pero cuando lo grabo en el pic no