English
Language : 

MEGA128CAN Datasheet, PDF (177/413 Pages) ATMEL Corporation – Microcontroller WITH 128K BYTES OF ISP FLASH AND CAN CONTROLLER
AT90CAN128
The following simple USART0 initialization code examples show one assembly and one
C function that are equal in functionality. The examples assume asynchronous opera-
tion using polling (no interrupts enabled) and a fixed frame format. The baud rate is
given as a function parameter. For the assembly code, the baud rate parameter is
assumed to be stored in the r17:r16 Registers.
Assembly Code Example(1)
USART0_Init:
; Set baud rate
sts UBRR0H, r17
sts UBRR0L, r16
; Set frame format: 8data, no parity & 2 stop bits
ldi r16, (0<<UMSEL0)|(0<<UPM0)|(1<<USBS0)|(3<<UCSZ0)
sts UCSR0C, r16
; Enable receiver and transmitter
ldi r16, (1<<RXEN0)|(1<<TXEN0)
sts UCSR0B, r16
ret
C Code Example(1)
void USART0_Init (unsigned int baud )
{
/* Set baud rate */
UBRR0H = (unsigned char) (baud>>8);
UBRR0L = (unsigned char) baud;
/* Set frame format: 8data, no parity & 2 stop bits */
UCSR0C = (0<<UMSEL0) | (0<<UPM0) | (1<<USBS0) | (3<<UCSZ0);
/* Enable receiver and transmitter */
UCSR0B = (1<<RXEN0) | (1<<TXEN0);
}
Note: 1. The example code assumes that the part specific header file is included.
More advanced initialization routines can be made that include frame format as parame-
ters, disable 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.
4250E–CAN–12/04
177