Типовые процедуры вывода данных

Формирование статического и импульсного управляющих сиг­налов выхода. К МП-контроллеру через выход 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; просмотров: 324;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.