I don't have time to post any code right now, but if you use the USART, you don't have to sit in a loop waiting for data to come in. You can occasionally check if PIR1.5 is set, and if so, do a HSERIN and read up to two bytes.
Useful if your "slave" has more to do than control LEDs.
Bookmarks