Hi, I'm new to programming with the pic, so I've been having some trouble setting up a serial communication, EUSART1, from my pic to my computer. I am using the pic18f27j13 with a max232 to try and send signals at a baudrate of 115200 to the computer. I'm using realterm to read the signals. But, non-correct Hex values are being read. My attempt is to set the Fosc to be 48Mhz from the internal clock and a baudrate of 115200. Can anyone kindly help me by looking at my code and pointing out any mistakes that I may have made. Thank you.

Some funky things that I have noticed with realterm. Is that if I send 0x88 it comes out as 0xFA // 1000 1000 -> and get 1111 1010.
0x00 -> gets 0xF0
0xFF -> gets 0xFF
0x1F -> gets 0xF3

I really don't see any pattern.

Code:
#include <p18f27j13.h>
#include <stdio.h>

#pragma config WDTEN = OFF   // Sets watchdog OFF
#pragma config PLLDIV = 2      // Sets divider to 2. Provides output 4Mhz for 96Mhz PLL
#pragma config OSC = INTOSCPLL // Sets OSC as INTOSC(8Mhz) Postscalled with a PLL
#pragma config CFGPLLEN = ON //enables PLL on startup
#pragma config PLLSEL = PLL96 // selects 96Mhz
#pragma config XINST = OFF
 

// setup functions
void delay();
void Wait_Buffer1();
void setupUSART();

//

void delay ()
{
    unsigned long int count = 0;
    for (count = 0; count < 0x0003FFFF; count ++)
    {
    }
}

void Wait_Buffer1(void) 
{
    while (!TXSTA1bits.TRMT) 
    {}
}    
void setupUSART()
{

    OSCCONbits.SCS = 0x00; // Selects Primary clock(FOSC) as the clock source


    stdout = _H_USART;

    TXSTA =   0b00100000; //Enable transmit and low baud rate
    RCSTA =   0b10010000; //Enable serial port
    BAUDCON = 0b00001000; //Enable 16 bit baud generator
    
    SPBRGH = 0;
    SPBRG = 25;

    //target baudrate 115200, 

}


void main ()
{
    unsigned int loop_count = 0;
    TRISCbits.TRISC7 = 1;
    TRISCbits.TRISC6 = 0;
    setupUSART();

    while (1)
    {
    delay();
    TXREG1 = 0x1F;
    delay();

    
        
    }
}