Типовые процедуры вывода данных
Формирование статического и импульсного управляющих сигналов выхода. К МП-контроллеру через выход D1 порта вывода 3 подключен исполнительный механизм, работающий по принципу включить/выключить. Программа формирования управляющего сигнала состоит из двух команд:
1)- включение исполнительного механизма:
ON: | MVI A, 02H | загрузка в аккумулятор |
кода 00000010 | ||
OUT ОЗН | выдача управляющего байта в порт 3 |
2)- выключение исполнительного механизма:
OFF: | XRA А | ; обнуление аккумулятора |
OUT ОЗН | ; выдача байта в порт 3 |
Выдача управляющего импульсного воздействия реализуется последовательным выполнением программ включения, временной задержкой и отключением по программе:
UPDOUN: | MVI A, 04H | ; формирование D2==1 |
OUT ОЗН | ;вывод в порт 3 | |
CALL DELAY | ||
XRI A,04H | ; инвертирование D2 | |
OUT ОЗХ | ;вывод в порт 3 |
Управляющее слово «включить» задается командой загрузки в аккумулятор непосредственного операнда (MVI), а команду «отключить» удобно
не загружать в аккумулятор, а формировать из предыдущего УС инвертированием соответствующего бита (XRI). Эту программу можно применять для управления группой станков. Длительность импульсного управляющего воздействия определяется временем выполнения вызываемой подпрограммы задержки DELAY.
Вывод УС на группу автономных - исполнительных механизмов. В случае, когда к нескольким выводам одного выходного порта МП-контроллера подсоединено несколько автономных станков, формируется не двоичное управляющее воздействие, а УС, имеющее формат байта, каждому разряду которого ставится в соответствие 1 или 0 в зависимости от того, какие исполнительные механизмы должны быть включены, а какие выключены. По командам логических операций формируются УС. Команда ANI применяется для сброса тех бит УС – которые в операнде (маске) заданы 0. Команда ORI применяется для установки в 1 определенный бит по маске и для упаковки УС. Командой XRI осуществляется инверсия отдельных бит УС (в соответствии с выражением 1+Х=Х), а также обнуление выходного порта (Х+Х=0). Примеры формирования УС, когда выходной порт МП-контроллера работает на группу станков (ДО...Л7), которые присоединены к выходам (ДО...Д7) порта вывода 1. Для всех примеров программы, если это не оговаривается особо, будем считать, что копия последнего УС сохраняется в аккумуляторе МП.
Задача 1. Отключить станки LO, L5 и L7, не изменяя состояния остальных, управляемых из порта 1.
ANI | 5EH | ; установка в нуль Do, D5, Д7 |
; без изменения остальных бит | ||
OUT | 01Н | ; выдача УС в порт 1 |
Задача 2. Включить станки L2, L3 и L4, не изменяя состояния остальных.
ORI | ICH | ; наложение маски 00011100 |
OUT | 01H | ; выдача УС в порт 1 |
Задача 3. Выдать УС на станки. Управляющий байт для LO ... L3 хранится в младшей тетраде регистра В, а для L4 ... L7 в старшей тетраде регистра С.
MVI | A,O FH | ; загрузка в А маски 00001111 |
ANA | В | ; маскирование В |
MOV | В, А | ; сохранение в регистре В кода ООООХХХХ |
MOV | А, С | |
ANI | OFO H | ; наложение маски 11110000 |
ORA | В | ; склеивание тетрад, |
; т.е. формирование УС | ||
OUT | 01H | ; выдача УС |
Задача 4. Реализовать пульсирующую индикацию на выходе D5, не изменяя состояния остальных.
LOOP: | XRI | 20H | ; наложение маски 00100000 |
OUT | 01H | ; выдача УС в порт 1 | |
CALL | DELA Y | ||
JMP | LOOP |
Командой CALL DELAY осуществляется вызов программы временной задержки необходимой длительности.
Формирование последовательности импульсных сигналов с изменяемыми длительностью и скважностью. Программное формирование последовательностей импульсных сигналов выполняют чередованием подпрограмм выдачи изменяемого значения (0 или 1) сигнала и параметризуемых подпрограмм временных задержек.
Масштабирование
При вводе и выводе информации возникает задача согласования диапазонов представления чисел в МП и в аппаратуре связи контроллера с объектом управления. Эта задача называется масштабированием и сводится к операции умножения числа на некоторую константу К.
Масштабирование двоичных кодов, вводимых с цифровых датчиков для последующей обработки в МП или выводимых из МП на станок, можно выполнить с применением стандартных подпрограмм умножения и деления. Тем не менее более эффективным может оказаться способ умножения числа на константу путем сдвига (по быстродействию и требуемому объему памяти программы).
Способ основан на том, что сдвиг двоичного кода числа на один бит влево (в сторону старших бит) эквивалентен его умножению на 2, а сдвиг на один бит вправо - делению на 2.
Пример. Необходимо двоичный код X, полученный от цифрового датчика, умножить на константу К=2,5. Результат масштабирования числа может быть получен в соответствии с выражением Х х 2,5 = Х х 2 + Х/2, т.е. путем суммирования сдвинутых влево и вправо двоичных кодов числа X.
STC | ; сброс признака переноса | |
CMC | ||
IN | 01H | ; ввод Х из порта 1 |
MOV | B,A | ; создание копии Х в регистре В |
RAR | ; сдвиг вправо | |
MOV | C,A | ; создание копии Х/2 в регистре С |
MOV | А, В | |
RAL | ; сдвиг влево | |
ADD | С | ; формирование результата в А |
Пример. Требуется сформированное в аккумуляторе МП УС Y умножить на К=17. Операция умножения заменяется (Y х 17 = Y х 16 + Y) четырьмя операциями сдвига и сложением.
STC | ; сброс признака переноса | |
CMC | ||
MOV | В, А | ; создание копии Y в регистре В |
RAL | ||
RAL | ||
RAL | ||
RAL | ||
ADD | В | ; результат в А |
Рассмотренные примеры программ для упрощения составлены в предположении, что при умножении не происходит переполнение одного байта (результат < 255).
Дата добавления: 2019-02-07; просмотров: 369;