Область ввода/вывода микроконтроллеров AVR содержит 64 регистра, используемых для управления или хранения данных периферийных устройств. К каждому из этих регистров можно обращаться по адресу ввода/вывода (начиная с 0x000) или по адресу SRAM (в этом случае к адресу ввода/вывода следует прибавить 0x020). В программах на языке С обычно используются условные имена регистров ввода/вывода, а адреса имеют значение только для программ на языке ассемблера.
Имена, адреса ввода/вывода и SRAM, а также краткое описание регистров из области ввода/вывода микроконтроллеров AVR представлены в табл. 2.1. При этом следует отметить, что в различных моделях микроконтроллеров некоторые из перечисленных регистров не используются, а адреса, не указанные в табл. 2.1, зарезервированы компанией Atmel для использования в будущем.
Таблица 2.1. Описание регистров из области ввода/вывода
| Имя регистра
| Адрес ввода/ вывода
| Адрес SRAM
| Описание
| |
| ACSR
| 0x08
| 0x28
| Регистр управления и состояния аналогового компаратора
| |
| UBRR
| 0x09
| 0x29
| Регистр скорости передачи данных через UART
| |
| UCR
| 0х0А
| 0х2А
| Регистр управления приемопередатчиком UART
| |
| USR
| 0x0В
| 0x2В
| Регистр состояния приемопередатчика UART
| |
| UDR
| 0х0С
| 0х2С
| Регистр данных приемопередатчика UART
| |
| SPCR
| 0x0D
| 0x2D
| Регистр управления интерфейсом SPI
| |
| SPSR
| 0х0Е
| 0х2Е
| Регистр состояния интерфейса SPI
| |
| SPDR
| 0x0F
| 0x2F
| Регистр ввода/вывода данных интерфейса SPI
| |
| PIND
| 0x10
| 0x30
| Выводы порта D
| |
| DDRD
| 0x11
| 0x31
| Регистр направления передачи данных порта D
| |
| PORTD
| 0x12
| 0x32
| Регистр данных порта D
| |
| PINC
| 0x13
| 0x33
| Выводы порта С
| |
| DDRC
| 0x14
| 0x34
| Регистр направления передачи данных порта С
| |
| PORTC
| 0x15
| 0x35
| Регистр данных порта С
| |
| PINB
| 0x16
| 0x36
| Выводы порта В
| |
| DDRB
| 0x17
| 0x37
| Регистр направления передачи данных порта В
| |
| PORTB
| 0x18
| 0x38
| Регистр данных порта В
| |
| PINA
| 0x19
| 0x39
| Выводы порта А
| |
| DDRA
| 0x1А
| 0х3А
| Регистр направления передачи данных порта А
|
| PORTA
| 0x1В
| 0х3В
| Регистр данных порта А
|
| EECR
| 0x1С
| 0х3С
| Регистр управления памяти EEPROM
|
| EEDR
| 0x1D
| 0x3D
| Регистр данных памяти EEPROM
|
| EEARL
| 0x1Е
| 0х3Е
| Регистр адреса памяти EEPROM (младший байт)
|
| EEARH
| 0x1F
| 0x3F
| Регистр адреса памяти EEPROM (старший байт)
|
| WDTCR
| 0x21
| 0x41
| Регистр управления сторожевым таймером
|
| ICR1L
| 0x24
| 0x44
| Регистр захвата таймера/счетчика Т/С1 (младший байт)
|
| ICR1H
| 0x25
| 0x45
| Регистр захвата таймера/счетчика Т/С1 (младший байт)
|
| OCR1BL
| 0x28
| 0x48
| Регистр сравнения В таймера Т/С1 (младший байт)
|
| OCR1BH
| 0x29
| 0x49
| Регистр сравнения В таймера Т/С1 (старший байт)
|
| OCR1AL
| 0х2А
| 0х4А
| Регистр сравнения А таймера Т/С1 (младший байт)
|
| OCR1AH
| 0x2В
| 0x4В
| Регистр сравнения А таймера Т/С1 (старший байт)
|
| TCNT1L
| 0х2С
| 0х4С
| Счетный регистр таймера/счетчика Т/С1 (младший байт)
|
| TCNT1H
| 0x2D
| 0x4D
| Счетный регистр таймера/счетчика Т/С1 (старший байт)
|
| TCCR1B
| 0x2Е
| 0х4Е
| Регистр управления В таймера/счетчика Т/С1
|
| TCCR1A
| 0x2F
| 0x4F
| Регистр управления А таймера/счетчика Т/С1
|
| TCNT0
| 0x32
| 0x52
| Счетный регистр таймера/счетчика Т/С0
|
| TCCR0
| 0x33
| 0x53
| Регистр управления таймера/счетчика Т/С0
|
| MCUCR
| 0x35
| 0x55
| Регистр управления микроконтроллером
|
| TIFR
| 0x38
| 0x58
| Регистр флагов прерываний от таймеров/счетчиков
|
| TIMSK
| 0x39
| 0x59
| Регистр маскирования прерываний от таймеров
|
| GIFR
| 0х3А
| 0х5А
| Общий регистр флагов прерываний
|
| GIMSK
| 0х3В
| 0x5В
| Общий регистр маскирования прерываний
|
| SPL
| 0x3D
| 0x5D
| Указатель стека (младший байт)
|
| SPH
| 0х3Е
| 0х5Е
| Указатель стека (старший байт)
|
| SREG
| 0x3F
| 0x5F
| Регистр состояния
|