8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 50 51 52 53 54 55 56 ... 195

Очевидно, что в результате выполнения любой команды, изменяющей содержимое счетчика команд (команды перехода, вызова и возврата из подпрограмм), также возникает «разрыв» в работе конвейера, вследствие чего происходит задержка выполнения программы на несколько тактов. Длительность задержки составляет от двух до четырех тактов в зависимости от команды. Для получения более подробной информации обратитесь к описанию команд, приведенному в главе 3.

2.3.3.Команды типа «проверка/пропуск» (Test & Skip)

В командах этого типа производится проверка условия, результат которой влияет на выполнение следующей команды. Если условие истинно, следующая команда игнорируется. Например, команда SBRS Rd, b проверяет бит b регистра Rd и игнорирует следующую команду, если этот бит равен 1. При истинности проверяемого условия в конвейере возникает задержка, связанная с необходимостью загрузки и декодирования новой команды. Длительность задержки зависит от размера пропускаемой команды и составляет от одного до трех тактов.

2.3.4.Команды условного перехода

В этих командах производится проверка условия, результат которой влияет на состояние счетчика команд. Если условие истинно, происходит переход по заданному адресу. Если же условие ложно, выполняется следующая команда.

Команды условного перехода имеют ограничение по области действия. В действительности новое значение счетчика команд получается прибавлением к нему или вычитанием из него некоторого смещения. А поскольку под значение смещения в слове команды отводится всего 7 битов, максимальная величина перехода составляет от -63 до +64 слов.

Так как переход по заданному адресу осуществляется загрузкой нового значения в счетчик команд, то в случае истинности проверяемого условия в конвейере возникает задержка длительностью в один такт.

2.3.5.Команды безусловного перехода

Все рассматриваемые в книге микроконтроллеры семейства Mega имеют три команды безусловного перехода: команду относительного перехода RJMP, команду абсолютного перехода JMP, а также команду косвенного перехода UMP. В моделях ATmega2560x/2561x, ко всему прочему, есть еще одна команда — команда расширенного косвенного перехода eijmp.


Относительный переход — команда rjmp

При выполнении команды относительного перехода содержимое счетчика команд изменяется прибавлением к нему или вычитанием из него некоторого значения, являющегося операндом команды, как показано на Рис. 2.37. Поскольку под значение операнда в слове команды отводится всего 11 битов, с помощью этой команды можно переходить только в пределах -2047...+2048 слов.

1(.п Память программ

0

PC

15 1211

коп

$07FF/ /$1FFFF

Рис. 2.37. Относительная адресация памяти программ

В программах в качестве операндов этой команды вместо констант используются метки. Ассемблер сам вычисляет величину перехода и подставляет это значение в слово команды.

Поскольку команда относительного перехода изменяет содержимое счетчика команд, она выполняется за 2 такта.

Абсолютный переход — команда jmp

При выполнении команды абсолютного перехода в счетчик команд просто загружается значение нового адреса, являющееся операндом команды (Рис. 2.38). Поскольку максимальное значение адреса равны $3FFFFF, то с помощью этой команды можно осуществлять переход в пределах всего адресного пространства имеющихся на сегодняшний день микроконтроллеров AYR.

2221

коп

к

к

Память программ

0

$07FF/ /$1FFFF

Рис. 2.38. Абсолютная адресация памяти программ

Команда абсолютного перехода выполняется за 3 такта. Дополнительный (по сравнению с командой относительного перехода) такт связан с большей длиной кода команды (2 слова).


Косвенный переход — команды ijmp и eijmp

При выполнении первой команды осуществляется переход по адресу, который находится в индексном регистре Z. Соответственно, процесс выполнения команды сводится к загрузке содержимого индексного регистра в счетчик команд (Рис. 2.39, а). Так как индексный регистр — 16-битный, то максимально возможная величина перехода составляет 128 Кбайт (в моделях с объемом памяти программ более 128 Кбайт старшие биты счетчика команд обнуляются).

В микроконтроллерах ATmega2560x/256lx появилась команда расширенного косвенного перехода — eump. Эта команда осуществляет переход по адресу, младшие 16 битов которого находятся в индексном регистре Z, а старшие биты — в специальном РВВ EIND, расположенном по адресу $ЗС ($5С). Соответственно, при выполнении команды происходит копирование содержимого регистра Z и регистра ввода/вывода EIND в счетчик команд (Рис. 2.39, б).

150 Память программ

Регистр Z —

[ Регистр EIND

О 15

Регистр Z

$07FF/.../$1FFFF

Память программ

I-1- $1FFFF

б)

Рис. 2.39. Косвенная адресация памяти программ: а — команда ijmp, б — команда EUMP

Как и команда относительного перехода, команды косвенного перехода выполняются за 2 такта.

2.3.6. Команды вызова подпрограмм

Как и для реализации безусловных переходов, для вызова подпрограмм в микроконтроллерах семейства Mega имеются три команды: команда относительного вызова RCALL, команда абсолютного вызова CALL и команда косвенного вызова ICALL. А в моделях ATmega2560x/2561x есть еще одна



0 ... 50 51 52 53 54 55 56 ... 195