ATmega8(L)
Assembly Code Example(1)
USART_Init:
; Set baud rate
out
out
UBRRH, r17
UBRRL, r16
; Enable receiver and transmitter
ldi
out
r16, (1<<RXEN)|(1<<TXEN)
UCSRB,r16
; Set frame format: 8data, 2stop bit
ldi
out
ret
r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
UCSRC,r16
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 */
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
Note:
1. See “About Code Examples” on page 8.
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.
139
2486T–AVR–05/08