Микроконтроллер AVR является МК типа RISC с Гарвардской архитектурой, которая позволяет выполнение большинства операций за один такт. Это представление связано с тем, что они включают в себя расходы времени по передаче данных из памяти программ. Исключением для правила - "все команды выполняются за один такт", является выполнение команд с данными в 16 бит, переходы и т.д.
Команда ASM представляет собой действие, которое может выполнить МК. Команда состоит из имени и рабочих операндов, левого и правого. Существуют команды с одним операндом или вовсе без операндов.
Левый операнд хранит в себе результат данной выполненной команды.В качестве операндов могут быть: РОН(R), константа(k), адрес памяти или периферийный регистр(P).
Команда ASM имеет следующий формат:
<мнемоника> <левый операнд>, <правый операнд>
мнемоника - имя команды, является аббревиатурой задания, которое он выполняет.
операнд - адрес доступа к ресурсу МК или константа для операций с константами.
Язык ASM подразумевает, что каждая команда переводится непосредственно в машинный код. Мнемоника команды на самом деле является представлением машинного кода в форме понятной программисту. Для операций передачи , правый операнд служит источником , а левый приёмником. Для арифметической обработки или логической операции, как правило, проходящими между операндами результат сохраняется в левом операнде, называемый операндом назначения.
Доступ посредством адресов операндов часто неудобно, поэтому они заменяются именем констант. Например, для РОН - R1, R2 ... R31. Периферийные регистры - PORTA, PINB, DDRC. Обычно эти адреса описаны в специальных файлах, которые могут быть включены в директиву предварительной обработки следующим образом:
.include "<tip_mcu>def.inc"
Пример: .include "m16def.inc" - включает константы для работы МК ATmega16
Мы выделяем несколько путей адресации через ресурсы микроконтроллера:
- Прямая адресация - включает в себя изменения данных непосредственно в регистре (COM), если операции с одним операндом (LDI,TST);
- Прямая адресация с двумя регистрами - адресация данных , находящихся в двух регистрах одновременно;
- Прямой доступ к памяти - ситуация, когда один операнд - РОН, а другой адрес памяти(LDS, STS);
- Прямой доступ к периферии- (IN, OUT);
- Косвенная адресация-ситуация,когда адрес находится в одном из регистров x,y,z;
- Доступ к памяти с прединкриментом;
- Косвенная адресация со смещением;
- Прямая адресация к константам программы;
- Косвенный доступ к памяти программ.
Любая передача данных или обработка данных предполагает участие регистра общего назначения(РОН). При использование регистров общего назначения выделяется конкретные архитектурные ограничения.
- R0 .. R15 - не доступны для задач с константами
- R1: R0 - всегда служит в качестве места назначения результата операции MUL независимо от операндов.
- R26 .. R30 - формирует три пары регистров для команд, которые требуют косвенного доступа к ресурсам МК.
R29:R28 - Y - YH:YL
R31:R30 - Z - ZH:ZL
R31:R30 - Z - ZH:ZL
AVR микроконтроллеры имеют 90 - 120 набор команд, которые могут быть сгруппированы в следующие категории:
- Команды логических операций;
- Команды арифметических операций;
- Команды для работы с битами;
- Команды пересылки данных;
- Команды передачи управления;
- Команды контроля системы;
Команды арифметических операций и команды сдвига выполняют, как сложение, вычитание, сдвиг(вправо, влево), инкрементирование, декрементирование, а также умножение. Все операции производятся над РОН. При этом МК оперирует как знаковыми так и беззнаковыми числами. Почти все команды выполняются за один такт, оперирующие 2 - байтными значениями, за двa.
Команды битовых операций выполняют установку или сброс заданного бита РОН или РВВ. Причём для изменения битов регистра состояния SREG имеются отдельные команды. Следует помнить, что в командах CBR и SBR операндом является битовая маска, а не номер бита. Для получения битовой маски из номера бита следует воспользоваться оператором "сдвиг влево"("<<").
Команды пересылки данных пересылают содержимое ячеек, находящихся в адресном пространстве памяти данных. Разделение адресного пространства на три части (РОН, РВВ, ОЗУ) предопределило разнообразие команд данной группы. Пересылка данных может производиться в следующих направлениях:
Команды пересылки данных пересылают содержимое ячеек, находящихся в адресном пространстве памяти данных. Разделение адресного пространства на три части (РОН, РВВ, ОЗУ) предопределило разнообразие команд данной группы. Пересылка данных может производиться в следующих направлениях:
РОН <-> РОН;
РОН <-> РВВ;
РОН <-> память данных.
Кроме того, этот набор команд включает в себя две команды для работы со стэком - PUSH, POP.
Команды передачи управления это команды перехода, вызова подпрограмм и возврата из них и команды типа "проверка/пропуск", пропускающие следующую за ними команду при выполнении некоторого условия. Также к этой группе относятся команды сравнения, формирующие флаги регистра SREG и предназначенные, как правило, для работы совместно с командами условного перехода.
Операции контроля системы:
- NOP - нет операции, 1 такт.
- SLEEP - переход в спящий режим, 3 такта.
- WDR - сброс сторожевого таймера, 1 такт.
Niciun comentariu:
Trimiteți un comentariu