hola darck_khronos
para enviar y recibir un string por rs232 te servirian varias instrucciones
para enviar
puts(string) o el printf(string)
para recibir una cadena de datos
valor=getc
valor=getch
valor=getchar
valor=gets // este ultimo creo que necesita un enter al final del string
los datos los puedes esperar con interrupcion por serial o mas simple con un kbhit()
aqui te dejo un pequeño ejemplo de un libro para que te guies
#include <18F2550.h>
#FUSES HS,NOWDT,NOPROTECT,NOLVP
#use delay (clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
#include <LCD.C>
char ch;
#int_rda
void serial_isr() {
ch=getchar();
puts("Recibido"); // enviando string
}
void main()
{
lcd_init();
enable_interrupts(global);
enable_interrupts(int_rda);
while(true) {
printf(lcd_putc, "\n\r Valor %c",ch);
}
}
en este se utilizo gets y kbhit()
#include <18F2550.h>
#FUSES HS,NOWDT,NOPROTECT,NOLVP
#use delay (clock=20000000)
#include <lcd.c>
#include <stdlib.h>
#byte port_c=7
#byte port_a=5
int m=1;
char c;
void menu()
{
printf("\r\nd>> ELECTRONICA\r\n");
}
void main()
{
char gps;
char dato;
strcpy (gps, "pbl");
lcd_init();
set_tris_a(0xff); //configura el pto a de entrada
lcd_putc("\fDato recibido:");
menu();//procedimiento arriba en void menu
while(true)
{
while(kbhit() == 0 )//mientras no se envien datos
{
if(input(pin_a0)==0)
{
while(input(pin_a0)==0);//se queda hasta sulte A0
printf("%d",m);
}
if(input(pin_a1)==0)
{
while(input(pin_a1)==0);//se queda hasta sulte A1
m++;
printf("%d",m);
}
}//
gets(dato);// recibo la cadena desde el pc
c=atof(dato);// conviere la varaible dato en numerica y la almacena en C
lcd_gotoxy(8,2);
printf(lcd_putc,"%d",c);
recuerda que es comunicacion UART y debes configurar tanto el pc como el pic con las mismas caracteristicas de comunicacion (baudios, bit de parada, paridad, bit de datos y control de flujo).
espero haberte ayudado un poco suerte