AT90S1200
I/O Ports
All AVR ports have true Read-Modify-Write functionality when used as general digital
I/O ports. This means that the direction of one port pin can be changed without uninten-
tionally changing the direction of any other pin with the SBI and CBI instructions. The
same applies for changing drive value (if configured as output) or enabling/disabling of
pull-up resistors (if configured as input).
Port B
Port B is an 8-bit bi-directional I/O port.
Three I/O memory address locations are allocated for the Port B, one each for the Data
Register – PORTB ($18), Data Direction Register – DDRB ($17), and the Port B Input
Pins – PINB ($16). The Port B Input Pins address is read-only, while the Data Register
and the Data Direction Register are read/write.
All port pins have individually selectable pull-up resistors. The Port B output buffers can
sink 20 mA and thus drive LED displays directly. When pins PB0 to PB7 are used as
inputs and are externally pulled low, they will source current if the internal pull-up resis-
tors are activated.
The Port B pins with alternate functions are shown in Table 8.
Table 8. Port B Pin Alternate Functions
Port Pin
PB0
Alternate Functions
AIN0 (Analog Comparator positive input)
AIN1 (Analog Comparator negative input)
MOSI (Data Input line for memory downloading)
MISO (Data Output line for memory uploading)
SCK (Serial Clock input)
PB1
PB5
PB6
PB7
When the pins are used for the alternate function, the DDRB and PORTB register has to
be set according to the alternate function description.
Port B Data Register – PORTB
Bit
7
PORTB7
R/W
0
6
PORTB6
R/W
0
5
PORTB5
R/W
0
4
PORTB4
R/W
0
3
PORTB3
R/W
0
2
PORTB2
R/W
0
1
PORTB1
R/W
0
0
PORTB0
R/W
0
PORTB
DDRB
PINB
$18
Read/Write
Initial Value
Port B Data Direction Register
– DDRB
Bit
7
DDB7
R/W
0
6
DDB6
R/W
0
5
DDB5
R/W
0
4
DDB4
R/W
0
3
DDB3
R/W
0
2
DDB2
R/W
0
1
DDB1
R/W
0
0
DDB0
R/W
0
$17
Read/Write
Initial Value
Port B Input Pin Address –
PINB
Bit
7
PINB7
R
6
PINB6
R
5
PINB5
R
4
PINB4
R
3
PINB3
R
2
PINB2
R
1
PINB1
R
0
PINB0
R
$16
Read/Write
Initial Value
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
The Port B Input Pins address (PINB) is not a register, and this address enables access
to the physical value on each Port B pin. When reading PORTB, the Port B Data Latch
is read, and when reading PINB, the logical values present on the pins are read.
29
0838H–AVR–03/02