![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
![]() ![]() |
При работе МК с датчиками, имеющими механические или электромеханические контакты (кнопки, клавиши, реле и т.п.), возникает явление, называемое дребезгом контактов (рисунок 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.
.ORG 0000H | ; Адрес начала программы | |
SETB T0 | ; Настройка разряда 4 ; порта P 3 на ввод сигнала | |
BEGIN: | JB T0, $ CALL DELAY | ; Ожидание замыкания ; контактов ; Вызов процедуры, ; реализующей временную ; задержку |
JB T0, BEGIN | ; Повторная проверка ; замыкания контактов ; после паузы. Если нет ; замыкания, то на начало | |
… | ; Подпрограмма обработки ; нажатия кнопки | |
JMP BEGIN | ; Переход на начало ; программы | |
; Процедура временной задержки | ||
DELAY: | PUSH 0 PUSH 1 MOV R1, #7Fh | ; Сохранение в стеке ; регистров R 0 и R 1 ; Загрузка старшего байта |
WAIT: | MOV R0, #FFh DJNZ R0, $ DJNZ R1, WAIT POP 1 POP 0 | ; Загрузка младшего байта ; счетчика R 1:R0 ; Декрементирование ; младшего байта счётчика ; и переход на эту же ; команду, если R 0 ¹ 0 ; Декрементирование ; старшего байта счётчика ; и переход на метку WAIT , ; если R 1 ¹ 0 ; Восстановление из стека ; регистра R 0 ; Восстановление из стека ; регистра R 1 |
RET | ; Выход из процедуры |
Дата публикования: 2014-11-03; Прочитано: 553 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!