hola kain te mando un ejemplo donde muestro en una lcd el voltaje en los primeros 3 analogos del pic estoy utilizando el conversor con sus 10 bits no es lo que necesitas pero puedes modificarlo para que envie al puerto serie.
////////////////////////////////////////////////////////////////////////////////
////programa para visualizar el voltaje en los puertos analogos A0,A1,A2 en una lcd
////////////////////////////////////////////////////////////////////////////////
#define (__PCH__)
#include <18f452.H>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)//esto no lo tenia pero debe funcionar
#use standard_io(b)
#use standard_io(c)
#use standard_io(d)
#include <flex_lcd.c>
#define sig 0x06
#define clear 0x01
#define cursor_no 0x0C
#define interfaz 0x38
#define lin1 0x85
#define ren1 0x80
#define ren2 0xC0
#define m 0.0048828125 // pendiente segun ecuacion de la recta
// 5/1024=m
float voltaje;
int i,lcd_pos;
int16 ana;
///////////////////////////////////////////////////////////////////////////////
////subrutina que ejecuta la conversion analoga, hace el calculo del voltaje
////y envia el resultado a la lcd
///////////////////////////////////////////////////////////////////////////////
void envia_analogo_lcd(byte canal)
{
delay_ms(10);
lcd_gotoxy(1,1);
delay_ms(10);
lcd_putc("voltaje en a0_a2");
set_adc_channel(canal);
delay_us(10);
ana = read_adc();
voltaje = m * ana; //ejecuta ecuacion
delay_ms(10);
lcd_gotoxy(lcd_pos,2);
delay_ms(10);
printf(lcd_putc,"\%f",voltaje);
delay_ms(10);
///////aqui podrias agregar algo como putc(ana) o, printf("\%f",voltaje); pruebalo que seguro te sirve no olvides agregar la funcion rs232 al principio
}
///////////////////////////////////////////////////////////////////////////////
////bloque principal
///////////////////////////////////////////////////////////////////////////////
void main()
{
lcd_init(); //inicia la lcd
setup_port_a( ALL_ANALOG ); //todo el puertoA analogo
setup_adc(ADC_CLOCK_internal ); //reloj interno del conversor
do{
lcd_pos=1;
for (i=0;i<=2;++i){
envia_analogo_lcd(i);
lcd_pos=lcd_pos+6;
}
}while(true);//Bucle infinito
}