Accessing ubrrh/ ucsrc registers, Write access, Atmega32(l) – Rainbow Electronics ATmega32L User Manual
Page 156

156
ATmega32(L)
2503C–AVR–10/02
Accessing UBRRH/
UCSRC Registers
The UBRRH Register shares the same I/O location as the UCSRC Register. Therefore
some special consideration must be taken when accessing this I/O location.
Write Access
When doing a write access of this I/O location, the high bit of the value written, the
USART Register Select (URSEL) bit, controls which one of the two registers that will be
written. If URSEL is zero during a write operation, the UBRRH value will be updated. If
URSEL is one, the UCSRC setting will be updated.
The following code examples show how to access the two registers.
Note:
1. The example code assumes that the part specific header file is included.
As the code examples illustrate, write accesses of the two registers are relatively unaf-
fected of the sharing of I/O location.
Assembly Code Example
(1)
...
; Set UBRRH to 2
ldi
r16,0x02
out
UBRRH,r16
...
; Set the USBS and the UCSZ1 bit to one, and
; the remaining bits to zero.
ldi
r16,(1< out UCSRC,r16 ... C Code Example (1) ... /* Set UBRRH to 2 */ UBRRH = 0x02; ... /* Set the USBS and the UCSZ1 bit to one, and */ /* the remaining bits to zero. */ UCSRC = (1< ...