As a port expander you can use parallel data transmission, and it is quite fast if you use microcontrollers which use multiplexed address/data bus such as 8051 family (with built-in control line such as RD, WR, and so on..) - 8255 the best example ..
For PIC, however, I would rather consider I2C bus and port expanders tailored for this configuration. Have a look at ICs, such as: PCF8575, MAX7311 or MAX7314, to name just a few. They will add 8, 16 or more .. digital I/Os to your microcontroller ..
Regards,
IanP