![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
![]() ![]() |
При работе МК с датчиками, имеющими механические или электромеханические контакты (кнопки, клавиши, реле и т.п.), возникает явление, называемое дребезгом контактов (рисунок 4.4). Это явление заключается в том, что при замыкании контактов возможно появление отскока контактов, которое приводит к переходному процессу. При этом сигнал с контакта может быть прочитан МК как случайная последовательность нулей и единиц. Подавить это нежелательное явление можно схемотехническими средствами с использованием буферного триггера (рисунок 4.5), но чаще это делается программным путем.
Наибольшее распространение получили два программных способа ожидания установившегося значения:
1) подсчет заданного числа последовательно совпадающих значений сигнала;
2) временная задержка.
Блок-схемы процедур подавления помех от дребезга контактов при вводе сигнала логического 0 показаны на рисунке 4.6.
В первом способе число N подбирается экспериментально для каждого типа используемых датчиков в зависимости от частоты кварцевого резонатора МК и лежит, как правило, в пределах от 5 до 50.
Устранение дребезга контакта путем введения временной задержки заключается в следующем. Программа, обнаружив замыкание контакта, запрещает опрос состояния этого контакта на время, заведомо большее длительности переходного процесса, после чего вновь проверяет наличие замыкания. Если замыкание не подтвердилось, делается вывод о случайной помехе и процесс опроса повторяется. Временная задержка (в пределах 1–10 мс) подбирается экспериментально для каждого типа датчиков. Подробное описание реализации временных задержек приведено в п. 4.3.
а) путем многократного считывания;
б) с использованием временной задержки
Рисунок 4.6 – Блок-схемы процедур подавления дребезга контактов
Примеры программ устранения дребезга контактов первым и вторым способом приведены в листингах 4.6, 4.7 соответственно.
Листинг 4.6 – Программа устранения дребезга контактов путем
многократного считывания
; Пример программного подавления дребезга контакта приводится
; для случая, когда датчик импульсного сигнала подключен к входу
; Р3.4 (Т0), счет «удачных» опросов ведется в регистре RЗ, N=20.
; При замыкании на вход Р3.4 поступает логический 0.
.ORG 0000H | ; Адрес начала программы | |
SETB P3.4 | ; Настройка разряда 4 ; порта P 3 на ввод сигнала | |
BEGIN: NEXT: | MOV R3, #20 JB P3.4, BEGIN DJNZ R3, NEXT | ; Инициализация счетчика ; Если контакт разомкнут, ; (Р3.4=«1»), то переход к ; инициализации счётчика ; Иначе декремент ; счётчика и проверка его ; на равенство нулю. Если ; R 3=0, то выход из цикла, ; иначе – переход на опрос ; разряда порта |
… | ; Подпрограмма обработки ; нажатия кнопки | |
JMP BEGIN | ;Переход на начало ; программы |
Листинг 4.7 – Программа устранения дребезга контактов путем
введения временной задержки
; Программа написана для случая подключения датчика к входу Т0.
; Временная задержка реализуется подпрограммой DELAY.
; Длительность временной задержки определяется числом,
; загружаемым в регистры R1:R0.
; При замыкании на вход Т0 поступает логический 0.
Дата публикования: 2014-11-03; Прочитано: 510 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!