37 lines
776 B
C
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;
|
|
}
|