Студопедия

КАТЕГОРИИ:


Архитектура-(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. На языке ассемблера текст программы будет выглядеть так:

 

INPKEY: IN 04H ; ввод в аккумулятор из порта 4
  ANI 20H ; маскирование всех разрядов введенного байта;; кроме D5
  JNZ LABELB ; переход к фрагменту LABELB, если D5=1,
    ; иначе выполнение очередной команды
LABELA: ...  
  ...  
  ...  
  JMP EX ; конец фрагмента LABELA
LABELB: ... ; начало фрагмента LABELB
  ...  
EX RET ; конец фрагмента LABELB

Если фрагменты LABELA и LABELB оформить в виде подпро­грамм, то программа будет иметь вид:

INPKEY: IN 04

ANI 20H

CZ LABELA

CALL LABELB

RET

 

 

Рисунок 51 – Схема алгоритма опроса двоичного счетчика

Рисунок 52 – Схема алгоритма ожидания события

 

Ожидание события. Известно, что контроллеры объектов рабо­тают в реальном масштабе времени и, следовательно, их функциони­рование должно определяться событиями, происходящими в объекте или процессе управления.

События фиксируются с использованием двоичных датчиков, размещенных на объекте управления. Если есть задача по ходу выполнения УП приостановить процесс, продвижение но программе реа­лизуется до тех пор, пока в результате процессов происходящих в объекте управления, не замкнется контакт двоичного датчика под­ключенного ко входу D2 порта 7. На рисунке 52 представлена БСА ожи­дания события. Она имеет символическое имя HUNT (засада) и может быть многократно использована основной УП контроллера по команде CALL HUNT.

На языке ассемблера текст программы читается так:

 

HUNT: IN 07Н ; ввод аккумулятора из порта 7
  ANI 04X ; маскирование всех разрядов
    ; введенного байта, кроме D2
  JNZ HUNT ; переход в цикл ожидания, если D2=1
    ; очередная команда
  ... ; основной программы (или команда PET)
    ; в случае, если 02=0

 

Аналогичным образом с изменением различных кодов маски в команде ANI можно осуществлять отмежевание множества событий, фиксируемых различными датчиками, присоединенными к другим входам порта ввода информации.

Обнаружение импульсного сигнала. Программа, опрашивающая состояние датчика импульсного сигнала, обнаруживает не только факт появления, но и факт сброса сигнала. Пусть импульсный датчик подключен к входу D7 порта 4. БСА состоит из двух процедур: ожи­дание появления фронта сигнала и ожидание его спада (рис.53). Текст программы имеет вид:

 

WAITC: IN 04H ; вывод из порта 4
  ANI 80H ; анализ D7
  JNZ WAITC ; если D7=1,TO ждать
WAITO: IN 04H ; вывод из порта 4
  ANI 80H ; анализ D7
  JZ WAITO ; если 07=0,то ждать, иначе
    ; выход из процедуры.

 

 

Реализуемый программой цикл ожидания выполняется за 13,5 мкс и импульсы с меньшей длительностью не фиксируются контрол­лером. Для обнаружения кратковременных импульсов используют два способа: буферизацию импульса на триггере флага и систему преры­вания. При фиксации импульса с помощью триггера флага на вход порта поступает не кратковременный сигнал с датчика, а сигнал от триггера флага с динамическим входом (рис.54). Триггер устанавлива­ется по фронту импульса, а сбрасывается программой вследствие вы­дачи управляющего воздействия через рт 7. Таким образом, флаг инициируется на новый цикл слежения за кратковременным импуль­сом.

 

Рисунок 53 – Схема алгоритма

 

Рисунок 54. Схема включения триггера обнаружения импульсного флага для фиксации краткого сигнала временных импульсов

В случае использования системы прерывания для отслеживания кратковременных импульсов выход их источника подключается к входу запроса прерывания ЗПР микропроцессора.

Устранение дребезга контактов. У датчиков, имеющих меха­нические или электромеханические контакты (реле, клавиши и т.п.), возникает явление, называемое дребезгом, так как при замыка­нии контактов имеет место переходный процесс. В этом случае сигнал с контакта может быть прочитан МП-контроллером как последова­тельность 0 и 1. Этот дребезг можно ликвидировать схемными средст­вами с использованием одновибратора, буферного триггера, а также программным путем (рис.55 а, б, и в).

Применяют в основном два программных способа ожидания ус­тановившегося значения:

- временная задержка;

- отсчет заданного числа совпадающих значений сигнала. Уст­ранение дребезга контактов по первому способу основано на том, что уп, обнаружив замыкание контакта, запрещает его опрос на время, равное паспортному времени переходного процесса контакта (1...50 мс).

 

Рисунок 55 – Подавление дребезга контактов:

а - использование одновибратора;

б - использование буферного триггера;

в - БСА, использующая временную задержку

Например, датчик подключен к входу порта 7. На рисунке 55, «в» представлена БСА, а программа имеет вид:

DBNC: IN 07H ; ввод из порта 7
  ANI 08H ; анализ состояния контакта
  JNZ DBNC ; если D3=1, то ждать
  CALL DELAY ; подпрограмма задержки
  ... ; выход из процедуры

Временная задержка реализуется подпрограммой DELAY, вызываемой командой CALL.

Дополнение программы DEBNC группой команд IN 07H ANI 08H JNZ DBNC.

После команды CALL DELAY позволяет не только устранить дребезг контактов, но и отфильтровать помеху импульсного типа.

Устранение дребезга путем подсчета заданного числа совпадающих значений сигнала состоит в многократном считывании сигнала с контакта и подсчете удачных опросов N (т.е. опросов, обнаруживших, что контакт устойчиво замкнут). Число N подбирается экспериментально и равно 10-50.

Опрос группы двоичных датчиков. На практике МП-контроллеры связаны не с одним датчиком, а с группой независимых или взаимосвязанных датчиков. В этих случаях МП-контроллер, анализируя состояния датчиков, выполняет процедуру передачи управления соответствующим фрагментом прикладной программы. Например, программа INPGR обеспечивает переда

чу управления по четырем направлениям в соответствии с БСА на рисунке 56, в зависимости от состояния датчиков, подключенных ко входам DO... D2 порта 3.

Анализ состояния датчиков начинается с бита DO и выполняется последовательными сдвигами содержимого аккумулятора в сторону младших разрядов.

INPGR: IN 03H ввод из порта 3
  RAR Do=0?
  JNC LABTL1  
  RAR D1=0?
  JNC LABEL2  
  RAR D2=0? JNC LABELS
LABEL4:   начало фрагмента программы с меткой LABEL4
LABEL3:   начало фрагмента программы с меткой LABEL3
LABEL2:   начало фрагмента программы с меткой LABEL2
LABEL 1:   начало фрагмента программы с меткой LABEL 1

Если датчиков много, то передача управления реализуется контроллером через таблицу переходов. В работе взаимосвязанных датчиков часто возникает необходимость осуществить передачу управления не только в зависимости от двоичного эквивалента принятого кода, как в рассмотренном выше примере, но и в зависимости от соотношения принятого кода и некоторой заранее определенной установки.

Пример. В порте 3 группы двоичных датчиков формируется двоичный код. Если он четный, то передать управление программе с меткой LABELC, если нет - программе с меткой LABELD.

Напишем программу:

 

IN 02Н ; ввод из порта 3
RAR   ; сдвиг кода вправо
JNC LAB ELC ; число четное
JMP LAB ELD ; число нечетное

 

 

Рисунок 56 – Схема алгоритма опроса группы автономных датчиков

Проверка на четность производится по окончании его младшего разряда, а потому эту проверку выполняют сдвигом в сторону млад­ших разрядов (RAR) и условным переходом по признаку СЧУ.

 

Пример.

В порте 3 от группы датчиков формируется двоичный код. Если десятичный эквивалент кода лежит в диапазоне 17 < х < 109, то пе­редать управление программе с меткой LABELE, в противном случае - программе с меткой LABELF.

Текст программы:

 

IN 03X ; ввод из порта 3
CPI   ; сравнение с установкой нижней границы диапазона
JC LABEL F ; число < 17
JZ LABEL F ; число = 17
CPI   ; сравнение с установкой верхней границы диапазона
JC LABEL E ; число < 109
JZ LABEL E ; число =109
JMP LABEL F  

 

Сравнение чисел выполняется командой CPI, а передача управления или одной командой JC (JNC), или парой команд JS, JZ (JNC, JNZ) и зависит от того, подлежат ли анализу на равенство числа, оп­ределяющие границы диапазона, или нет.

Выделение и обработка отдельных бит при вводе информации. Байт информации, поступающий на аккумулятор МП из порта ввода, как правило, является совокупностью независимых бит, поэтому в задачах управления возникает необходимость выделения из байта определенного бита. Это может быть выполнено двумя способами: наложением маски или логическим сдвигом.

Логические операции с непосредственным операндом осуществ­ляют наложение маски. Как правило, это операция логического умно­жения (команда ANI). В результате маскирования выбранного бита изменяется значение признака Z (Z=1, если результат = 0). Передача управления осуществляется командами условного перехода JZ (переход, если = 0) или JNZ (переход, если не = 0).

Пример программы выделения бита D2 порта 3:

 

IN ОЗН ; ввод из порта 3
ANI 04H ; наложение маски 00000100
JNZ MARK1 ; если 02=1, то переход к программе с меткой MARK1

Наложением маски можно выделить и группу бит. Для выделения старшего или младшего бита, а также для выделения последовательности бит используются операции логического сдвига (RAL, RLC, RAR, RRC). В результате выполнения этих операций модифицируется признак переноса CY. Передача управления осуществляется коман­дами JC (переход, если CY =1).

 

Пример программы выделения младшего бита Do порта 3:

IN ОЗН ; ввод из порта 3 PAP
RAR   ; сдвиг вправо
JC MARK3 ; если Do=1, то передача управления
    ; программ с меткой MARK3

 

 




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


Дата добавления: 2015-04-29; Просмотров: 458; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.