I am suffering a similar problem here with a PIC18F2525. I know the MAX232 interface is fine, as it works perfect for bootloading. And I can get HSEROUT to work fine, but when I try to use SEROUT I get wierd characters on hyperterminal.
I am runnig at 8MHz with a ceramic resonator (yes I use DEFINE OSC 8) and using 9600 baud.
I'm wondering if it's a timing issue with software vs hardware generated serial data. I still need to try generating from other pins. Possible that the USART is still doing something to the TX pin due to the bootloader having configured it. Still troubleshooting ....
Bookmarks