Порт B 8-разрядный двунаправленный порт ввода/вывода. Для обслуживания порта отведено три регистра: регистр данных PORTB ($18, $38), регистр направления данных - DDRB ($17, $37) и ножки порта B ($16, $36). Адрес ножек порта B предназначен только для чтения, в то время как регистр данных и регистр направления данных - для чтения/записи.
Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы порта B могут поглощать ток до 20 mA и непосредственно управлять светодиодными индикаторами. Если выводы PB0..PB7 используются как входы и замыкаются на землю, если включены внутренние подтягивающие резисторы, выводы являются источниками тока (Iil). Дополнительные функции выводов порта B приведены в таблице 8.
Вывод | Альтернативная функция |
PB0 | AIN0 (Положительный вход аналогового компаратора) |
PB1 | AIN1 (Отрицательный вход аналогового компаратора) |
PB3 | OC1 (Выход совпадения таймера/счетчика1) |
PB5 | MOSI (Вход данных для загрузки памяти) |
PB6 | MISO (Выход данных для чтения памяти) |
PB7 | SCK (Вход тактовых импульсов последовательного обмена) |
При использовании альтернативных функций выводов. регистры DDRB иPORTB должны быть установлены в соответствии с описанием альтернативных функций.
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$18($38) | PORTB7 | PORTB6 | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 |
Чт./зап | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Нач.знач. | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$32($52) | DDB7 | DDB6 | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 |
Чт./зап | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Нач.знач. | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$16 ($36) | PINB7 | PINB6 | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 |
Чт./зап | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Нач.знач. | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z |
PINB не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта B. При чтении PORTB, читаются данные из регистра-защелки, при чтении PINB читаются логические значения присутствующие на выводах порта.
Все 8 бит порта B при использовании для ввода/вывода одинаковы. Бит DDBn регистра DDRB выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен(0) - вывод сконфигурирован как вход. Если PORTBn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTBn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.
DDBn | PORTBn | Вх/Вых | Подт. резист | Комментарий |
0 | 0 | Вход | Нет | Третье состояние (Hi-Z) |
0 | 1 | Вход | Да | Вход PBn источник тока [i], если извне соединен с землей |
1 | 0 | Выход | Нет | Выход установлен в 0 |
1 | 1 | Выход | Нет | Выход установлен в 1 |
n = 7,6...0 - номер вывода
Для порта D зарезервированы 3 ячейки памяти - регистр PORTD $12 ($32), регистр направления данных - DDRD $11 ($31) и выводы порта D - PIND $10 ($30). Регистры данных и направления данных могут читаться/записываться, ячейка PIND - только для чтения.
Порт D - 7-разрядный двунаправленный порт с встроенными подтягивающими регистрами. Выходные буферы порта могут поглощать ток до 20 mA. Если выводы используются как входы и на них подан низкий уровень, они являются источниками тока [i], если подключены подтягивающие резисторы. Некоторые из выводов порта имеют альтернативные функции, как показано в таблице 18.
Если выводы порта используются для обслуживания альтернативных функций, они должны быть сконфигурированы на ввод/вывод в соответствии с описанием функции.
Вывод порта | Альтернативная функция |
PD0 | RXD (вход данных UART) |
PD1 | TXD (выход данных UART) |
PD2 | INT0 (вход внешнего прерывания 0) |
PD3 | INT1 (вход внешнего прерывания 1) |
PD4 | T0 (внешний вход таймера счетчика 0) |
PD5 | T1 (внешний вход таймера счетчика 1) |
PD6 | ICP (вход захвата таймера счетчика 1) |
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$12 ($32) | - | PORTD6 | PORTD5 | PORTD4 | PORTD3 | PORTD2 | PORTD1 | PORTD0 |
Чт./зап | R | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Нач.знач. | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$11 ($31) | - | DDD6 | DDD5 | DDD4 | DDD3 | DDD2 | DDD1 | DDD0 |
Чт./зап | R | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Нач.знач. | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$10 ($30) | PIND7 | PIND6 | PIND5 | PIND4 | PIND3 | PIND2 | PIND1 | PIND0 |
Чт./зап | R | R | R | R | R | R | R | R |
Нач.знач. | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z |
PIND не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта D. При чтении PORTD, читаются данные из регистра-защелки, при чтении PIND читаются логические значения присутствующие на выводах порта.
Порт D, как порт ввода/вывода общего назначения
Бит DDDn регистра DDRD выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTDn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Дляотключения резистора, PORTDn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.
DDDn | PORTDn | Вх/Вых | Подт.резист | Комментарий |
0 | 0 | Вход | Нет | Третье состояние (Hi-Z) |
0 | 1 | Вход | Да | Вход PDn источник тока [i], если извне соединен с землей |
1 | 0 | Выход | Нет | Выход установлен в 0 |
1 | 1 | Выход | Нет | Выход установлен в 1 |
n = 7,6...0 - номер вывода