Hola:
Yo trabajo con la serie 16F y no es necesario conectar CTS y RTS para el control de flujo. Solamente las patitas 2,3 y 5 del DB9 que son TX,RX y GND.
El control de flujo de datos lo tenes que hacer por software. En mi caso utilizo un buffer de transmisión y otro de recepcion de 8 bytes tranto en PIC como en visual basic. La transmisión al PIC comienza con un caracter de START, luego 5 bytes de datos, el septimo de control STOP y el octavo de CHKSUM. Cuando el PIC recibe los 8 datos verifica que el 1º sea START y el 7º STOP. Luego realiza un calculo de CHKSUM y si todo esta bien envía un byte ACK. El proceso para enviar del PIC al PC es igual.
Si no hay comunicacion o respuesta por algunos segundos, se detiene la transmisión. Si el caracter START o STOP están equivocados es porque la comunicación perdió un byte y estan desfasadas las transmsiones, entonces se transmite del PC a PIC 9 bytes en vez de 8, para que luego de algunas transmisiones coincidan el byte START y STOP en sus lugares correspondientes. Si el START y STOP estan correctos, pero el checksum no, se retransmite un par de veces mas, pero no deben ser demasiadas porque sino hay que informar en la pantalla que hay errores de transmision y detener el proceso.
Otro consejo: el PIC 16F877 y 887 tienen la posibilidad de modificar la memoria FLASH de programa mediante un bootloader. Éste es un pequeño programa de 100 instrucciones cargado al final del la página 3, que nunca se llega a utilizar. El Bootloader arranca con cada reset del programa y verifica que el puerto serie contenga los códigos de arranque para cargar el programa nuevo. Si no hay comunicacion, el bootloader salta a la direccion del programa que estas desarrollando. Este sistema permite utilizar el puerto Serie tanto para Bootloader como para comincar con la PC sin tener que levantar el PIC y reprogramarlo!!!!
Para poder utilizar el bootloader necesitás reiniciar el PIC apagandolo o mandando a masa MCLR. Una solucion sencilla a esto es conectar el pin MCLR a RTS a traves del max232. Si tenes un mouse viejo con ficha DB9, tenes en el mismo cable los cuatro hilos que conectan los pines TX,RX,GND y RTS solucionando el problema de fabricar un cable nuevo
Espero que te sirva mi respuesta, Saludos