Datasheet
135
ATmega8A [DATASHEET]
8159E–AVR–02/2013
Note: 1. See “About Code Examples” on page 6.
The function simply waits for data to be present in the receive buffer by checking the RXC Flag, before reading the
buffer and returning the value.
20.6.8 Receiving Frames with 9 Data Bits
If 9-bit characters are used (UCSZ=7) the ninth bit must be read from the RXB8 bit in UCSRB before reading the
low bits from the UDR. This rule applies to the FE, DOR and PE Status Flags as well. Read status from UCSRA,
then data from UDR. Reading the UDR I/O location will change the state of the receive buffer FIFO and conse-
quently the TXB8, FE, DOR, and PE bits, which all are stored in the FIFO, will change.
Assembly Code Example
(1)
USART_Receive:
; Wait for data to be received
sbis UCSRA, RXC
rjmp USART_Receive
; Get and return received data from buffer
in r16, UDR
ret
C Code Example
(1)
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
/* Get and return received data from buffer */
return UDR;
}