Datasheet
176
8018P–AVR–08/10
ATmega169P
For the assembly code, the baud rate parameter is assumed to be stored in the r17:r16
Registers.
Note: 1. See ”About Code Examples” on page 10.
More advanced initialization routines can be made that include frame format as parameters, dis-
able interrupts and so on. However, many applications use a fixed setting of the baud and
control registers, and for these types of applications the initialization code can be placed directly
in the main routine, or be combined with initialization code for other I/O modules.
Assembly Code Example
(1)
USART_Init:
; Set baud rate
sts UBRRH0, r17
sts UBRRL0, r16
; Enable receiver and transmitter
ldi r16, (1<<RXEN0)|(1<<TXEN0)
sts UCSR0B,r16
; Set frame format: 8data, 2stop bit
ldi r16, (1<<USBS0)|(3<<UCSZ00)
sts UCSR0C,r16
ret
C Code Example
(1)
#define FOSC 1843200// Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
void main( void )
{
...
USART_Init ( MYUBRR );
...
}
void USART_Init( unsigned int ubrr)
{
/* Set baud rate */
UBRRH0 = (unsigned char)(ubrr>>8);
UBRRL0 = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 2stop bit */
UCSRnC = (1<<USBS0)|(3<<UCSZ00);
}