Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
История отрасли методические указания.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

2.3. Система команд

Система команд AVR содержит более 130 операций (прил. 3). Она содержит регистровые операции, операции с битами в разрядах регистров общего назначения, команды управления ходом программы и др.

Арифметические операции (сложение и вычитание) могут выполняться с числами без знака в двоичном коде и с числами со знаком в дополнительном двоичном коде. В МК вычитание выполняется с помощью аппаратного двоичного вычитателя, у МК типа m163 имеется аппаратный умножитель. Во всех операциях умножения результат помещается в двойной регистр R0,R1. Любые операции между рабочим регистром и константой (например «#->R» или «R & #») возможны только для r16..r31, а операции с битами I/O регистров (например «1->PortB.4») – только для p0..p31.

При выполнении арифметических и логических операций формируются значения признаков результата:

– признак С принимает единичное значение:

– при появлении единицы переноса из старшего разряда при выполнении операции сложения;

– при появлении единицы займа в старший разряд при выполнении операции вычитания;

– при выходе единицы за пределы разрядной сетки при выполнении операции сдвига;

– при выполнении операций сложения и вычитания с числами без знака при переполнении разрядной сетки;

– признак Z принимает единичное значение при получении нулевого результата операции; при выполнении операции вычитания с учетом займа Z=1, если нулевой результат получен при выполнении данной и предшествующей операций;

– признак N принимает значение, равное значению старшего разряда кода результата; при выполнении арифметических операций с числами со знаком и отсутствии переполнения разрядной сетки он представляет знак результата;

– признак V принимает единичное значение, если при выполнении арифметической операции с числами со знаком возникло переполнение разрядной сетки;

– признак S=N V представляет знак результата при выполнении арифметических операций с числами со знаком вне зависимости от переполнения разрядной сетки; при переполнении разрядной сетки (V=1) знак результата противоположен значению в старшем разряде кода результата;

– признак H принимает единичное значение при наличии единицы переноса из разряда D3 в D4 при выполнении операции сложения, при наличии единицы займа в разряд D3 из разряда D4 при выполнении операции вычитания и при передаче единицы из разряда D3 в разряд D4 при выполнении операции сдвига кода влево.

Операторы условных переходов

Для реализации этих операторов используются элементы «CONDITION», в овал которого могут быть вписаны следующие условия переходов.

Шаблон условия перехода

Комментарии

Пример

SREG.# = 1

Бит # SREG равен 1

SREG.3 = 1

SREG.# = 0

Бит # SREG равен 0

SREG.5 = 0

=

Результат равен нулю (Z=0)

- =

Результат не равен нулю (Z=1)

C = 1

C = 0

>=

Больше или равно

<

Меньше

-

Отрицательный результат

+

Положительный результат

±>=

Больше или равно с учетом знака

±<

Меньше с учетом знака

H = 1

H = 0

T = 1

T = 0

V = 1

V = 0

I = 1

I = 0

Вектор используемого элемента «CONDITION» должен либо заканчиваться на метке или вершине, либо иметь имя адресуемой метки.

Операторы условного пропуска следующего оператора

В этом случае вектор используемого элемента «CONDITION» либо отсутствует, либо имеет зарезервированное слово «Skip».

Шаблон условия

Комментарии

Пример

R = R

Равенство двух рабочих регистров

r0 = r1

R.# = 0

Бит # рабочего регистра равен 0

XH.2 = 0

R.# = 1

Бит # рабочего регистра равен 1

r14.3 = 1

P.# = 0

Бит # I/O регистра равен 0

PinC.6 = 0

P.# = 1

Бит # I/O регистра равен 1

EERE = 1

Один из вариантов конструкции элемента «CONDITION»:

Вектор элемента отсутствует, а имя вектора – либо отсутствует, либо содержит зарезервированное слово «Skip». В нижеследующем примере выполнение операции:

«[X]->r2» будет пропущено, если выполнится условие «r1=r2».

Комментарии к операторам

Окно с таблицей всех существующих для выбранного типа микроконтроллера шаблонов можно открыть через пункт меню «View\Templates…» и при необходимости, выбрав любой из них с помощью мыши, загрузить в редактируемый объект, нажав клавишу «Insert».

Следует иметь в виду, что в некоторых типах МК может быть не весь набор операторов.

Символ «#» в шаблонах операторов означает константу. Они быть как положительными, так и отрицательными. Например, операторы: -2->r16 и $FE->r16 будут откомпилированы с одинаковым результатом.

Следует обратить внимание на некоторые особенности реализации безусловных переходов и вызовов подпрограмм:

– короткий, относительный безусловный переход (аналог - «RJMP») реализуется исключительно посредством элемента «JMP Vector»;

– дальний безусловный переход (аналог – «JMP k») реализуется шаблоном «JMP #» в элементе «FIELD», где «#» может быть константой c адресом перехода или именем метки (вершины).