Hola marqueses
He estado haciendo el programa, y al final e realizado con la ayuda de un compañero esto:
#include <16f876A.h>
#device ADC=10
#fuses NOPROTECT,NOCPD,NOLVP,NOWDT,XT
#use fast_io (A)
#use fast_io (B)
//#use fast_io (C)
#use delay(clock=4000000)
#include <lcd2.c>
#include <ds1820.h>
//#include <teclado.c>
#include <kbd2.c>
float minimo;
float maximo;
char tecla;
int cursor;
char nu;
char MAX1;
char MAX2;
char MIN1;
char MIN2;
char c;
int i;
float valor_introducido_maximo()
{
for(i=0;i<2;i++)
{
do
{
tecla=kbd_getc();
delay_ms(30);
}
while(tecla==0);
if(tecla=='0'||tecla=='1'||tecla=='2'||tecla=='3'||tecla=='4'||tecla=='5'||tecla=='6'||tecla=='7'||tecla=='8'||tecla=='9')
nu=tecla-48;
if (cursor==0)MAX1=nu;
if (cursor==1)MAX2=nu;
cursor++;
if (cursor==2) cursor=0;
}
return(tecla);
}
float valor_introducido_minimo()
{
for(i=0;i<2;i++)
{
do
{
tecla=kbd_getc();
delay_ms(30);
}
while(tecla==0);
if(tecla=='0'||tecla=='1'||tecla=='2'||tecla=='3'||tecla=='4'||tecla=='5'||tecla=='6'||tecla=='7'||tecla=='8'||tecla=='9')
nu=tecla-48;
if (cursor==8)MIN1=nu;
if (cursor==9)MIN2=nu;
cursor++;
if (cursor==10) cursor=8;
}
return(tecla);
}
void main()
{
lcd_init();
delay_ms(100);
SETUP_ADC_PORTS(NO_ANALOGS);
set_tris_a(0x3F);
set_tris_b(0x00);
lcd_gotoxy(1,1);
printf(lcd_putc,"Introduzca T Minimo\n");
//Tecla_pulsada();
//tecla=kbd_getc();
minimo=valor_introducido_minimo();
lcd_enviar(LCD_COMANDO,LCD_CLEAR);
printf(lcd_putc,"T Minimo = %f",minimo);
delay_ms(1000);
lcd_enviar(LCD_COMANDO,LCD_CLEAR);
printf(lcd_putc,"Introduzca T Maximo\n");
//Tecla_pulsada();
//tecla=kbd_getc();
maximo=Valor_introducido_maximo();
lcd_enviar(LCD_COMANDO,LCD_CLEAR);
printf(lcd_putc,"T Maximo= %f",maximo);
delay_ms(1000);
lcd_enviar(LCD_COMANDO,LCD_CLEAR);
while (1)
{
DS18S20_Convert_T(); //Obtiene la temperatura del DS18S20
Temp=make16(DS18S20_Buffer[1],DS18S20_Buffer[0]);//Lee el valor de 16 bits de la temperatura
if(bit_test(DS18S20_Buffer[1],7)) //Si es negativo...
{
Temp=~Temp+1; //Complementa a 2
Temperatura=Temp*-0.5; //Ajusta la parte fracionaria
}
else
Temperatura=Temp*0.5; //Ajusta la parte fraccionaria
lcd_enviar(LCD_COMANDO,LCD_CLEAR);
lcd_gotoxy(1,1);
printf(lcd_putc,"TEMP: %3.1f ", temperatura);
lcd_putc(223);
lcd_putc("C ");
lcd_gotoxy(1,2);
if (temperatura<=minimo)
{
printf(lcd_putc,"Frio! Calentando");
output_high(PIN_C5);
output_low(PIN_C6);
output_low(PIN_C7);
}
else if (temperatura>=maximo)
{
printf(lcd_putc,"Caliente!Enfriar");
output_low(PIN_C5);
output_high(PIN_C6);
output_low(PIN_C7);
}
else
{
printf(lcd_putc,"Temperatura OK ");
output_low(PIN_C5);
output_low(PIN_C6);
output_high(PIN_C7);
}
}
}
Lo que me pasa ahora, es que le meta le valor que le meta en el teclado, no salen los valores que introduzco por el teclado, si no que salen 48 o 53... yno tengo ni idea de porque; creo que puede ser que las variables MAX1 y MAX2 las tego que juntar en una para iguyalarlo a a el valor de tecla, para que haga la conversion a decimal y asi sacar el valor que introduzco.....
Igual me he hecho un lio... no se
un saludo