#include <18F2550.h>
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,CPUDIV2,VREGEN,NOPBADEN,PLL5
#use delay(clock=20000000)
#include <lcd_4.c>
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,STREAM=BLUE)
#use standard_io(B)
#int_RDA
void RDA_isr(){
char recibido=' ';
recibido=' ';
if(kbhit()){
recibido=getchar();
output_high(PIN_A4) //Dato recibido
switch (recibido)
{
case 'A':
output_high(PIN_A0);
lcd_putc("\fRecibido...A");
break;
case 'B':
output_high(PIN_A1);
lcd_putc("\fRecibido...B");
break;
case 'C':
output_high(PIN_A2);
lcd_putc("\fRecibido...C");
break;
case 'D':
output_high(PIN_A3);
lcd_putc("\fRecibido...D");
break;
}
}
}
void main()
{
lcd_init(); //Iniciamos LCD
lcd_putc("\fRecibiendo..."); //Escribimos en la LCD
enable_interrupts(Global);
enable_interrupts(INT_RDA);
for (;;){}
}
#int_RDA
void RDA_isr()
{
recibido=' ';
recibido=getchar();
}Respecto a el PLL,creo, que la activación de HSPLL es para decirle que el cristal es mayor de 4mhz y el fuse PLL es para dividir la frecuencia del cristal en este caso 1 vez y se quedaría en 20MHz, repito creo.
for (;;)
{
if(kbhit()){
recibido=getchar();
output_high(PIN_A4); //Dato recibido
switch (recibido)
{
case 'A':
output_high(PIN_A0);
lcd_putc("\fRecibido...A");
break;
case 'B':
output_high(PIN_A1);
lcd_putc("\fRecibido...B");
break;
case 'C':
output_high(PIN_A2);
lcd_putc("\fRecibido...C");
break;
case 'D':
output_high(PIN_A3);
lcd_putc("\fRecibido...D");
break;
}
}No me gustaba usar el kbhit, que por lo que he visto en internet da problemas, ire actualizando.