que mal no logra mostrarme lo que quiero en lcd...creo que estoy haciendo un mal uso de la funcion printf, o es algo que falta en los strings, adjunto el codigo con la simulacion
#include <18f4550.h> //incluimos libreria de pic18f4550
#DEVICE HIGH_INTS=TRUE
#fuses XT,NOWDT,PUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP
# use delay(clock=4000000)//definimos un reloj de 4Mhz
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
//#define use_portd_lcd TRUE
//#define use_portb_kbd TRUE
#include <lcd1.c>
//#include <kbd.c>
#include <input.c>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//incluimos libreria para uso de operaciones en memoria
int hum_max=70,hum_min=30,temp_max=25,temp_min=15,ilum_max=600,ilum_min=500;
int humedad, temperatura, iluminacion;
char cad_rx[5];
char hum_rx[4];
char temp_rx[4];
char ilum_rx[5];
char hum[4];
char temp[4];
char ilum[5];
char cad1[3];
char cad2[4];
char teclado;
int8 cont,i=0,j=0;
int8 bandera=0,bandera1=0,bandera2=0,bandera3=0;
/*#int_RB HIGH
void RB_isr()
{
teclado=kbd_getc();
if(teclado=='#')
{
bandera=1;
disable_interrupts(INT_RDA);
}
}*/
#int_RDA
void RDA_ISR() //interrupcion por recepcion
{
output_high(PIN_A0);
cad_rx[j]=getc();
if (cad_rx[j]=='\n')
{
if(cad_rx[0]=='H')
{
strcpy(hum_rx,cad_rx);
hum_rx[j+1]='\0';
bandera1=1;
}
if(cad_rx[0]=='T')
{
strcpy(temp_rx,cad_rx);
temp_rx[j+1]='\0';
bandera2=1;
}
if(cad_rx[0]=='I')
{
strcpy(ilum_rx,cad_rx);
ilum_rx[j+1]='\0';
bandera3=1;
}
disable_interrupts(INT_RDA);
}
j++;
}
void main () //inicio de programa principal
{
set_tris_a(0b0000000);//configuramos puerto a
output_low(PIN_A0);
output_low(PIN_A1);
// port_b_pullups(TRUE);
lcd_init();
delay_ms(50);
// kbd_init();
enable_interrupts(INT_RDA);
// enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
lcd_putc("\f PROYECTO ");
lcd_putc("\n INVERNADERO ");
delay_ms(2000);
lcd_init();
while (TRUE) //entramos en un ciclo infinito
{
if(bandera1==1)
{
for(i=0;i<strlen(hum)-1;i++)
{
hum[i]=hum_rx[i+1];
}
hum[i]='\0';
humedad=atoi(hum);
lcd_gotoxy(5,1); //posicionamos cursor de lcd
printf(lcd_putc,"H=");//escribimos en lcd
lcd_gotoxy(7,1); //posicionamos cursor de lcd
printf(lcd_putc,"%d",humedad);//escribimos valor de temperatura en lcd
lcd_gotoxy(10,1); //posicionamos cursor de lcd
printf(lcd_putc,"%%");//escribimos en lcd
bandera1=0;
j=0;
output_high(PIN_A0);
enable_interrupts(INT_RDA);
}
if(bandera2==1)
{
for(i=0;i<strlen(temp)-1;i++)
{
temp[i]=temp_rx[i+1];
}
temp[i]='\0';
temperatura=atoi(temp);
lcd_gotoxy(1,2); //posicionamos cursor de lcd
printf(lcd_putc,"T=");//escribimos en lcd
lcd_gotoxy(3,2); //posicionamos cursor de lcd
printf(lcd_putc,"%d",temperatura);//escribimos valor de temperatura en lcd
lcd_gotoxy(5,2); //posicionamos cursor de lcd
printf(lcd_putc,"'C");//escribimos en lcd
bandera2=0;
j=0;
output_low(PIN_A0);
enable_interrupts(INT_RDA);
}
if(bandera3==1)
{
for(i=0;i<strlen(ilum);i++)
{
ilum[i]=ilum_rx[i+1];
}
ilum[i]='\0';
iluminacion=atoi(ilum);
lcd_gotoxy(8,2); //posicionamos cursor de lcd
printf(lcd_putc,"I=");//escribimos en lcd
lcd_gotoxy(10,2); //posicionamos cursor de lcd
printf(lcd_putc,"%d",iluminacion);//escribimos valor de temperatura en lcd
lcd_gotoxy(14,2); //posicionamos cursor de lcd
printf(lcd_putc,"lux");//escribimos en lcd
bandera3=0;
j=0;
output_low(PIN_A0);
enable_interrupts(INT_RDA);
}
/*if(bandera==1)//entramos para usar el teclado
{
cont=0;
while(cont<2)
{
lcd_gotoxy(1,1); //posicionamos cursor de lcd
printf(lcd_putc,"New_H_Min=");//escribimos en lcd
teclado=kbd_getc();
if(teclado!=0&&teclado!='#'&&teclado!='*')//obligamos que se ingrese numero
{
cad1[cont]=teclado;
lcd_gotoxy(13+cont,2);//posicionamos cursor de lcd
printf(lcd_putc,teclado);//escribimos valor de teclado en lcd
cont++;
}
}
cad1[cont]='\0';//ponemos 0 al final para poder convertirlo a entero
hum_min=atoi(cad1); //convertimos a entero
cont=0;
while(cont<2)
{
lcd_gotoxy(1,2); //posicionamos cursor de lcd
printf(lcd_putc,"New_H_Max=");//escribimos en lcd
delay_ms(50);
teclado=kbd_getc();
if(teclado!=0&&teclado!='#'&&teclado!='*')
{
cad1[cont]=teclado;
lcd_gotoxy(13+cont,2);//posicionamos cursor de lcd
printf(lcd_putc,teclado);//escribimos valor de humedad en lcd
cont++;
}
}
cad1[cont]='\0';
hum_max=atoi(cad1);
cont=0;
lcd_init();
while(cont<2)
{
lcd_gotoxy(1,1); //posicionamos cursor de lcd
printf(lcd_putc,"New_T_Min=");//escribimos en lcd
delay_ms(50);
teclado=kbd_getc();
if(teclado!=0&&teclado!='#'&&teclado!='*')
{
cad1[cont]=teclado;
lcd_gotoxy(13+cont,2);//posicionamos cursor de lcd
printf(lcd_putc,teclado);//escribimos valor de humedad en lcd
cont++;
}
}
cad1[cont]='\0';
temp_min=atoi(cad1);
cont=0;
while(cont<2)
{
lcd_gotoxy(1,2); //posicionamos cursor de lcd
printf(lcd_putc,"New_T_Max=");//escribimos en lcd
delay_ms(50);
teclado=kbd_getc();
if(teclado!=0&&teclado!='#'&&teclado!='*')
{
cad1[cont]=teclado;
lcd_gotoxy(13+cont,2);//posicionamos cursor de lcd
printf(lcd_putc,teclado);//escribimos valor de humedad en lcd
cont++;
}
}
cad1[cont]='\0';
temp_max=atoi(cad1);
cont=0;
lcd_init();
while(cont<3)
{
lcd_gotoxy(1,1); //posicionamos cursor de lcd
printf(lcd_putc,"New_I_Min=");//escribimos en lcd
delay_ms(50);
teclado=kbd_getc();
if(teclado!=0&&teclado!='#'&&teclado!='*')
{
cad2[cont]=teclado;
lcd_gotoxy(13+cont,2);//posicionamos cursor de lcd
printf(lcd_putc,teclado);//escribimos valor de humedad en lcd
delay_ms(50);
delay_ms(50);
cont++;
}
}
cad2[cont]='\0';
ilum_min=atoi(cad2);
cont=0;
while(cont<3)
{
lcd_gotoxy(1,2); //posicionamos cursor de lcd
printf(lcd_putc,"New_I_Max=");//escribimos en lcd
delay_ms(50);
teclado=kbd_getc();
if(teclado!=0&&teclado!='#'&&teclado!='*')
{
cad2[cont]=teclado;
lcd_gotoxy(13+cont,2);//posicionamos cursor de lcd
printf(lcd_putc,teclado);//escribimos valor de humedad en lcd
delay_ms(50);
cont++;
}
}
cad1[cont]='\0';
ilum_max=atoi(cad2);
cont=0;
lcd_init();
bandera=0;
enable_interrupts(INT_RDA);
}*/
}
}