37 lines
776 B
C

void USART_Init( unsigned long baud )
{
/* Calculate UBRR */
unsigned int ubrr_val = (unsigned int)((F_CPU/(baud*16L))-1);
/* Set baud rate */
UBRRH = (unsigned char)(ubrr_val>>8);
UBRRL = (unsigned char)ubrr_val;
/* Enable transmitter */
UCSRB |= (1<<TXEN);
/* Set frame format: 8data, 1stop bit */
UCSRC = (3<<UCSZ0);
}
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
/* Get and return received data from buffer */
return UDR;
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}
void USART_Flush( void )
{
unsigned char dummy;
while ( UCSRA & (1<<RXC) ) dummy = UDR;
}