One possible solution is to use tri-state 8-bit bus transceivers at each of the 4 destinations or sources. You can use 4-bit magnitude comparators at each destination to compare a bus address to the destination address, and use the address==address to enable the transceiver. This supports 16 addresses. This requires a bus with 8 data lines, 4 address lines, and one flow control line, to control the data direction of the selected transceiver. This method is definitely bulkier and less elegant than a 2 wire I2C bus, but your software winds up being incredibly simple, at least if each slave device is either always an input or always an output. The software in a slave device is just reading or writing to its 8 pins, and can be oblivious to the outside world. No need to perform some communication task every few uSecs. The relevant parts are DM74LS85 and DM74LS245. Note that you will need to invert the A==B output from the magnitude comparator before feeding it into the transceiver. ---------- > From: H.P. de Vries > To: PICLIST@MITVMA.MIT.EDU > Subject: MUX > Date: Friday, February 13, 1998 8:28 PM > > Does anyone know of a Bidirectional 32-8 multiplexer? (or 16-4, 4-1) > > I want to multiplex an 8-bit I/O port of a PIC to 4 sources/destinations > of/for the data. I hope somone understands this .... > > Hans