Comunicación serial RS232 y LCD en pic 18f4550

Tengo que encender un led, enviando la instrucción desde el puerto serial y desplegar la instrucción de led1 on (para encender el led) en la lcd pero no me funciona ni la comunicación serial ni la lcd, en la simulación todo esta perfecto pero al hacerlo físicamente nada mas no funciona use la librería <lcdd.c> para poder usar la lcd en el puerto D de mi pic.

Código:
#include <18f4550.h>
#include <string.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4M)
#use rs232(rcv=pin_c7, xmit=pin_c6, baud=9600,bits=8,parity=n)
#include <lcdd.c>
//#define LCD_DATA_PORT getenv("SFR:PORTD")
//#define use_port_lcd TRUE

#define buf_length 32
int buf[buf_length],str[buf_length],str_flag=0,i=0;


#int_rda
char a[32]={'l','e','d','1',32,'o','n','\0'};
char b[32]={'l','e','d','1',32,'o','f','f','\0'};
char c[32]={'l','e','d','2',32,'o','n','\0'};
char d[32]={'l','e','d','2',32,'o','f','f','\0'};
char e[32]={'l','e','d','s',32,'o','n','\0'};
char f[32]={'l','e','d','s',32,'o','f','f','\0'};
int sal=0;
void rcv_data()
{

while(sal==0)
{
buf[i]=getchar();

if(buf[i]==0x0d)
{
buf[i]='\0';
i=0;
lcd_putc('\f');

sal=1;
}
if(sal==0)
{
i++;}
}
}

led()
{

if(strcmp(buf,a)==0)
{
output_b(0x01);
}
if(strcmp(buf,c)==0)
{
output_b(0x02);
}
if(strcmp(buf,e)==0)
{
output_b(0X03);
}


if(strcmp(buf,b)==0)
{
output_low(pin_b0);
}
if(strcmp(buf,d)==0)
{
output_low(pin_b1);
}
if(strcmp(buf,f)==0)
{
output_b(0X00);
}



}
main()
{
lcd_init();
lcd_putc('\f');
enable_interrupts(global);
enable_interrupts(int_rda);

while(1)
{
lcd_putc('\f');
rcv_data();
led();
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",buf);
sal=0;
lcd_gotoxy(1,1);
 
}
}
 
Última edición por un moderador:
En tu programa no veo la declaracion de puertos. Ademas te recomienda usar una funcion para inicializar dichos puertos. Tambien encuentro un error en la directiva de la LCD, seria #include<lcd.c>. checalo y me dices ok.
 
El #include<lcdd.c> lo uso para establecer el puerto D como predeterminado al momento de usar mi lcd, pero no entiendo a que te refieres con declaración de puertos seria lo de ahm definir si cada puerto es entrada o salida al inicio del programa?
 
Atrás
Arriba