Mira el programa tiene 1500 lineas pero lo acabo de probar con uno solo con la interupcion RDA y tampoco funciona
Asi Funciona
#include <18F452.h>
#device ADC=10
#use delay(clock=4000000)
#use i2c(Master, SDA=PIN_C2, SCL=PIN_C3)
#use rs232(baud=9600,xmit=PIN_C0,rcv=PIN_C1)//,invert)//RESTART_WDT)
#fuses XT, NOPROTECT, PUT, NOWDT, BROWNOUT, NOLVP, NOCPD, NOWRT
#include <lcd_4x20.c>
#include <ds1307.h>
#include <stdlib.h>
unsigned int opcion;
void main()
{
lcd_init();
while(true) {
opcion = getc();
lcd_gotoxy(1,1);
if(opcion == "1")
printf(lcd_putc,"1111"

;
else if(opcion == "2")
printf(lcd_putc,"2222"

;
}
}
Asi NO Funciona
#include <18F452.h>
#device ADC=10
#use delay(clock=4000000)
#use i2c(Master, SDA=PIN_C2, SCL=PIN_C3)
#use rs232(baud=9600,xmit=PIN_C0,rcv=PIN_C1)//,invert)//RESTART_WDT)
#fuses XT, NOPROTECT, PUT, NOWDT, BROWNOUT, NOLVP, NOCPD, NOWRT
#include <lcd_4x20.c>
#include <ds1307.h>
#include <stdlib.h>
unsigned int opcion;
#INT_RDA
rda_isr() {
opcion = getc();
}
void main()
{
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
lcd_init();
while(true) {
lcd_gotoxy(1,1);
if(opcion == "1")
printf(lcd_putc,"1111"

;
else if(opcion == "2")
printf(lcd_putc,"2222"

;
}
}