Белов, А.В. Микроконтроллеры 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 _________________________________________________________ Переход к подпрограмме. У этого оператора всего один параметр — относительный адрес начала подпрограммы. Относительный адрес —
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==