I am looking at a project involving 4 MIDI interfaces (both in & out). MIDI is a 31250bps NRZ comms scheme. As well as the I\O there are quite a few other things going on such as routing of the messages, ADCing of knobs and a possible USB interface down the track. I can't foresee any problems with 4 outputs, you could simply have them synchronised. You'd need a couple of extra instructions to get the 4 bits as a nibble, but if you had one nibble of a port as in and the other as out you could simply write to the whole port without effecting input. I can't foresee any problems with this. In the case that other port pins were used as ouputs you would need to read, AND, OR and write, still not too bad. 31250bps = 32us\bit, on a 20MHz (5MIPS) PIC that's 160 instructions\bit. Unlesss the reciever latched the data on the rising edge of the clock, I can't see any problems, I should really be able to be as much as 20 instructions late in writing the data with no problems, as long as I don't lose time. The main problem is 4 channels of MIDI in. In theory I think it should just about be possible. The main problem is keeping the timing. I could either poll the 4 inputs or have interrupt on falling edges (Stop bit -> start bit). Interrupts are a bit slow and nondeterministic, at least with 4 external interrupts (incoming start bit) and 4 internal interrupts (4 outbound channels). By synching the outputs and having only 1 internal interrupt it gets better. But I still don't have a lot of leniency in the external interrupt response. I would have to have a very efficent method of quickly noting the timing of that channel for subsequent polling. The other problem with external interrupts is I have to keep disabling them for the data bits or else I will get extra interrupts due to falling edges in the data. However straight polling implies a fair bit of logic to determine if the values changed and if it has changed what that means (start, data, stop, noise, etc). The other options are of course external UARTs or a Scenix. I have investigated external UARTs but have yet to find a suitable one I can actually get here in Australia. The MAX3100 is pretty good, nice and small, the only problem is sourcing them here. I have yet to find an Australian supplier stocking them and Digikey doesn't have them in their catalogue. I can get them through the Maxim small orders but the price is pretty poor (they're charging more than digikey for 1-25) and I'm up for US$50 shipping. Apart from that the only UARTs I've seen are the National 1655x series. I can get the 16550 from Dick Smith but at AU$20ea, I can get 4 16F84's for less and have 'intelligent' UARTs (or DUARTs). I am yet to find an australian stockist of the 16552 DUART, and it's PLCC only which I'd rather avoid. And, even the MAX3100 is pretty innefficient in many ways. I don't need flow control or anything just RX and TX. Yet I have to pay for, and use board space for these features. In terms of Scenix's, they are in many ways an attractive alternative. My main problem with them is lack of experience and their sensitivity. I'm not exactly a PIC expert (and there pretty similar) so the sensitivity is more of an issue (particularly in relation to my poor electronics knowledge). Has anyone implemented multiple UARTs in a single PIC? Anyone think it'd be possible? Anyone suggest an alternative external UART? Thanks, Tom.