If you need to receive serial data in the background, you'll definitely want to use the hardware USART.

MeLabs has an example for the 18F452 that buffers inbound characters using the hardware USART here: http://www.microengineeringlabs.com/...8F/serA452.bas