- •История отрасли
- •Введение
- •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 ассемблера
Представление констант в виде алгебраических выражений
Константа, обозначенная в шаблоне операторов как «#», может быть представлена не только непосредственно, но и в виде алгебраического выражения.
Членами такого выражения могут быть:
– константы, представленные непосредственно;
– имена констант, объявленные в секции Constants;
– имена вершин и меток, которые содержат адрес соответствующих мест в памяти программы.
– имена объявленные в секциях SRAM: и EEPROM: переменных с префиксом «@», которые содержат соответствующие адреса памяти;
– имена объявленных в секции Bits: битов регистров с префиксом «@», которые содержат номера этих битов.
В выражении могут быть использованы арифметические операции сложения: «+», вычитания: «–», умножения: «*» и целочисленного деления: «/». Кроме того, возможно использование побитовых логических операций или: «!» и: «&» и исключающего или: «^». Например в операторе:
«[@LCD_Page + 5*3]->r0» (шаблон: «[#]->R»)
«@LCD_Page + 5*3» – константа, представленная алгебраическим выражением.
Возможно построение сложных выражений с использованием круглых скобок.
Микрооператоры
Программирование только с использованием элементарных операций микроконтроллера не всегда удобно. Если, например, необходимо загрузить константу $1234 в двойной регистр X, то придется разбивать ее на старшую и младшую часть и записывать по очереди:
$12->XH
$34->XL
При этом теряется наглядность. Очевидна необходимость иметь возможность записи «$1234->X», а компилятор должен сам разложить такой оператор на составляющие «$12->XL» и «$34->XH». А если константа в десятичном виде, то такая необходимость еще острее.
Кроме того, ряд необходимых действий невозможно реализовать непосредственно элементарными операциями. Например «37->r0» или «$FF->DDRB». В обоих случаях необходимо сначала загрузить константу в какой-либо рабочий регистр из старшей половины, и лишь затем из него копировать в r0 или DDRB.
Шаблоны макрооператоров
Арифметико-логические макрооператоры. (Используется элемент «FIELD»)
-
Шаблон
Коментарий
* -> *
Копирование
* + *
Арифметическое сложение
* - *
Арифметическое вычитание
* & *
Побитная операция «И»
* ! *
Побитная операция «ИЛИ»
* ^ *
Побитная операция «Исключающее ИЛИ»
*
Сброс (запись нуля)
* ++
Инкремент
* --
Декремент
- * -
Побитная инверсия
- *
Арифметическая инверсия
* >>
Логический сдвиг вправо
> * >>
Логический сдвиг вправо с переносом
± * >>
Арифметический сдвиг вправо
<< *
Логический сдвиг влево
<< * <
Логический сдвиг влево с переносом
* ->
Копирование в стек
-> *
Копирование из стека
Макроусловия. Вписываются в элементы «CONDITION». (Звездочкой (*) обозначены произвольные операнды):
Шаблон |
Комметарий |
* = * |
Переход, если равно |
* -= * |
Переход, если не равно |
* < * |
Переход, если меньше |
* >= * |
Переход, если больше или равно |
* ±< * |
Переход, если меньше с учетом знака |
* ±>= * |
Переход, если больше или равно с учетом знака |
* -- |
Декремент и переход, если результат не равен нулю |
Операнд |
Комментарий |
R |
Рабочий регистр (...) |
# |
Константа (...) |
SRAM Var |
Переменная SRAM (...) |
EEPROM Var |
Переменная EEPROM (...) |
[#] |
Ячейка SRAM, адресуемая непосредственно |
[X] |
Ячейка SRAM, адресуемая косвенно, по X |
[--X] |
Ячейка SRAM, адресуемая косвенно, по X с предекрементом |
[X++] |
Ячейка SRAM, адресуемая косвенно, по X с постинкрементом |
[Y] |
Ячейка SRAM, адресуемая косвенно, по Y |
[--Y] |
Ячейка SRAM, адресуемая косвенно, по Y с предекрементом |
[Y++] |
Ячейка SRAM, адресуемая косвенно, по Y с постинкрементом |
[Y+#] |
Ячейка SRAM, адресуемая косвенно, по Y со смещением адреса на # байт |
[Z] |
Ячейка SRAM, адресуемая косвенно, по Z |
[--Z] |
Ячейка SRAM, адресуемая косвенно, по Z с пре-декрементом |
[Z++] |
Ячейка SRAM, адресуемая косвенно, по Z с пост-инкрементом |
[Z+#] |
Ячейка SRAM, адресуемая косвенно, по Z со смещением адреса на # байт |
P |
Регистр ввода-вывода (...) |
EE[#] |
Ячейка EEPROM адресуемая непосредственно |
EE[X] |
Ячейка EEPROM, адресуемая косвенно, по X |
EE[X++] |
Ячейка EEPROM, адресуемая косвенно, по X с пост-инкрементом |
EE[Y] |
Ячейка EEPROM, адресуемая косвенно, по Y |
EE[Y++] |
Ячейка EEPROM, адресуемая косвенно, по Y с пост-инкрементом |
EE[Z] |
Ячейка EEPROM, адресуемая косвенно, по Z |
EE[Z++] |
Ячейка EEPROM, адресуемая косвенно, по Z с пост-инкрементом |
