Datasheet

Table Of Contents
146
ATmega32A [DATASHEET]
Atmel-8155D-AVR-ATmega32A-Datasheet_02/2014
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.7.2 Receiving Frames with 9 Databits
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.
The following code example shows a simple USART receive function that handles both 9-bit characters and the
status bits.
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;
}