Would you be talking about a (for simplicity) ports or "pins" that are dual direction, AKA bidirectional?

I'll look for some articles. I just dont know off the top of my head, although I do know that you would need to build within your code instructions to flip from output to input. That being said, some external circuitry would be needed as for if you have a wigit connected to a specific pin, such as an LED, and you flip that output to an input that input signal could possibly interfere with the device connected.

-OR-

Are you simply looking for a interface to communicate with the device to send it instructions? That can be accomplished with a serial connection, (pins 8-RX and 11-TX) or you could get really fancy with a USB interface. Either way requires SERIN SEROUT commands and code plus much more to make this happen.

-OR- (Not recommended, really)

You could (and Im only throwing this out there, I would not suggest it) build your circuit with the In-circuit Serial Programming (ICSP) connection point.... Although this should be added anyway to fix bugs and creepies that come up in the code AFTER you have soldered it in place (and it happens, A LOT) but again I would not go this route to send the uC instructions for your printer, ONLY for ease of changing code for fixes/improvements. It's worth the 50 cents in lieu of de-soldering the chip.