Перейти к содержанию

Порты ввода-вывода ATmega32U4: регистры и биты

Каждым портом управляют три регистра: DDRx задаёт направление вывода (1 — выход), PORTx — уровень на выходе, а у входа включает подтяжку к питанию, PINx читает уровни на выводах. Запись единицы в бит PINx переключает соответствующий бит PORTx.

Данные: описание ATmega32U4 из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 7766J.

Регистры блока

РегистрАдресНазначениеПосле сброса
PINB0x23 (I/O 0x03)Входы порта B—
DDRB0x24 (I/O 0x04)Направление выводов порта B0x00
PORTB0x25 (I/O 0x05)Выходы и подтяжки порта B0x00
PINC0x26 (I/O 0x06)Входы порта C—
DDRC0x27 (I/O 0x07)Направление выводов порта C0x00
PORTC0x28 (I/O 0x08)Выходы и подтяжки порта C0x00
PIND0x29 (I/O 0x09)Входы порта D—
DDRD0x2A (I/O 0x0A)Направление выводов порта D0x00
PORTD0x2B (I/O 0x0B)Выходы и подтяжки порта D0x00
PINE0x2C (I/O 0x0C)Входы порта E—
DDRE0x2D (I/O 0x0D)Направление выводов порта E0x00
PORTE0x2E (I/O 0x0E)Выходы и подтяжки порта E0x00
PINF0x2F (I/O 0x0F)Входы порта F—
DDRF0x30 (I/O 0x10)Направление выводов порта F0x00
PORTF0x31 (I/O 0x11)Выходы и подтяжки порта F0x00

PINB — входы порта B

Адрес 0x23 (I/O 0x03), 8 бит.

Бит76543210
ИмяPINB7PINB6PINB5PINB4PINB3PINB2PINB1PINB0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.

DDRB — направление выводов порта B

Адрес 0x24 (I/O 0x04), 8 бит, после сброса 0x00.

Бит76543210
ИмяDDB7DDB6DDB5DDB4DDB3DDB2DDB1DDB0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.

PORTB — выходы и подтяжки порта B

Адрес 0x25 (I/O 0x05), 8 бит, после сброса 0x00.

Бит76543210
ИмяPORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.

PINC — входы порта C

Адрес 0x26 (I/O 0x06), 8 бит.

Бит76543210
ИмяPINC7PINC6——————
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PCn: PC7, PC6.

DDRC — направление выводов порта C

Адрес 0x27 (I/O 0x07), 8 бит, после сброса 0x00.

Бит76543210
ИмяDDC7DDC6——————
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PCn: PC7, PC6.

PORTC — выходы и подтяжки порта C

Адрес 0x28 (I/O 0x08), 8 бит, после сброса 0x00.

Бит76543210
ИмяPORTC7PORTC6——————
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PCn: PC7, PC6.

PIND — входы порта D

Адрес 0x29 (I/O 0x09), 8 бит.

Бит76543210
ИмяPIND7PIND6PIND5PIND4PIND3PIND2PIND1PIND0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.

DDRD — направление выводов порта D

Адрес 0x2A (I/O 0x0A), 8 бит, после сброса 0x00.

Бит76543210
ИмяDDD7DDD6DDD5DDD4DDD3DDD2DDD1DDD0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.

PORTD — выходы и подтяжки порта D

Адрес 0x2B (I/O 0x0B), 8 бит, после сброса 0x00.

Бит76543210
ИмяPORTD7PORTD6PORTD5PORTD4PORTD3PORTD2PORTD1PORTD0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.

PINE — входы порта E

Адрес 0x2C (I/O 0x0C), 8 бит.

Бит76543210
Имя—PINE6———PINE2——
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PEn: PE6, PE2.

DDRE — направление выводов порта E

Адрес 0x2D (I/O 0x0D), 8 бит, после сброса 0x00.

Бит76543210
Имя—DDE6———DDE2——
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PEn: PE6, PE2.

PORTE — выходы и подтяжки порта E

Адрес 0x2E (I/O 0x0E), 8 бит, после сброса 0x00.

Бит76543210
Имя—PORTE6———PORTE2——
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PEn: PE6, PE2.

PINF — входы порта F

Адрес 0x2F (I/O 0x0F), 8 бит.

Бит76543210
ИмяPINF7PINF6PINF5PINF4——PINF1PINF0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PFn: PF7, PF6, PF5, PF4, PF1, PF0.

DDRF — направление выводов порта F

Адрес 0x30 (I/O 0x10), 8 бит, после сброса 0x00.

Бит76543210
ИмяDDF7DDF6DDF5DDF4——DDF1DDF0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PFn: PF7, PF6, PF5, PF4, PF1, PF0.

PORTF — выходы и подтяжки порта F

Адрес 0x31 (I/O 0x11), 8 бит, после сброса 0x00.

Бит76543210
ИмяPORTF7PORTF6PORTF5PORTF4——PORTF1PORTF0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PFn: PF7, PF6, PF5, PF4, PF1, PF0.

Частые вопросы

Какими командами ассемблера обращаться к регистрам порты ATmega32U4?

Командами IN и OUT доступны PINB (0x03), DDRB (0x04), PORTB (0x05), PINC (0x06), DDRC (0x07), PORTC (0x08), PIND (0x09), DDRD (0x0A), PORTD (0x0B), PINE (0x0C), DDRE (0x0D), PORTE (0x0E), PINF (0x0F), DDRF (0x10) и PORTF (0x11); из них PINB, DDRB, PORTB, PINC, DDRC, PORTC, PIND, DDRD, PORTD, PINE, DDRE, PORTE, PINF, DDRF и PORTF — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

Какие значения у регистров порты после сброса?

Все регистры блока, для которых даташит 7766J приводит значение после сброса (DDRB, PORTB, DDRC, PORTC, DDRD, PORTD, DDRE, PORTE, DDRF и PORTF), после сброса равны нулю.

Источники

  1. Microchip. Atmel. ATmega16U4/32U4 datasheet (7766J) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega32U4 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

Нашли ошибку в регистрах?

Другие регистры ATmega32U4

Калькуляторы и статьи