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