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

Temas similares

30/09/2012 #1


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);
 
}
}
12/10/2012 #2


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.
12/10/2012 #3


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?
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.