If you do not want to setup all of the defines and want to change things around on the fly here is an example that I use for testing on a particular chip. Displays the serial input on an LCD. The RCSTA.4 part clears any overruns.

Did you have a MAX232 or equivalent when you tried the hardware serial?
Code:
'******************************************
'18F6680   02/14/09  INFEED PARSE TEST BAUD 9600
    DEFINE OSC 20
    @ __CONFIG    _CONFIG1H, _OSC_HS_1H
    @ __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    @ __CONFIG    _CONFIG4L, _LVP_OFF_4L
    DEFINE LCD_DREG     PORTG 
    define LCD_DBIT     0
    DEFINE LCD_RSREG    PORTE 
    DEFINE LCD_RSBIT    0
    DEFINE LCD_EREG     PORTE 
    DEFINE LCD_EBIT     1
    DEFINE LCD_BITS     4 
    DEFINE LCD_LINES    4
    DEFINE LCD_COMMANDUS    3000 
    DEFINE LCD_DATAUS   150
  '###############################################
    PAUSE 100 : LCDOUT $FE,1,"TEST"
    N1 VAR LONG:N2 VAR LONG
    START: N1 = 0 : N2 = 0
    HIGH PORTG.4 :PAUSE 250:LOW PORTG.4
    RCSTA.4 = 0 : RCSTA.4 = 1
    'CHANGE LINE FEED AND CARRIAGE RETURN AS REQUIRED 
    RCSTA=$90:TXSTA=$24:SPBRG=129:HSERIN[WAIT($a),WAIT($d),DEC N1,WAIT(","),DEC N2]  
    LCDOUT $FE,1,DEC N1 : lcdout $FE,$C0,DEC N2 : GOTO START