You should be able to reassign the I/O to whatever pins you fancy. I put the LEDs on PortA from memory, so it was obvious to put the other stuff on PortB.

Sure, you can use SERIN/OUT.

I do check examples like this before posting them... It should port to PBC... however, not having it I'm reluctant to post examples and code that I haven't tried and tested. somebody will always come back and say this or that didn't work and I'd have no way of checking it.