- •История отрасли
- •Введение
- •1.1. Общие сведения
- •1. Меню File
- •2. Меню Edit
- •3. Меню Circuit
- •4. Меню Analysis
- •Simulation temperature (temp) – температура, при котором проводится моделирование;
- •Команда Transient … – расчет переходных процессов. Диалоговое окно содержит следующие основные данные:
- •Процент от включенной совокупности 68.0 95.0 95.5 99.0 99.7 99.9
- •Меню Window
- •Команда Circuit – вывод схемы на передний план;
- •Меню Help
- •1.2. Задание к самостоятельной работе
- •13. Провести моделирование формирователя импульсов (рис. 1.22). Зарисовать временные диаграммы и определить параметры импульсов.
- •1.3. Содержание отчета
- •1.4. Контрольные вопросы
- •Список рекомендуемой литературы
- •2.1. Общие сведения
- •2.2. Графическая среда разработки программного обеспечения
- •Элементы алгоритма:
- •2.3. Система команд
- •Операторы условных переходов
- •Представление констант
- •Распределение ресурсов мк и объявление имен
- •Форматы переменных
- •Секция объявления констант
- •Представление констант в виде алгебраических выражений
- •Метки обслуживания прерываний
- •Подключение к проекту алгоритмов из других файлов
- •2.4. Задание к самостоятельной работе
- •2.5. Содержание отчета
- •2.6. Контрольные вопросы
- •Список рекомендуемой литературы
- •Изображение базовых логических элементов по гост 2.708 – 81 и в программе моделирования
- •Схемотехническое моделирование электронных схем
- •Альбом схем
- •Примеры программ на языке графического ассемблера
- •Список задач по программированию
- •Содержание
- •1 Применение программы схемотехнического моделирования
- •2 Основы разработки программ на языке avr ассемблера
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 адресом перехода или именем метки (вершины).
