КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Типовые процедуры ввода. данных
Опрос двоичного датчика. Двоичный датчик типа переключатель подключен к входу D5 порта 4 МП-контроллера. Если контакт разомкнут, то на входе D5 присутствует сигнал 1, если замкнут, то D5=0. Необходимо в некоторой части УП контроллера в зависимости от значения сигнала на входе D5 передать управление фрагменту программы с меткой LABELA (D5=0) или фрагменту с меткой LABELA (D5=1). На рисунке 51. представлена БСА программы, реализующей процедуру опроса датчика. Программа имеет символичное имя INPKEY (ввод ключа), используемое в качестве метки начальной команды этой программы. При программировании с использованием механизма подпрограмм можно обращаться к этой процедуре опроса датчика по команде CALL INPKEY и выходить из нее по команда RET. На языке ассемблера текст программы будет выглядеть так:
Если фрагменты LABELA и LABELB оформить в виде подпрограмм, то программа будет иметь вид: INPKEY: IN 04 ANI 20H CZ LABELA CALL LABELB RET
Рисунок 51 – Схема алгоритма опроса двоичного счетчика Рисунок 52 – Схема алгоритма ожидания события
Ожидание события. Известно, что контроллеры объектов работают в реальном масштабе времени и, следовательно, их функционирование должно определяться событиями, происходящими в объекте или процессе управления. События фиксируются с использованием двоичных датчиков, размещенных на объекте управления. Если есть задача по ходу выполнения УП приостановить процесс, продвижение но программе реализуется до тех пор, пока в результате процессов происходящих в объекте управления, не замкнется контакт двоичного датчика подключенного ко входу D2 порта 7. На рисунке 52 представлена БСА ожидания события. Она имеет символическое имя HUNT (засада) и может быть многократно использована основной УП контроллера по команде CALL HUNT. На языке ассемблера текст программы читается так:
Аналогичным образом с изменением различных кодов маски в команде ANI можно осуществлять отмежевание множества событий, фиксируемых различными датчиками, присоединенными к другим входам порта ввода информации. Обнаружение импульсного сигнала. Программа, опрашивающая состояние датчика импульсного сигнала, обнаруживает не только факт появления, но и факт сброса сигнала. Пусть импульсный датчик подключен к входу D7 порта 4. БСА состоит из двух процедур: ожидание появления фронта сигнала и ожидание его спада (рис.53). Текст программы имеет вид:
Реализуемый программой цикл ожидания выполняется за 13,5 мкс и импульсы с меньшей длительностью не фиксируются контроллером. Для обнаружения кратковременных импульсов используют два способа: буферизацию импульса на триггере флага и систему прерывания. При фиксации импульса с помощью триггера флага на вход порта поступает не кратковременный сигнал с датчика, а сигнал от триггера флага с динамическим входом (рис.54). Триггер устанавливается по фронту импульса, а сбрасывается программой вследствие выдачи управляющего воздействия через рт 7. Таким образом, флаг инициируется на новый цикл слежения за кратковременным импульсом.
Рисунок 53 – Схема алгоритма
Рисунок 54. Схема включения триггера обнаружения импульсного флага для фиксации краткого сигнала временных импульсов В случае использования системы прерывания для отслеживания кратковременных импульсов выход их источника подключается к входу запроса прерывания ЗПР микропроцессора. Устранение дребезга контактов. У датчиков, имеющих механические или электромеханические контакты (реле, клавиши и т.п.), возникает явление, называемое дребезгом, так как при замыкании контактов имеет место переходный процесс. В этом случае сигнал с контакта может быть прочитан МП-контроллером как последовательность 0 и 1. Этот дребезг можно ликвидировать схемными средствами с использованием одновибратора, буферного триггера, а также программным путем (рис.55 а, б, и в). Применяют в основном два программных способа ожидания установившегося значения: - временная задержка; - отсчет заданного числа совпадающих значений сигнала. Устранение дребезга контактов по первому способу основано на том, что уп, обнаружив замыкание контакта, запрещает его опрос на время, равное паспортному времени переходного процесса контакта (1...50 мс).
Рисунок 55 – Подавление дребезга контактов: а - использование одновибратора; б - использование буферного триггера; в - БСА, использующая временную задержку Например, датчик подключен к входу порта 7. На рисунке 55, «в» представлена БСА, а программа имеет вид:
Временная задержка реализуется подпрограммой DELAY, вызываемой командой CALL. Дополнение программы DEBNC группой команд IN 07H ANI 08H JNZ DBNC. После команды CALL DELAY позволяет не только устранить дребезг контактов, но и отфильтровать помеху импульсного типа. Устранение дребезга путем подсчета заданного числа совпадающих значений сигнала состоит в многократном считывании сигнала с контакта и подсчете удачных опросов N (т.е. опросов, обнаруживших, что контакт устойчиво замкнут). Число N подбирается экспериментально и равно 10-50. Опрос группы двоичных датчиков. На практике МП-контроллеры связаны не с одним датчиком, а с группой независимых или взаимосвязанных датчиков. В этих случаях МП-контроллер, анализируя состояния датчиков, выполняет процедуру передачи управления соответствующим фрагментом прикладной программы. Например, программа INPGR обеспечивает переда чу управления по четырем направлениям в соответствии с БСА на рисунке 56, в зависимости от состояния датчиков, подключенных ко входам DO... D2 порта 3. Анализ состояния датчиков начинается с бита DO и выполняется последовательными сдвигами содержимого аккумулятора в сторону младших разрядов.
Если датчиков много, то передача управления реализуется контроллером через таблицу переходов. В работе взаимосвязанных датчиков часто возникает необходимость осуществить передачу управления не только в зависимости от двоичного эквивалента принятого кода, как в рассмотренном выше примере, но и в зависимости от соотношения принятого кода и некоторой заранее определенной установки. Пример. В порте 3 группы двоичных датчиков формируется двоичный код. Если он четный, то передать управление программе с меткой LABELC, если нет - программе с меткой LABELD. Напишем программу:
Рисунок 56 – Схема алгоритма опроса группы автономных датчиков Проверка на четность производится по окончании его младшего разряда, а потому эту проверку выполняют сдвигом в сторону младших разрядов (RAR) и условным переходом по признаку СЧУ.
Пример. В порте 3 от группы датчиков формируется двоичный код. Если десятичный эквивалент кода лежит в диапазоне 17 < х < 109, то передать управление программе с меткой LABELE, в противном случае - программе с меткой LABELF. Текст программы:
Сравнение чисел выполняется командой CPI, а передача управления или одной командой JC (JNC), или парой команд JS, JZ (JNC, JNZ) и зависит от того, подлежат ли анализу на равенство числа, определяющие границы диапазона, или нет. Выделение и обработка отдельных бит при вводе информации. Байт информации, поступающий на аккумулятор МП из порта ввода, как правило, является совокупностью независимых бит, поэтому в задачах управления возникает необходимость выделения из байта определенного бита. Это может быть выполнено двумя способами: наложением маски или логическим сдвигом. Логические операции с непосредственным операндом осуществляют наложение маски. Как правило, это операция логического умножения (команда ANI). В результате маскирования выбранного бита изменяется значение признака Z (Z=1, если результат = 0). Передача управления осуществляется командами условного перехода JZ (переход, если = 0) или JNZ (переход, если не = 0). Пример программы выделения бита D2 порта 3:
Наложением маски можно выделить и группу бит. Для выделения старшего или младшего бита, а также для выделения последовательности бит используются операции логического сдвига (RAL, RLC, RAR, RRC). В результате выполнения этих операций модифицируется признак переноса CY. Передача управления осуществляется командами JC (переход, если CY =1).
Пример программы выделения младшего бита Do порта 3:
Дата добавления: 2015-04-29; Просмотров: 458; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |