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

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

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

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

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

РегистрАдресНазначениеПосле сброса
PINA0x20 (I/O 0x00)Входы порта A—
DDRA0x21 (I/O 0x01)Направление выводов порта A0x00
PORTA0x22 (I/O 0x02)Выходы и подтяжки порта A0x00
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
PING0x32 (I/O 0x12)Входы порта G—
DDRG0x33 (I/O 0x13)Направление выводов порта G0x00
PORTG0x34 (I/O 0x14)Выходы и подтяжки порта G0x00
PINH0x100Входы порта H—
DDRH0x101Направление выводов порта H0x00
PORTH0x102Выходы и подтяжки порта H0x00
PINJ0x103Входы порта J—
DDRJ0x104Направление выводов порта J0x00
PORTJ0x105Выходы и подтяжки порта J0x00
PINK0x106Входы порта K—
DDRK0x107Направление выводов порта K0x00
PORTK0x108Выходы и подтяжки порта K0x00
PINL0x109Входы порта L—
DDRL0x10AНаправление выводов порта L0x00
PORTL0x10BВыходы и подтяжки порта L0x00

Состояния вывода

Что делает вывод Pxn при разных битах DDxn и PORTxn и общем бите PUD в MCUCR (PUD = 1 выключает подтяжки всех портов). Таблица 13-1 даташита 2549Q.

DDxnPORTxnPUDВыводПодтяжкаСостояние
00Xвходнетвысокий импеданс (Hi-Z)
010входдавывод отдаёт ток, если снаружи его тянут к земле
011входнетвысокий импеданс (Hi-Z)
10Xвыходнетнизкий уровень (вывод принимает ток)
11Xвыходнетвысокий уровень (вывод отдаёт ток)

PINA — входы порта A

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

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

Бит n отвечает за вывод PAn: PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.

DDRA — направление выводов порта A

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

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

Бит n отвечает за вывод PAn: PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.

PORTA — выходы и подтяжки порта A

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

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

Бит n отвечает за вывод PAn: PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.

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
ИмяPINC7PINC6PINC5PINC4PINC3PINC2PINC1PINC0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PCn: PC7, PC6, PC5, PC4, PC3, PC2, PC1, PC0.

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

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

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

Бит n отвечает за вывод PCn: PC7, PC6, PC5, PC4, PC3, PC2, PC1, PC0.

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

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

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

Бит n отвечает за вывод PCn: PC7, PC6, PC5, PC4, PC3, PC2, PC1, PC0.

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
ИмяPINE7PINE6PINE5PINE4PINE3PINE2PINE1PINE0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PEn: PE7, PE6, PE5, PE4, PE3, PE2, PE1, PE0.

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

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

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

Бит n отвечает за вывод PEn: PE7, PE6, PE5, PE4, PE3, PE2, PE1, PE0.

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

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

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

Бит n отвечает за вывод PEn: PE7, PE6, PE5, PE4, PE3, PE2, PE1, PE0.

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

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

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

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

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

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

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

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

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

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

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

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

PING — входы порта G

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

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

Бит n отвечает за вывод PGn: PG5, PG4, PG3, PG2, PG1, PG0.

DDRG — направление выводов порта G

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

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

Бит n отвечает за вывод PGn: PG5, PG4, PG3, PG2, PG1, PG0.

PORTG — выходы и подтяжки порта G

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

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

Бит n отвечает за вывод PGn: PG5, PG4, PG3, PG2, PG1, PG0.

PINH — входы порта H

Адрес 0x100, 8 бит.

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

Бит n отвечает за вывод PHn: PH7, PH6, PH5, PH4, PH3, PH2, PH1, PH0.

DDRH — направление выводов порта H

Адрес 0x101, 8 бит, после сброса 0x00.

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

Бит n отвечает за вывод PHn: PH7, PH6, PH5, PH4, PH3, PH2, PH1, PH0.

PORTH — выходы и подтяжки порта H

Адрес 0x102, 8 бит, после сброса 0x00.

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

Бит n отвечает за вывод PHn: PH7, PH6, PH5, PH4, PH3, PH2, PH1, PH0.

PINJ — входы порта J

Адрес 0x103, 8 бит.

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

Бит n отвечает за вывод PJn: PJ7, PJ6, PJ5, PJ4, PJ3, PJ2, PJ1, PJ0.

DDRJ — направление выводов порта J

Адрес 0x104, 8 бит, после сброса 0x00.

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

Бит n отвечает за вывод PJn: PJ7, PJ6, PJ5, PJ4, PJ3, PJ2, PJ1, PJ0.

PORTJ — выходы и подтяжки порта J

Адрес 0x105, 8 бит, после сброса 0x00.

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

Бит n отвечает за вывод PJn: PJ7, PJ6, PJ5, PJ4, PJ3, PJ2, PJ1, PJ0.

PINK — входы порта K

Адрес 0x106, 8 бит.

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

Бит n отвечает за вывод PKn: PK7, PK6, PK5, PK4, PK3, PK2, PK1, PK0.

DDRK — направление выводов порта K

Адрес 0x107, 8 бит, после сброса 0x00.

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

Бит n отвечает за вывод PKn: PK7, PK6, PK5, PK4, PK3, PK2, PK1, PK0.

PORTK — выходы и подтяжки порта K

Адрес 0x108, 8 бит, после сброса 0x00.

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

Бит n отвечает за вывод PKn: PK7, PK6, PK5, PK4, PK3, PK2, PK1, PK0.

PINL — входы порта L

Адрес 0x109, 8 бит.

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

Бит n отвечает за вывод PLn: PL7, PL6, PL5, PL4, PL3, PL2, PL1, PL0.

DDRL — направление выводов порта L

Адрес 0x10A, 8 бит, после сброса 0x00.

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

Бит n отвечает за вывод PLn: PL7, PL6, PL5, PL4, PL3, PL2, PL1, PL0.

PORTL — выходы и подтяжки порта L

Адрес 0x10B, 8 бит, после сброса 0x00.

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

Бит n отвечает за вывод PLn: PL7, PL6, PL5, PL4, PL3, PL2, PL1, PL0.

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

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

Командами IN и OUT доступны PINA (0x00), DDRA (0x01), PORTA (0x02), 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), PING (0x12), DDRG (0x13) и PORTG (0x14); из них PINA, DDRA, PORTA, PINB, DDRB, PORTB, PINC, DDRC, PORTC, PIND, DDRD, PORTD, PINE, DDRE, PORTE, PINF, DDRF, PORTF, PING, DDRG и PORTG — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. PINH, DDRH, PORTH, PINJ, DDRJ, PORTJ, PINK, DDRK, PORTK, PINL, DDRL и PORTL лежат за пределами области ввода-вывода, их читают и пишут командами LDS и STS (или LD и ST) по адресу в пространстве данных. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

Все регистры блока, для которых даташит 2549Q приводит значение после сброса (DDRA, PORTA, DDRB, PORTB, DDRC, PORTC, DDRD, PORTD, DDRE, PORTE, DDRF, PORTF, DDRG, PORTG, DDRH, PORTH, DDRJ, PORTJ, DDRK, PORTK, DDRL и PORTL), после сброса равны нулю.

Источники

  1. Microchip. Atmel. ATmega640/V-1280/V-1281/V-2560/V-2561/V datasheet (2549Q) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega2560 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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