Saludos!
Qué casualidad, hoy mencionábamos eso en otro post pero referente a tener dos buses i2c.
En efecto cocu, se pueden implementar también varias interfaces seriales. Puedes tener una por hardware y una o varias más por software. Sin embargo es importante recalcar que si implementas la interfaz serial por software no puedes usar interrupción por puerto serie. Aunque por allí recomendaron colocar los pines de la interfaz serial por software entre RB4:RB7 y usar la interrupción por cambio en puerto B.
Bueno pues ya yendo al punto, lo que tienes que hacer es declarar dos o más #use rs232 con su respectiva identificación.
En el proyecto que estoy desarrollando actualmente lo tengo así:
#define Tx PIN_C6
#define Rx PIN_C7
#define Rg PIN_C0
#use delay (CLOCK=20000000)
#use rs232 (STREAM=GPS,BAUD=4800,RCV=Rg)
#use rs232 (STREAM=PC,BAUD=19200,XMIT=Tx,RCV=Rx)
Aquí trabajo con un PIC16F877. Como verás la primera rs232 es por software, y la uso sólo para recibir. La segunda es por hardware y la uso para recepción y transmisión.
Luego cuando quieras enviar o recibir, lo que tienes que hacer es colocar la "STREAM" que corresponda.
Para recibir:
dato=fgetc(STREAM);
Por ejemplo, en mi caso: dato=fgetc(GPS); o dato=fgetc(PC), según el caso.
Para enviar:
fputc(dato,STREAM);
Por ejemplo: fputc(dato,PC);
Esto es bastante sencillo cocu, y funciona de maravilla.
Espero que puedas solucionar tu problema, ya nos contarás.
Ok nos leemos!