Регистры ввода-вывода
Все регистры ввода-вывода (РВВ) условно можно разделить на две группы – служебные регистры микроконтроллера и регистры, относящиеся к конкретным периферийным устройствам.
Во всех микроконтроллерах семейства Mega (как и в микроконтроллерах всех семейств AVR) регистры ввода-вывода располагаются в так называемом пространстве ввода-вывода размером 64 байта.
Распределение адресов пространства ввода-вывода зависит от конкретной модели микроконтроллера, состава и возможностей периферийных устройств данной модели. Размещение РВВ в пространстве ввода-вывода для модели ATmega16 приведено в табл. 26.1.
Таблица 26.1.
Регистры ввода-вывода модели ATmega16
Название
|
Адрес
|
Функция
|
SREG
|
$3F ($5F)
|
Регистр состояния
|
SPH
|
$3E ($5E)
|
Указатель стека, старший байт
|
SPL
|
$3D ($5D)
|
Указатель стека, младший байт
|
OCR0
|
$3C ($5C)
|
Регистр совпадения таймера/счетчика T0
|
GICR
|
$3B ($5B)
|
Общий регистр управления прерываниями
|
GIFR
|
$3A ($5A)
|
Общий регистр флагов прерываний
|
TIMSK
|
$39 ($59)
|
Регистр маски прерываний от таймеров/счетчиков
|
TIFR
|
$38 ($58)
|
Регистр флагов прерываний от таймеров/счетчиков
|
SPMCR
|
$37 ($57)
|
Регистр управления памятью программ
|
TWCR
|
$36 ($56)
|
Регистр управления TWI
|
MCUCR
|
$35 ($55)
|
Регистр управления микроконтроллером
|
MCUCSR
|
$34 ($54)
|
Регистр управления и состояния микроконтроллера
|
TCCR0
|
$33 ($53)
|
Регистр управления таймером/счетчиком T0
|
TCNT0
|
$32 ($52)
|
Счетный регистр таймера/счетчика T0
|
OSCCAL
|
$31 ($51)
|
Регистр калибровки тактового генератора
|
OCDR
|
Регистр внутрисхемной отладки
|
SFIOR
|
$30 ($20)
|
Регистр специальных функций
|
TCCR1A
|
$2F ($4F)
|
Регистр управления A таймера/счетчика T1
|
TCCR1B
|
$2E ($4E)
|
Регистр управления B таймера/счетчика T1
|
TCNT1H
|
$2D ($4D)
|
Счетный регистр таймера/счетчика T1, старший байт
|
TCNT1L
|
$2C ($4C)
|
Счетный регистр таймера/счетчика T1, младший байт
|
OCR1AH
|
$2B ($4B)
|
Регистр совпадения A таймера/счетчика T1, старший байт
|
OCR1AL
|
$2A ($4A)
|
Регистр совпадения A таймера/счетчика T1, младший байт
|
OCR1BH
|
$29 ($49)
|
Регистр совпадения B таймера/счетчика T1, старший байт
|
Окончание табл. 26.2.
Название
|
Адрес
|
Функция
|
OCR1BL
|
$28 ($48)
|
Регистр совпадения B таймера/счетчика T1, младший байт
|
ICR1H
|
$27 ($47)
|
Регистр захвата таймера/счетчика T1, старший байт
|
ICR1L
|
$26 ($46)
|
Регистр захвата таймера/счетчика T1, младший байт
|
TCCR2
|
$25 ($45)
|
Регистр управления таймером/счетчиком T2
|
TCNT2
|
$24 ($44)
|
Счетный регистр таймера/счетчика T2
|
OCR2
|
$23 ($43)
|
Регистр совпадения таймера/счетчика T2
|
ASSR
|
$22 ($42)
|
Регистр состояния асинхронного режима
|
WDTCR
|
$21 ($41)
|
Регистр управления сторожевым таймером
|
UBRRH
|
$20 ($40)
|
Регистр скорости передачи USART, старший байт
|
UCSRC
|
Регистр управления и состояния USART
|
EEARH
|
$1F ($3F)
|
Регистр адреса EEPROM, старший байт
|
EEARL
|
$1E ($3E)
|
Регистр адреса EEPROM, младший байт
|
EEDR
|
$1D ($3D)
|
Регистр данных EEPROM
|
EECR
|
$1C ($3C)
|
Регистр управления EEPROM
|
PORTA
|
$1B ($3B)
|
Регистр данных порта А
|
DDRA
|
$1A ($3A)
|
Регистр направления данных порта А
|
PINA
|
$19 ($39)
|
Выводы порта А
|
PORTB
|
$18 ($38)
|
Регистр данных порта B
|
DDRB
|
$17 ($37)
|
Регистр направления данных порта B
|
PINB
|
$16 ($36)
|
Выводы порта B
|
PORTC
|
$15 ($35)
|
Регистр данных порта C
|
DDRC
|
$14 ($34)
|
Регистр направления данных порта C
|
PINC
|
$13 ($33)
|
Выводы порта C
|
PORTD
|
$12 ($32)
|
Регистр данных порта D
|
DDRD
|
$11 ($31)
|
Регистр направления данных порта D
|
PIND
|
$10 ($30)
|
Выводы порта D
|
SPDR
|
$0F ($2F)
|
Регистр данных SPI
|
SPSR
|
$0E ($2E)
|
Регистр состояния SPI
|
SPCR
|
$0D ($2D)
|
Регистр управления SPI
|
UDR
|
$0C ($2C)
|
Регистр данных USART
|
UCSRA
|
$0B ($2B)
|
Регистр управления и состояния A USART
|
UCSRB
|
$0A ($2A)
|
Регистр управления и состояния B USART
|
UBRRL
|
$09 ($29)
|
Регистр скорости передачи USART, младший байт
|
ACSR
|
$08 ($28)
|
Регистр управления и состояния компаратора
|
ADMUX
|
$07 ($27)
|
Регистр управления мультиплексором АЦП
|
ADCSRA
|
$06 ($26)
|
Регистр управления и состояния АЦП
|
ADCH
|
$05 ($25)
|
Регистр данных АЦП, старший байт
|
ADCL
|
$04 ($24)
|
Регистр данных АЦП, младший байт
|
TWDR
|
$03 ($23)
|
Регистр данных TWI
|
TWAR
|
$02 ($22)
|
Регистр адреса TWI
|
TWSR
|
$01 ($21)
|
Регистр состояния TWI
|
TWBR
|
$00 ($20)
|
Регистр скорости передачи TWI
|
К РВВ, расположенным в основном пространстве ввода-вывода, можно обратиться с помощью команд IN и OUT, выполняющих пересылку данных между одним из 32-х РОН и пространством ввода-вывода. В системе команд имеется также четыре команды поразрядного доступа, использующие в качестве операндов регистры ввода-вывода: команды установки/сброса отдельного бита (SBI и CBI) и команды проверки состояния отдельного бита (SBIS и SBIC). Эти команды могут обращаться только к первой половине основных регистров ввода-вывода (адреса $00…$1F).
Помимо непосредственной адресации (с помощью команд IN и OUT), к РВВ можно обращаться и как к ячейкам ОЗУ с помощью соответствующих команд ST/SD/SDD и LD/LDS/LDD.
|