beautypg.com

Receiving frames with 5 to 8 data bits, Atmega8515(l) – Rainbow Electronics ATmega8515L User Manual

Page 141

background image

141

ATmega8515(L)

2512A–AVR–04/02

Receiving Frames with 5 to 8
Data Bits

The Receiver starts data reception when it detects a valid start bit. Each bit that follows
the start bit will be sampled at the baud rate or XCK clock, and shifted into the receive
Shift Register until the first stop bit of a frame is received. A second stop bit will be
ignored by the receiver. When the first stop bit is received (i.e., a complete serial frame
is present in the Receive Shift Register), the contents of the Shift Register will be moved
into the receive buffer. The receive buffer can then be read by reading the UDR I/O
location.

The following code example shows a simple USART receive function based on polling
of the Receive Complete (RXC) flag. When using frames with less than eight bits the
most significant bits of the data read from the UDR will be masked to zero. The USART
has to be initialized before the function can be used.

Note:

1. The example code assumes that the part specific header file is included.

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.

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<

;

/*

Get and return received data from buffer */

return

UDR;

}