
void uart_init(void){

    //turn on UART
    PCONA &= ~0x02;
    // configure UART
    // clear SMOD0
    PCON &= ~0x40;
    SCON = 0x50;

    // set or clear SMOD1
    PCON &= 0x7f;
    PCON |= (0 << 8);
    SSTAT = 0xE0;  //enable double buffering for a bit more resiliency

    // enable break detect
    //AUXR1 |= 0x40;

    // configure baud rate generator
    BRGCON = 0x00;

   //set speed (19200)
   BRGR0 = 0x70;
   BRGR1 = 0x01;



    BRGCON = 0x03;

    // TxD = push-pull, RxD = input
    P1M1 &= ~0x01;
    P1M2 |= 0x01;
    P1M1 |= 0x02;
    P1M2 &= ~0x02;




   // Setup ring buffers.
    s_rxRingEmpty = 1;
    s_txRingEmpty = 1;
    s_rxWrIdx     = 0;
    s_rxRdIdx     = 0;
    s_txWrIdx     = 0;
    s_txRdIdx     = 0;

    // set receive isr priority to 0
    IP0 &= 0xEF;
    IP0H &= 0xEF;

    IP0 |= 0x10;
    IP0H |= 0x10;



    // enable uart receive interrupt
    ESR = 1;


    //set tx priority to high
    IP1 |= 0x40;
    IP1H |= 0x40;


    // enable uart transmit interrupt
    EST = 1;

    //clear any Flags that may have been set during init.
    RI = 0;
    TI = 0;



}
