1. Сколько команд включает система команд микроконтроллера?
2. На какие группы разделены эти команды?
3. Как длительность машинного цикла микроконтроллера соотносится с его тактовой частотой?
4. С какими типами данных может оперировать микроконтроллер?
5. Укажите назначение флагов регистра SREG.
6. Может ли порт одновременно являться источником операнда и прием-
ником результата операции?
7. Какие способы адресации используются в микроконтроллере?
8. Приведите примеры логических и арифметических команд.
9. Как инвертировать отдельные биты портов?
10. Какие переходы возможны в командах управления?
11. Поясните отличия длинного, абсолютного и относительного перехо-
дов в программах.
12. Как организовать процедуру ожидания с помощью одной команды?
13. Какие команды используются при организации подпрограмм?
1. Система команд микроконтроллеров семейства AVR Mega весьма развита и насчитывает в различных моделях от 130 до 135 различных команд.
2. Которые
по функциональному признаку могут быть разделены на следующие группы:
– арифметические команды и команды сдвига;
– логические команды;
– команды передачи управления;
– команды пересылки данных;
– команды битовых операций;
– команды управления системой. 3. Длительность выполнения команд составляет от одного до четырех так-тов задающего генератора (зависит от типа команды).
4. Большинство команд имеют формат в одно 16-разрядное слово. Исключение составляют команды, у которых одним из операндов является 16-битный адрес. 5. 6. Да может. 7. В микроконтроллере используются следующие способы адресации данных: прямая, регистровая, непосредственная, косвенная и неявная. 8. Арифмитические команды
Add – сложить
Fmul - дробное умножения без знака Fmuls с знаком
Adiw – сложить с константой
Sub – вычесть
Mul – умножить без знака Muls с знаком Логический команды
And - Логический И между регистрами
Andi – Логический И между регистром и константой
Or - Логический ИЛИ между регистрами
Ori - Логический ИЛИ между регистром и константой
Eor – Исключения ИЛИ между регистрами 9. Инвертирует отдельный биты портов 10. Rjmp – относительный переход (k)
Call – безусловный вызов процедуры (k)
Jmp – безусловный переход (k)
Rcall – относительный вызов процедуры (k)
Icall – косвенный вызов процедуры по указателю (z) 11. Длинный переход - переход по всему адресному пространству памяти программ. В команде содержится полный 16-битный адрес перехода (ad 16). Трёхбайтные команды длинного перехода содержат в мнемокоде букву L (Long). Всего существует две такие команды: LJMP - длинный переход и LCALL - длинный вызов подпрограммы. На практике редко возникает необходимость перехода в пределах всего адресного пространства, и чаще используются укороченные команды перехода, занимающие меньше места в памяти. Абсолютный переход - переход в пределах одной страницы памяти программ размером 2048 байтов. Такие команды содержат только 11 младших битов адреса перехода (adll). Команды абсолютного перехода имеют формат 2 байта. Начальная буква мнемокода - А (Absolute). При выполнении команды в вычисленном адресе следующей по порядку команды ((PC) = (PC) + 2) 11 младших битов заменяются на ad 11 из тела команды абсолютного перехода. Короткий относительный переход позволяет передать управление в пределах от - 128 до +127 байт относительно адреса следующей команды (команды, следующей по порядку за командой относительного перехода). Существует одна команда короткого безусловного перехода SJMP (Short). Все команды условного перехода используют данный метод адресации. Относительный адрес перехода (rel) содержится во втором байте команды. 12. Sleep – перевод в режим сна
13. Все эти функции выполняются двумя командами: CALL и RET. Команда CALL обеспечивает вызов подпрограмм. При этом вызов может осуществляться по прямому и косвенному адресу. Команда RET обеспечивает возврат из подпрограммы в точку вызова. Эта команда должна завершать любую процедуру. При этом она может находиться и не в конце процедуры, но исполняться будет последней. |