Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
206 Микроконтроллеры AVR от азов программирования... верка младшего разряда порта РВ, то есть содержимого регистра PINB. Разряд проверяется на равенство единице (строка 33). Если значение разряда равно единице, то выполняется строка 34, в которой младшему разряду регистра PORTB присваивается нулевое зна чение. Если условие не выполняется (значение PINB.0 не равно единице), выполняется строка 36, и младшему разряду PORTB присваивается еди ница. Значение, записанное в регистр PORTB, непосредственно посту пает на выход порта РВ. В результате состояние младшего разряда порта (РВО) меняется на противоположное. В строке 37 программы расположен цикл ожидания отпускания кнопки. Он аналогичен циклу в строке 32. Только условие теперь обрат ное. Цикл выполняется до ех пор, пока значение PORTD.O равно нулю. То есть пока кнопка нажата. 5.4. Боремся с дребезгом контактов Постановка задачи Обратимся еще раз к схеме на рис. 5.2. В схеме используется кнопка, имеющая одну группу из двух нормально разомкнутых контактов. А если есть контакты, значит, есть и дребезг этих контактов. В Шаге 1 рассматри вается способ борьбы с антидребезгом аппаратным способом. Теперь рас смотрим способ борьбы с дребезгом контактов программным путем. Итак, новая задача будет сформулирована следующим образом: «Разработать схему управления светодиодом при помощи одной кнопки. При нажатии кнопки светодиод должен изменять свое состоя ние на противоположное (включен или выключен). При разработке про граммы принять меры для борьбы с дребезгом контактов». Схема Как уже говорилось ранее, принципиальная схема остается прежней (см. рис. 5.2). Алгоритм Алгоритм нам придется доработать. Самый простой способ борьбы с дребезгом — введение в программу специальных задержек. Рассмотрим это подробнее. Начнем с исходного состояния, когда контакты кнопки разомкнуты. Программа ожидает их замыкания. В момент замыкания возникает дребезг контактов.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==