Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

Шаг 5. Переходим непосредственно к разработке устройств и программ 207 I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I Рис. 5.10. Алгоритм управления светодиодом с антидребезгом Дребезг приводит к тому, что на соответствующем разряде порта PD вместо простого пере ­ хода с единицы в ноль мы полу ­ чим серию импульсов. Для того, чтобы избавится от их пара ­ зитного влияния, программа должна сработать следующим образом. Обнаружив первый же нулевой уровень на входе, про ­ грамма должна перейти в режим ожидания. В режиме ожидания программа приостанавливает все свои действия и просто отра ­ батывает задержку. Время задержки должно быть выбрано таким образом, чтобы оно превышало время дребезга контактов. Такую же процедуру задержки нужно ввести в том месте программы, где она ожи ­ дает отпускания кнопки. Для разработки нового алгоритма возьмем за основу предыдущий (см. рис. 5.9). Доработанный алгоритм с добавлением опера ­ ций антидребезговой задержки приведен на рис. 5.10. Как вы можете видеть из рисунка, вся доработка свелась к включению двух процедур задержки. Одной — после обнаружения факта нажатия кнопки, а второй — после обнаруже ­ ния факта ее отпускания. I Программа на Ассемблере Для реализации нового алгоритма немного доработаем программу (листинг 5.3). Новый вариант программы приведен ниже (листинг 5.5). В этой программе используются следующие новые для нас операторы: rcall _________________________________________________________ Переход к подпрограмме. У этого оператора всего один параметр — относительный адрес начала подпрограммы. Относительный адрес —

RkJQdWJsaXNoZXIy MTExODQxMg==