Материал: двоичные датчики1

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

б) после выдержки времени, достаточного для окончания процесса дребезга, проверяется состояние датчика; в) если десятикратно зафиксировано нажатое состояние датчика, то считается, что датчик сработал;

г) если было зафиксировано отжатое состояние датчика, то считается, что было ложное срабатывание датчика; д) фиксируется первое разомкнутое состояние датчика;

е) после выдержки времени, достаточного для окончания процесса дребезга, проверяется состояние датчика; ж) если десятикратно зафиксировано отжатое состояние датчика, то считается, что датчик сработал;

з) если было зафиксировано нажатое состояние датчика, то считается, что было ложное срабатывание датчика; и) в случае правильного срабатывания датчика, увеличивается содержимое счетчика числа срабатываний;

к) время счета задается счетчиком-таймером и составляет 1 сек.; л) счетчик-таймер загружается перед началом опроса датчика.

Краткие теоретические сведения Ожидание импульсного сигнала. Схема подключения датчика импульсного

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

Оформлять процедуры WAITC и WAITO в виде подпрограмм нецелесообразно, так как это удлиняет программу, а длина и, следовательно, время исполнения программы определяют минимальную длительность импульса, который может быть обнаружен программой.

Последовательность склеивания процедур WAITC и WAITO зависит от формы импульса. Для “отрицательного” импульса (1-0-1) процедура WAITC предшествует процедуре WAITO, для “положительного” (0-1-0) следует за ней.

Ниже приведены примеры программной реализации процедуры ожидания “отрицательного” импульсного сигнала при подключении датчика к биту 3 порта 1 при условии, что начальное состояние входа - единичное:

;Версия для МК48

WAITC: IN A,P1 ; ввод байта

JB3 WAITC ; если P1.3=1, то ждать

WAITO: IN A,P1 ; ввод байта

CPL A ; инверсия

JB3 WAITO ; если P1.3=0 , то ждать

;Версия для МК51

WAITC: JB WAITC ; ожидание появления импульса WAITO: JNTO WAITO ; ожидание окончания импульса

Аналогичным образом строится программа при подключении датчика импульсного “отрицательного” сигнала к тестовому входу МК48:

6

;Версия для МК48

WAITC: JTO WAITC ; ожидание появления импульса WAITO: JNTO WAITO ; ожидание окончания импульса

Программная реализация цикла ожидания накладывает ограничения на длительность импульса: импульсы длительностью меньше времени выполнения цикла ожидания могут быть “не замечены” МК. Минимально допустимые длительности импульсов для различных способов подключения импульсного датчика к МК.

Для обнаружения кратковременных импульсов можно использовать способ фиксации импульса на внешнем триггере флага.

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

Текст программы для МК48 приведен ниже: FLAGIN: ; процедура ввода флага в МК48 ANL P2,#0FEH ; сброс флага

ORL P2,#01H

WAITC: JTO WAITC ; ожидание прихода импульса

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

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

Для простоты реализации программы считаем, что общее количество деталей не превышает 99:

; версия для МК48 count: clr

ЛАБОРАТОРНАЯ РАБОТА № 4

ФОРМИРОВАНИЕ СИГНАЛОВ УПРАВЛЕНИЯ ИСПОЛНИТЕЛЬНЫМИ МЕХАНИЗМАМИ

Цель работы: изучение основных методов формирования управляющих сигналов для исполнительных механизмов.

Задание: к выводам поpтов P1 и P2 подключены исполнительные механизмы. Текущее состояние исполнительных механизмов зафиксиpовано в текущем слове состояния системы. Внешняя пpогpамма может изменить в

7

пpоизвольные моменты вpемени эталонное слово состояния системы. Пpинцип pаботы пpогpаммы следующий:

-пеpиодически, с заданным пеpиодом, пpогpамма опpашивает эталонное слово состояния (то, которое нужно установить) системы и сpавнивает его с текущим словом состояния системы,

-пpи обнаpужении несовпадения содеpжимого эталонного и текущего слов состояния, пpогpамма изменяет состояние соответствующих линий поpта, начиная с младших,

-каждое изменение состояния исполнительных механизмов фиксиpуется в текущем слове состояния системы,

-пеpиод опpоса - 100 ms.

Пpогpамма должна быть офоpмлена в виде подпpогpаммы, обpащение к котоpой осуществляется командой CALL.

Краткие теоретические сведения Формирование статических сигналов. Для управления исполнительным механизмом, работающим по принципу включено/выключено, на соответствующей

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

В случае параллельного управления группой автономных исполнительных механизмов, подключенных к выходному порту, формируется не двоичное управляющее воздействие, а управляющее слово (УС), имеющее формат байта, каждому разряду которого ставится в соответствие 1 или 0 в зависимости от того, какие исполнительные механизмы должны быть включены, а какие выключены.

Управляющие слова удобно формировать командами логических операций над содержимым порта. Команда ANL используется для сброса тех бит УС, которые в операнде (маске) заданы нулем. Команда ORL используется для установки бит УС. Командой XRL осуществляется инверсия бит в соответствии с выражением x + 1 = x.

Для формирования сложных последовательностей УС удобно пользоваться табличным способом, при котором все возможные УС упакованы в таблицу, а прикладная программа МК вычисляет адрес требуемого УС выбирает его из таблицы и передает в порт вывода.

Формирование импульсных сигналов. Управляющее воздействие типа "импульс" можно получить последовательной выдачей сигналов включить или отключить с промежуточным вызовом подпрограммы временной задержки:

PULS: ;ВЫДАЧА ИМПУЛЬСА В ЛИНИЮ 3 ;ПОРТА 1 МК 48

ON: ANL P1,#11110111B ;ВКЛЮЧЕНИЕ ИСПОЛНИТЕЛЬНОГО ;МЕХАНИЗМА

CALL DELAY ;ВРЕМЕННАЯ ЗАДЕРЖКА

OFF: ORL P1,#00001000B ;

8

ОТКЛЮЧЕНИЕ ИСПОЛНИТЕЛЬНОГО ;МЕХАНИЗМА Длительность импульса определяется временной задержкой, реализуемой подпрограммой DELAY.

.

ЛАБОРАТОРНАЯ РАБОТА № 5

ФОРМИРОВАНИЕ ИМПУЛЬСНЫХ СИГНАЛОВ Цель работы: освоить основные методы программной генерации динамических сигналов различного типа.

Задание:

1.Сформировать на одном из выводов порта Р2 микроконтроллера 1816ВЕ48

и1816ВЕ51 одиночный импульсный сигнал, длительность которого задается содержимым одного из регистров Ri

2. Сформировать на одном из выходов порта Р2 микроконтроллера 1816ВЕ48

и1816ВЕ51 периодический импульсный сигнал, период которого и скважность задаются содержимым регистров Ri.

Принцип работы программы:

• программа должна быть оформлена в виде подпрограммы, обращение к которой осуществляется командой CALL.

• внешняя программа в случайные моменты времени заносит в регистры Ri микроконтоллера значения, определяющие длительность импульса, период следования сигнала и его скважность. Разрабатываемая подпрограмма должна использовать эти значения для формирования сигналов на выходах портов микроконтроллеров.

Краткие теоретические сведения Управляющее воздействие типа "импульс" можно получить

последовательной выдачей сигналов включить и отключить с промежуточным вызовом подпрограммы временной задержки:

; Версия для МК 48

PULS: ; ВЫДАЧА ИМПУЛЬСА В ЛИНИЮ 3 ПОРТА 1

ON: ANL P1,11110111B ;ВКЛЮЧЕНИЕ ИСПОЛНИТЕЛЬНОГО ;МЕХАНИЗМА

CALL DELAY ;ВРЕМЕННАЯ ЗАДЕРЖКА

OFF: ORL P1,00001000B ;ОТКЛЮЧЕНИЕ ИСПОЛНИТЕЛЬНОГО ;МЕХАНИЗМА

. . .

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

Генерация периодического управляющего воздействия (меандра). Для генерации меандра удобно воспользоваться процедурой выдачи импульсного управляющего воздействия (PULS) и подпрограммой реализации временной задержки, равной половине периода сигнала (DLYX).

; Версия для МК 48

MAEANDR:

9

ON: ANL P1,0F7H

CALL DLYX

OFF: ORL P1,04H

CALL DLYX

JMP ON

;Версия для МК 51

MEANDR: XCOR: CPL P1.3 ACALL DLYX SJMP XCOR

;Версия для МК 48

DLYX: MOV R2,#X ; (R2) Å X COUNT: DEC R2 ; ДЕКРЕМЕНТ R2 И

DJNZ R2,COUNT ; ЦИКЛ , ЕСЛИ НЕ НУЛЬ RET ; ВОЗВРАТ

Бесконечный периодический сигнал формируется в линии 3 порта 1; на остальных линиях порта 1 сигналы остаются неизменными.

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

ЛАБОРАТОРНАЯ РАБОТА № 6

РАЗРАБОТКА ПРОГРАММЫ УПРАВЛЕНИЯ ГРУППОЙ СЕМИСЕГМЕНТНЫХ ИНДИКАТОРОВ В ДИНАМИЧЕСКОМ РЕЖИМЕ Задание: Семисегментные индикаторы объединены в группу с общим анодом или общим катодом. Управление индикаторами осуществляется через порты

P1 и P2 с соответствующими усилителями. Принцип работы программы следующий:

-коды отображаемых цифр хранятся в заданной области памяти данных;

-программа периодически, с периодом достаточным для получения приемлемой яркости отображаемых цифр, обновляет информацию на линиях порта;

-коды отображения цифр должны храниться в памяти программ;

-обновление информации на линиях портов по прерываниям от таймера;

-количество отображаемых десятичных цифр - 5.

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

10

Источник: https://studfile.net/preview/16672607/