Регистры специальных функций микроконтроллеров Р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).