Порты ввода-вывода ATmega32U4: регистры и биты
Каждым портом управляют три регистра: DDRx задаёт направление вывода (1 — выход), PORTx — уровень на выходе, а у входа включает подтяжку к питанию, PINx читает уровни на выводах. Запись единицы в бит PINx переключает соответствующий бит PORTx.
Данные: описание ATmega32U4 из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 7766J.
Регистры блока
| Регистр | Адрес | Назначение | После сброса |
|---|---|---|---|
| PINB | 0x23 (I/O 0x03) | Входы порта B | — |
| DDRB | 0x24 (I/O 0x04) | Направление выводов порта B | 0x00 |
| PORTB | 0x25 (I/O 0x05) | Выходы и подтяжки порта B | 0x00 |
| PINC | 0x26 (I/O 0x06) | Входы порта C | — |
| DDRC | 0x27 (I/O 0x07) | Направление выводов порта C | 0x00 |
| PORTC | 0x28 (I/O 0x08) | Выходы и подтяжки порта C | 0x00 |
| PIND | 0x29 (I/O 0x09) | Входы порта D | — |
| DDRD | 0x2A (I/O 0x0A) | Направление выводов порта D | 0x00 |
| PORTD | 0x2B (I/O 0x0B) | Выходы и подтяжки порта D | 0x00 |
| PINE | 0x2C (I/O 0x0C) | Входы порта E | — |
| DDRE | 0x2D (I/O 0x0D) | Направление выводов порта E | 0x00 |
| PORTE | 0x2E (I/O 0x0E) | Выходы и подтяжки порта E | 0x00 |
| PINF | 0x2F (I/O 0x0F) | Входы порта F | — |
| DDRF | 0x30 (I/O 0x10) | Направление выводов порта F | 0x00 |
| PORTF | 0x31 (I/O 0x11) | Выходы и подтяжки порта F | 0x00 |
PINB — входы порта B
Адрес 0x23 (I/O 0x03), 8 бит.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | PINB7 | PINB6 | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.
DDRB — направление выводов порта B
Адрес 0x24 (I/O 0x04), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | 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 |
Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.
PORTB — выходы и подтяжки порта B
Адрес 0x25 (I/O 0x05), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | 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 |
Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.
PINC — входы порта C
Адрес 0x26 (I/O 0x06), 8 бит.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | PINC7 | PINC6 | — | — | — | — | — | — |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Бит n отвечает за вывод PCn: PC7, PC6.
DDRC — направление выводов порта C
Адрес 0x27 (I/O 0x07), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | DDC7 | DDC6 | — | — | — | — | — | — |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит n отвечает за вывод PCn: PC7, PC6.
PORTC — выходы и подтяжки порта C
Адрес 0x28 (I/O 0x08), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | PORTC7 | PORTC6 | — | — | — | — | — | — |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит n отвечает за вывод PCn: PC7, PC6.
PIND — входы порта D
Адрес 0x29 (I/O 0x09), 8 бит.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | PIND7 | PIND6 | PIND5 | PIND4 | PIND3 | PIND2 | PIND1 | PIND0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.
DDRD — направление выводов порта D
Адрес 0x2A (I/O 0x0A), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | DDD7 | DDD6 | DDD5 | DDD4 | DDD3 | DDD2 | DDD1 | DDD0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.
PORTD — выходы и подтяжки порта D
Адрес 0x2B (I/O 0x0B), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | PORTD7 | PORTD6 | PORTD5 | PORTD4 | PORTD3 | PORTD2 | PORTD1 | PORTD0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.
PINE — входы порта E
Адрес 0x2C (I/O 0x0C), 8 бит.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | — | PINE6 | — | — | — | PINE2 | — | — |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Бит n отвечает за вывод PEn: PE6, PE2.
DDRE — направление выводов порта E
Адрес 0x2D (I/O 0x0D), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | — | DDE6 | — | — | — | DDE2 | — | — |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит n отвечает за вывод PEn: PE6, PE2.
PORTE — выходы и подтяжки порта E
Адрес 0x2E (I/O 0x0E), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | — | PORTE6 | — | — | — | PORTE2 | — | — |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит n отвечает за вывод PEn: PE6, PE2.
PINF — входы порта F
Адрес 0x2F (I/O 0x0F), 8 бит.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | PINF7 | PINF6 | PINF5 | PINF4 | — | — | PINF1 | PINF0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Бит n отвечает за вывод PFn: PF7, PF6, PF5, PF4, PF1, PF0.
DDRF — направление выводов порта F
Адрес 0x30 (I/O 0x10), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | DDF7 | DDF6 | DDF5 | DDF4 | — | — | DDF1 | DDF0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит n отвечает за вывод PFn: PF7, PF6, PF5, PF4, PF1, PF0.
PORTF — выходы и подтяжки порта F
Адрес 0x31 (I/O 0x11), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | PORTF7 | PORTF6 | PORTF5 | PORTF4 | — | — | PORTF1 | PORTF0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит 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), после сброса равны нулю.
Источники
- Microchip. Atmel. ATmega16U4/32U4 datasheet (7766J) — сводка регистров, диаграммы битов и значения после сброса
- Microchip ATmega_DFP 3.6.299, описание ATmega32U4 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры ATmega32U4
- Все регистры ATmega32U4Таблица по адресам
- SPISPCR, SPSR, SPDR
- USART1UCSR1A, UCSR1B, UCSR1C, UCSR1D, UBRR1, UDR1
- EEPROMEECR, EEDR, EEAR
- Таймер-счётчик 0 (8 бит)TIFR0, GTCCR, TCCR0A, TCCR0B, TCNT0, OCR0A
- Таймер-счётчик 1 (16 бит)TIFR1, TIMSK1, TCCR1A, TCCR1B, TCCR1C, TCNT1
- Таймер-счётчик 3 (16 бит)TIFR3, TIMSK3, TCCR3A, TCCR3B, TCCR3C, TCNT3
- Таймер-счётчик 4 (10 бит, быстрый)TIFR4, TIMSK4, TCNT4, TC4H, TCCR4A, TCCR4B
- Внешние прерыванияPCIFR, EIFR, EIMSK, PCICR, EICRA, EICRB
- TWI (I²C)TWBR, TWSR, TWAR, TWDR, TWCR, TWAMR
- АЦПADC, ADCSRA, ADCSRB, ADMUX, DIDR2, DIDR0
- Аналоговый компараторACSR, ADCSRB, DIDR1
- Ядро и системные регистрыGPIOR0, GPIOR1, GPIOR2, OCDR, SMCR, MCUSR
- PLLPLLCSR, PLLFRQ
- USB-контроллерUHWCON, USBCON, USBSTA, USBINT, UDCON, UDINT