/* Set the baud rate */
UBRRHI = (unsigned char)(baudrate>>8);
UBRR1 = 0x19;
//(unsigned char) baudrate;
UCSR1A = 0x00; //enable
UCSR1B = 0xD8; //enable
/* Flush receive buffer */
x = 0;
USART1_RxTail = x;
USART1_RxHead = x;
USART1_TxTail = x;
USART1_TxHead = x;
}
#pragma interrupt_handler USART1_RX_interrupt:15
void USART1_RX_interrupt( void )
{
unsigned char data;
unsigned char tmphead,tmptail;
UCSR1A |= (1<<UDRE1);
if((UCSR1A&(1<<UDRE1)) == (1<<UDRE1) )
{
/* Read the received data */
data = UDR1;
/* Calculate buffer index */
tmphead = ( USART1_RxHead + 1 ) & USART1_RX_BUFFER_MASK;
USART1_RxHead = tmphead; /* Store new index */
if ( tmphead == USART1_RxTail )
{
/* ERROR! Receive buffer overflow */
}
USART1_RxBuf[tmphead] = data; /* Store received data in buffer */
}
else
{
//data = UDR1;
}
}
void USART1_Transmit( unsigned char data )
{
while ( !( UCSR1A & (1<<UDRE1)) )
;
// Put data into buffer, sends the data
UDR1 = data;
}