Программная модель AVR-микроконтроллеров
На рис. 3.2 изображена программная модель AVR-микроконтроллеров, которая представляет собой диаграмму программно доступных ресурсов AVR. Главным блоком на этой диаграмме является регистровый файл из 32 оперативных регистров (R0–R31), непосредственно доступных ALU (рис. 3.3).
Единое адресное пространство
|
Рис. 3.2. Программная модель AVR-микроконтроллеров
Старшие регистры объединены парами и образуют три 16-разрядных регистра, предназначенных для косвенной адресации ячеек памяти (AVR без SRAM имеют только один 16-битный регистр Z).
Все арифметические и логические операции, а также часть операций работы с битами выполняются в ALU только над содержимым оперативных регистров. Следует обратить внимание на то, что команды, которые в качестве второго операнда имеют константу (SUBI, SBCI, ANDI, ORI, SBR, CBR), могут использовать в качестве первого операнда только регистры из второй половины регистрового файла (R16–R31). Команды 16-разрядного сложения с константой ADIW и вычитания константы SBIW в качестве первого операнда используют только регистры R24, R26, R28, R30.
Рис. 3.3. Регистровый файл
Во время выполнения арифметических и логических операций или операций работы с битами ALU формирует те или иные признаки результата операции, т. е. устанавливает или сбрасывает биты в регистре состояния SREG
(Status Register) (рис. 3.4).
7 6 5 4 3 2 1 0
Рис. 3.4. Регистр состояния SREG (Status Register)
Бит С (carry) устанавливается, если во время выполнения операции был перенос из старшего разряда результата.
Бит Z (zero) устанавливается, если результат операции равен 0.
Бит N устанавливается, если MSB (Most Significant Bit – старший бит) результата равен 1 (правильно показывает знак результата, если не было переполнения разрядной сетки знакового числа).
Бит V устанавливается, если во время выполнения операции было переполнение разрядной сетки знакового результата.
Бит S = N + V (правильно показывает знак результата и при переполнении разрядной сетки знакового числа).
Бит H устанавливается, если во время выполнения операции был перенос из 3-го разряда результата.
Бит T (Trase) – бит трассировки, разрешение пошагового выполнения программ.
Бит I (Interupt) установливается для разрешения программных и аппаратных прерываний.
Признаки результата операции затем могут быть использованы в программе для выполнения дальнейших арифметико-логических операций или команд условных переходов.
Для хранения оперативных данных кроме регистрового файла можно использовать внутренние и внешние (если они имеются) блоки SRAM
(см. рис. 3.2).
Работа с внешней SRAM может быть программно разрешена/запрещена установкой/сбросом бита SRE в регистре ввода/вывода MCUSR.
Операции обмена с внутренней оперативной памятью AVRмикроконтроллер выполняет за два машинных цикла. Доступ к внешней
SRAM требует одного дополнительного цикла на каждый байт по сравнению
с внутренней памятью. Кроме того, установкой бита SRW в регистре ввода/вывода MCUSR можно программно увеличить время обмена с внешней SRAM еще на один дополнительный машинный цикл ожидания.
Выполнять арифметико-логические операции и операции сдвига непосредственно над содержимым ячеек памяти нельзя. Нельзя также записать константу или очистить содержимое ячейки памяти. Система команд AVR позволяет лишь выполнять операции обмена данными между ячейками SRAM и оперативными регистрами. Достоинством системы команд можно считать разнообразные режимы адресации ячеек памяти. Кроме прямой адресации имеются следующие режимы: косвенная, косвенная с постинкрементом, косвенная с предекрементом и косвенная со смещением.
Поскольку внутренняя и внешняя SRAM входят в единое адресное пространство (вместе с оперативными регистрами и регистрами ввода/вывода), то для доступа к ячейкам внутренней и внешней памяти используются одни и те же команды.
В ячейках оперативной памяти организуется системный стек, который используется автоматически для хранения адресов возврата при выполнении подпрограмм, а также может использоваться программистом для временного хранения содержимого оперативных регистров (команды PUSH и POP). (Микроконтроллеры, не имеющие SRAM, содержат трехуровневый аппарат-
ный стек.)
Следует иметь в виду, что если стек располагается во внешней SRAM, то вызовы подпрограмм и возвраты из них требуют двух дополнительных циклов, если бит SRW не установлен, и четырех, если установлен.
Размер стека, организуемого в оперативной памяти, ограничен лишь размерами этой памяти. Если микроконтроллер содержит на кристалле 128 байт внутренней SRAM и не имеет возможности подключения внешней SRAM, то в качестве указателя вершины стека используется регистр ввода/вывода SPL. Если есть возможность подключения внешней памяти или внутренняя память имеет размеры 256 байт и больше, то указатель стека состоит из двух регистров ввода/вывода SPL и SPH.
При занесении числа в стек автоматически выполняются следующие действия:
Дата добавления: 2016-10-17; просмотров: 772;