Регистры специальных функций микроконтроллеров РIС

Регистры специальных функций используются в микроконтроллерах Р1С для управления различными операциями. Как и в случае с регистрами общего назначения, их количество и адресация отличаются от устройства к устройству. В программах, написанных на языке С, непосредственное обращение к регистрам специальных функций обычно не требуется, если только не используются фрагменты на языке ассемблера.

Область ввода/вывода микроконтроллеров АVR

Область ввода/вывода микроконтроллеров АVR содержит 64 регистра, используемых для управления или хранения данных периферийных устройств. К каждому из этих регистров можно обращаться по адресу ввода/вывода (начиная с 0x000) или по адресу SRАМ (в этом случае к адресу ввода/вывода следует прибавить 0x020). В программах на языке С обычно используются условные имена регистров ввода/вывода, а адреса имеют значение только для программ на языке ассемблера.

Имена, адреса ввода/вывода и SRАМ, а также краткое описание регистров из области ввода/вывода микроконтроллеров АVR. представлены в табл. 1.1.

Таблица 1. Описание регистров из области ввода/вывода микроконтроллеров АVR

Имя регистра Адрес ввода/ вывода Адрес SRAM Описание
ACSR 0x08 0x28 Регистр управления и состояния аналогового компаратора
UBRR 0x09 0x29 Регистр скорости передачи данных через UART
UCR 0х0А 0х2А Регистр управления приемопередатчиком UART
USR 0х0В 0x2В Регистр состояния приемопередатчика UART
UDR 0х0С 0х2С Регистр данных приемопередатчика UART
SPCR 0x0D 0x20 Регистр управления интерфейсом 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 0хЗЗ Выводы порта С
DDRC 0x14 0x34 Регистр направления передачи данных порта С
PORTC 0x15 0x35 Регистр данных порта С
PINB 0x16 0x36 Выводы порта В
DDRB 0x17 0x37 Регистр направления передачи данных порта В
PORTB 0x18 0x38 Регистр данных порта В
PINA 0x19 0x39 Выводы порта А
DDRA 0x1А 0хЗА Регистр направления передачи данных порта А
PORTA 0x1В 0x3В Регистр данных порта А
EECR 0x1С 0x3С Регистр управления памяти EEPROM
EEDR 0х1D 0x3D Регистр данных памяти EEPROM
EEARL 0x1Е 0хЗЕ Регистр адреса памяти 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Е 0x4Е Регистр управления В таймера/счетчика Т/С1
TCCR1A 0x2F 0x4F Регистр управления А таймера/счетчика Т/С1
TCNTO 0x32 0x52 Счетный регистр таймера/счетчика Т/СО
TCCRO 0x33 0x53 Регистр управления таймера/счетчика Т/СО
MCUCR 0x35 0x55 Регистр управления микроконтроллером
TIFR 0x38 0x58 Регистр флагов прерываний от таймеров/счетчиков
TIMSK 0x39 0x59 Регистр маскирования прерываний от таймеров
GIFR 0хЗА 0х5А Общий регистр флагов прерываний
GIMSK 0x3В 0x5В Общий регистр маскирования прерываний
SPL 0x3D 0x5D Указатель стека (младший байт)
SPH 0x3Е 0х5Е Указатель стека (старший байт)
SREG 0x3F 0x5F Регистр состояния


При этом следует отметить, что в различных моделях микроконтроллеров некоторые из перечисленных регистров не используются, а адреса, не указанные в табл. 1.1, зарезервированы компанией Аtmel для использования в будущем.

Большинство из перечисленных регистров будут рассмотрены позже в ходе изложения теоретического материала, сейчас же обратим внимание только на регистр состояния SRЕG (аналог в микроконтроллерах Р1С — регистр STATUS).

Наши рекомендации