With I2C you can normally put different devices on the same clock and data lines. Each i2c device has a ID number or "address". So each read or write you specify which address you want to access. With PBP you can use the software I2C routine, which can be used on any avaliable pins. To use hardware I2C you need to use the specific pins on the pic and manually set all the registers.
For software SPI you use the "shiftout"/"shiftin" command. It takes 3 pins, chip select(CS), clock and data. You can share clock and data pins with more than one device, but each device requires a seperate CS pin. For hardware spi it's the same as i2c. You have to use specific I/O pins and set the registers.
Some where in the arduino link Deemon posted. They reference the chip as a PCF8574 port expander. The data sheet specifies it as an I2C device. So it probably won't work using spi.
Bookmarks