Erik Reikes wrote: ..... >I think the only thing you really have to worry about with your solution is >your 19200 code interrupting and causing timing skew in your software uart. > The key here, as is always the case, is to keep your hardware uart >interrupt handler short and sweet. Push the byte into a FIFO, clear >interrupts and get out of dodge. Using the TMR1 for timing the software >uart is a good idea as this keeps your max latency to whatever length your >19200 int. routine is (plus latency). I wouldn't try this with anything >less than a ~4Mhz PIC. > An alternative method - you may not wish to look at - is to emulate what Scenix does in their "Virtual Peripherals". They have a periodic timer interrupt occurring at a high rate, some multiple of the max buadrate, and inside the ISR they read all of the RX pins and service all of the TX pins. Everything is queued up, and countdowns are used for different baudrates. They can handle up to 8 virtual UARTs this way. With this scheme, you would probably forgo using the internal PIC UART. Scenix code can be downloaded at: http://www.scenix.com cheers, - Dan Michaels Oricom Technologies jhttp://www.sni.net/~oricom ===========================