Mira, yo de basic ni papa... pero te comento que es lo que he hecho yo en un proyecto donde entra en juego comunicación serie a través de una interrupción.
Yo he usado las señales RTS (request to send) y CTS (clear to send), osea, controlo el flujo de datos a través de estas dos señales.
Bien, te explico... La señal RTS del pc irá a la interrupción, con las resistencias de pull-up internas activas, ya que debe de estar a nivel alto normalmente. O colocar una pull-up externa, como veas. Una vez que el PC quiera comunicarse se pondrá a nivel bajo y entrará en la interrupción. Entonces escribes desde el pic sobre la señal CTS del puerto, poniéndola a nivel bajo, indicando así que estás listo. Y a recibir... Recibes un dato, y dejas como estaba (nivel alto) el pin CTS del PIC... y sigues recibiendo hasta el final. Cuando acabes saldrá de la interrupción... y vuelta a esperar.
En tu caso, como en el mío, veo que la trama es algo fijo. Osea, recibes un dato, haces eco y se acabo... a esperar un nuevo envío. Si es así esto funcionará. Lo mejor es que te montes tu propio protocolo. Osea, el primer bit por ejemplo para indicar comienzo de comunicación. El segundo el número de datos que vas a enviar. Luego los datos y al final un simple CRC, que si quieres te explico uno muy simple que funciona bien.
Por ejemplo: # 5 45 255 3 5 57(<-CRC)
También puedes usar un separador entre bytes, por ejemplo |
Sería: #|5|45|255|3|5|57|(<-CRC)
Esto sobre todo si usas el hiperterminal para recibir, que si lo haces en ASCII es complicado luego saber donde empieza un numero y donde acaba para empezar el otro. Si te fijas en la primera trama, quita los espacios que he puesto para que diferencies cada número y ahora dime cual es cual.... imposible verdad. Por eso, en ese caso es mejor poner un separador.
Espero no haberme equivocado en nada... lo hago medio de memoria.
Mira esta página donde te describen cada pin:
http://juandeg.tripod.com/conectordb9.htmSuerte!!
PD: se me olvidaba!. No olvides colocar el max232 (mejor el max233), que adecua los niveles, pero además los invierte. Esto último es importante, por lo que te explico arriba, los niveles a los que se crea la interrupción, al que hay que contestar...