PIC12F683 microcontroller has got only 6 I/O pins. We saw how to interface a standard character LCD to PIC12F683 using a 74HC595 shift register. The same technique can be implemented for interfacing a seven segment LED display. However, shift registers like 74HC595 allows to add more output ports but not any input port. MCP23008 is a GPIO port expander that can provide additional 8 port pins that can be configured as digital inputs or outputs. This tutorial describes all the details about using MCP23008 with PIC12F683 to expand its I/O capability.