
void main (void)
{
uart_init();
value = value1;   // value = J;  
uart_transmit(value1);
while(1); 
}

void uart_init(void)
{
  // configure UART
  // clear SMOD0
  PCON &= ~0x40;
  SCON = 0x50;
  // set or clear SMOD1
  PCON &= 0x7f;
  PCON |= (0 << 8);
  SSTAT = 0x00;

  // enable break detect
  AUXR1 |= 0x40;

  // configure baud rate generator
  BRGCON = 0x00;
  BRGR0 = 0xF0;
  BRGR1 = 0x02;
  BRGCON = 0x03;

  // TxD = push-pull, RxD = input
  P1M1 &= ~0x01;
  P1M2 |= 0x01;
  P1M1 |= 0x02;
  P1M2 &= ~0x02;

  mtxbusy = 0;	// initially not busy
    
  IP0 &= 0xEF;	// set isr priority to 0
  IP0H &= 0xEF;
  
  ES = 1;		// enable uart interrupt
} 

void uart_isr(void) interrupt 4 using 1
{
  if (RI)
  {
    
    RI = 0;	// clear interrupt flag
  } 
  if (TI)
  {
    
    TI = 0;	// clear interrupt flag
    
    mtxbusy = 0; 	// no longer busy
  } 

} 

void uart_transmit(unsigned char value)    // data to transmit
{
  while(mtxbusy);
  mtxbusy = 1;
  SBUF = value;
} 

//RETURNS: Received data
unsigned char uart_get(void)
{
  return SBUF;
} 

