- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Устранение дребезга контактов
Рисунок 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 ; порта P3 на ввод сигнала |
BEGIN: NEXT: |
MOV R3, #20 JB P3.4, BEGIN
DJNZ R3, NEXT |
; Инициализация счетчика ; Если контакт разомкнут, ; (Р3.4=«1»), то переход к ; инициализации счётчика ; Иначе декремент ; счётчика и проверка его ; на равенство нулю. Если ; R3=0, то выход из цикла, ; иначе – переход на опрос ; разряда порта |
|
… |
; Подпрограмма обработки ; нажатия кнопки |
|
JMP BEGIN |
;Переход на начало ; программы |
Листинг 4.7 – Программа устранения дребезга контактов путем введения временной задержки
; Программа написана для случая подключения датчика к входу Т0.
; Временная задержка реализуется подпрограммой DELAY.
; Длительность временной задержки определяется числом,
; загружаемым в регистры R1:R0.
; При замыкании на вход Т0 поступает логический 0.
|
.ORG 0000H |
; Адрес начала программы |
|
SETB T0 |
; Настройка разряда 4 ; порта P3 на ввод сигнала |
BEGIN: |
JB T0, $
CALL DELAY |
; Ожидание замыкания ; контактов
; Вызов процедуры, ; реализующей временную ; задержку |
|
JB T0, BEGIN |
; Повторная проверка ; замыкания контактов ; после паузы. Если нет ; замыкания, то на начало |
|
… |
; Подпрограмма обработки ; нажатия кнопки |
|
JMP BEGIN |
; Переход на начало ; программы |
; Процедура временной задержки |
||
DELAY:
|
PUSH 0 PUSH 1 MOV R1, #7Fh |
; Сохранение в стеке ; регистров R0 и R1 ; Загрузка старшего байта |
WAIT: |
MOV R0, #FFh
DJNZ R0, $
DJNZ R1, WAIT
POP 1 POP 0
|
; Загрузка младшего байта ; счетчика R1:R0 ; Декрементирование ; младшего байта счётчика ; и переход на эту же ; команду, если R00 ; Декрементирование ; старшего байта счётчика ; и переход на метку WAIT, ; если R10 ; Восстановление из стека ; регистра R0 ; Восстановление из стека ; регистра R1 |
|
RET |
; Выход из процедуры |