Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Группы команд
Все команды МП К1810 можно разделить на несколько групп.
Команды передачи данных: По командам данной группы выполняются операции
передачи четырех типов: общие, аккумуляторные, адресные и признаковые. Команды
первых трех типов не изменяют содержимое регистра признаков, а по командам
четвертого типа выполняется прямая загрузка регистра признаков.
Команды арифметических операций: сложение, вычитание, умножение и деление
одно – или двухбайтных целых чисел со знаками и без знаков. В операциях над
целыми числами со знаком фиксируется переполнение OF. Числа со знаками
представляются в дополнительном коде. Имеются команда коррекции при операциях с
десятичными (двоично-кодированными) данными. Все команды арифметических
операций изменяют содержимое регистра признаков.
Команды логических операций и операций сдвига. В состав данной группы команд
входят команды инверсии операнда NOT, восемь различных команд сдвига и команды
логических операций И, ИЛИ и исключающее ИЛИ.
Команды
операций
с
цепочками
данных. Цепочкой
данных
называют
последовательность байт или слов, размещённых в смежных ячейках памяти.
Обработка цепочек данных производится поэлементно в программных циклах. МП
К1810 имеет специальные команды, которые не только обрабатывают цепочки данных
поэлементно, но и выполняют вспомогательные процедуры инкрементирования
указателя данных, декрементирования счётчика с проверкой на нуль и т.д.
Команды передачи управления. Имеют несколько разновидностей: вызов, безусловный
переход, возврат, условный переход, итерация, прерывание. Команды передачи
управления вызывают продолжение выполнения программы с новой ячейки памяти.
Команды управления микропроцессором: сброс переноса, дополнение переноса,
установка переноса, сброс направления, установка направления, сброс и установка
прерывания, останов, ожидание и обращение к сопроцессору.
Можно считать, что система команд 16-разрядного процессора 8086/88 (К1810)
является подмножеством команд 32-разрядных процессоров 80х86.
Описание языка программирования
При реализации цифровых регуляторов по аналоговому прототипу в большинстве
случаев основным требованием к программному обеспечению (ПО) является
минимальное время выполнения программ. Это достигается использованием кодов
команд процессора, либо применением языка ассемблера. Программирование в кодах
трудоёмко, программы трудночитаемы, в них сложно вносить изменения, велика
вероятность ошибок при программировании. Поэтому использование кодов команд
целесообразно только при разработке небольших программ, в ходе отладки программы
для внесения в неё небольших изменений или для просмотра небольших частей
программы.
Язык ассемблера изоморфен машинному языку, то есть каждому оператору языка
ассемблера соответствует, как правило, одна команда процессора. Это позволяет, с
одной стороны, воспользоваться всеми возможностями системы команд МП, а с другой
– избавиться от необходимости оперировать кодами команд путём замены их на
мнемокоды, что существенно упрощает процесс программирования и отладки.
Для лучшей наглядности ассемблерных программ и для ускорения процесса
программирования при написании программ регуляторов (ПИ и ПИД) кроме команд
ассемблера используются макроопределения. Макроопределения представляют собой
последовательность операторов на языке ассемблера (команд и псевдооператоров),
которые могут несколько раз появиться в программе. После того как макроопределение
задано, его имя можно использовать в исходной программе вместо
последовательности
команд.
Кроме
того,
можно
включить
несколько
макроопределений в библиотеку и использовать любые макроопределения в разных
программах.
Описание программ регулятора
В качестве примера рассмотрим алгоритм программ ПИД – регуляторов, который
заключается в вычислении значения выходной величины регулятора в зависимости от
закона изменения входной величины ошибки управления. Общая формула разностного
уравнения для вычисления значения выходной величины, полученная на основании
методики синтеза цифровых регуляторов, изложенной в главе 17, имеет вид:
Uрег(iT)={bnE(iT)+bn-1E[(i-1)T]+…+b0E[(i-n)T]-amUрег[(i-1)T]--am-1Uрег[(i-2)T]-…-a0Uрег[(im)T]}, (19.1)
где: b0,b1,…,bn – коэффициенты числителя ДПФ регулятора;
a0,a1,…,am - коэффициенты знаменателя ДПФ регулятора,
Uрег(iТ), Uрег [(i-1)T], Uрег[(i-2)T,],…, Uрег[(i-m)T] – дискретные значения регулируемой
(выходной) величины регулятора;
E(iT), E[(i-1)T], E[(i-2)T],
регулятора.
…, E[(i-n)T]
–
дискретные
Константам am, am-1,…,a0; bn, bn-1,…,b0 соответствуют
1,…, Acon0; BconN, BconN-1,…, Bcon0 соответственно.
значения
входной
величины
идентификаторы AconM, AconM-
На каждом такте программа считывает дискретное значение ошибки управления Еvar0 и
вычисляет
выходное
значение Uvar0.Для
вычисления
результата
кромеEvar0 используются предыдущие входные Еvar1, Evar2,… и предыдущие выходные
величины Uvar1, Uvar2,…. Для каждого метода численного интегрирования количество
значений из предыдущих так-тов различно, но ал-горитм сходен. На рис.19.4 показана
схема алгоритма ПИД–регулятора.Тексты программ для различных методов
численного интегрирования (метод трапеций, метод Симпсона, метод Уэдля)
приведена на дискете. Там приведены и макроопределения для каждой программы
Рис.19.4. Схема алгоритма работы программы ПИД - регулятора
Для упрощения программы и для уменьшения времени вычислений разностного
уравнения произведения сомножителей (коэффициентов bi и аi и переменных Е и U) и
поочередное их суммирование со знаком выполняется в одной операции – умножения
с суммированием (вычитанием) к общей переменной результата, обозначаемой
как Uvar0. В начале каждого такта вычислений переменная Uvar0 обнуляется
макрокомандой Clear - Uvar1, затем в зависимости от знака, произведение либо
складывается
с Uvar0 макрокомандой Ml-Plus,
либо
вычитается
из Uvar0 макрокомандой Mul-minus.
Использование
общей
переменной Uvar0 даёт
возможность обойтись без промежуточных результатов.
Алгоритм программ произведения чисел со знаком, представленных в дополнительном
коде, громоздкий и требует больших затрат времени, а использование прямого кода
(старший бит – знаковый) требует анализа знаков и временного их маскирования перед
каждым произведением чисел. Поэтому во всех программах ПИД–регуляторов, знаки
всех переменных и константы хранятся в компактном виде (Sgn-var). Перед каждым
циклом работы, знаки всех будущих произведений вычисляются одной операцией –
логической
функцией
исключающего
«ИЛИ».
Результат
запоминается
в
переменной Sgn-bt,
содержимое
которой
побитно
анализируется
перед
исполнением Mul-Plus, либо Mul-Minus. Для ускорения операции сдвига переменных,
вместо команд пересылки данных типа “mov” в программах применены более
эффективные цепочечные операции “movs”, осуществляющие перемещение заданного
массива 16 – разрядных слов в определённом участке памяти. Перемещение можно
выполнить за один приём: рассчитанный результат Uvar0 помещается не в Uvar1, а в
последнюю из переменных Еvar . Так как Еvar и Uvar размещаются в оперативной памяти
последовательно друг за другом, в результате выполнения всех операций “movs”
содержимое последней Еvar перепишется в Uvar1.