Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

354 Микроконтроллеры AVR от азов программирования... Один из этих регистров-указателей может также использоваться в качестве указателя адреса данных, размещенных в памяти программ (Flash -памяти). Эти дополнительные составные 16-разрядные регистры именуются X, Y и Z. Подробнее они будут описаны далее в этом разделе. АЛУ поддерживает арифметические и логические операции между двумя регистрами или между константой и регистром. В АЛУ также могут выполняться операции с отдельными регистрами. После каждой арифметической операции обновляется регистр статуса для того, чтобы отразить информацию о ее результате. Последовательность выполнения программы может быть изменена командами условного и безусловного перехода, а также командой вызова подпрограммы, в которых используется непосредственная адресация. Большинство инструкций AVR представляет собой одно 16-разрядное слово. Каждый адрес памяти программы содержит 16-битовую инструк ­ цию или половину 32-разрядной инструкции. При выполнении процедуры обработки прерывания или подпро ­ граммы текущее значение счетчика команд (PC) сохраняется в стеке. Стек фактически размещен в одном адресном пространстве с памятью данных SRAM (ОЗУ) и, следовательно, размер стека ограничен только раз ­ мером SRAM и тем, какую часть SRAM использует остальная программа. Программа пользователя обязательно должна инициализировать ука ­ затель стека (SP) сразу после сброса (прежде, чем будет выполнена под ­ программа или будет вызвано прерывание). Указатель стека (SP) имеет свой конкретный адрес в пространстве регистров ввода-вывода. К дан ­ ным в ОЗУ (SRAM) можно получить доступ, используя пять различных способов адресации, поддержанных архитектурой AVR. Адресное пространство всех видов памяти в архитектуре AVR явля ­ ются регулярным линейным. Гибкий модуль прерываний имеет ряд реги ­ страторов управления в адресном пространстве регистров ввода-вывода и дополнительный флаг глобального разрешения прерываний в реги ­ стре статуса. Каждый вид прерывания имеет свой отдельный вектор в таблице век ­ торов прерываний. Прерывания имеют приоритет в соответствии с их положением в таблице векторов прерываний. Чем ниже адрес вектора прерывания, тем выше приоритет. Пространство регистров ввода-вывода содержит 64 адреса для реги ­ стров управления периферийными устройствами, регистров управле ­ ния режимами работы процессора и другими функциями ввода/вывода. К любому регистру ввода-вывода можно получить доступ непосред ­ ственно по его номеру или как к ячейке памяти данных. В адресном про ­ странстве памяти данных регистры ввода-вывода располагаются сразу после файла регистров общего назначения (0x20 — 0x5F).

RkJQdWJsaXNoZXIy MTExODQxMg==