Предыдущая Следующая

Состояние флага «удерживается» инверсно отображает текущее состояние входа подключения соответствующей ему кнопки, с учетом подавления импульсов «дребезга», т. е. он будет оставаться в состоянии логической единицы столько времени, сколько удерживается кнопка после окончания «дребезга», и сбросится при первом же импульсе «дребезга» в момент отпускания кнопки. Этот флаг можно использовать в программе для реализации каких-то дополнительных функций данной кнопки в интерфейсе ввода разрабатываемого устройства, например, для задания какого-либо режима, необходимым (но недостаточным) условием которого служит текущее «нажатое» состояние этой кнопки.

Флаг «нажато» в предлагаемом алгоритме обладает свойством «защелкивания», т. е. при отпускании кнопки он в подпрограмме не сбрасывается. Опрос состояния, с целью обнаружения установки и последующего сброса флага «нажато», возлагается на ту часть основной программы, которая отвечает за обработку сигнала о том, что данная кнопка была нажата.

Разработчик может задавать конкретное значение константы порога тайм-аута «дребезга», чтобы обеспечить требуемое время реакции устройства на нажатую кнопку, в зависимости от значения периода вызова функции кнопочного интерфейса и конкретного типа (линейных размеров) кнопки.

Исходный текст набора функций, реализующих описанный выше алгоритм обслуживания четырех кнопок, содержатся в файле кпор.с.

Файл кпор.с

//------------------------------------------------------------------------

//ПО поддержки интерфейса кнопок с функцией подавления дребезга контактов. // Каждой кнопке сопоставлено два флага: флаг нажатия (flagn_kni) и флаг // удержания (flagu_kni). Пока кнопка нажата, ее флаг удержания установлен, // при отпущенной кнопке ее флаг удержания сброшен. При нажатии на кнопку, // устанавливается ее флаг нажатия. Сброс этого флага возлагается на // стороннюю программу обработки нажатий на кнопки.

// Каждой кнопке сопоставлена константа порога подавления дребезга DREB_KNi_K.

// Все флаги устанавливаются и сбрасываются сигналами с выхода

// программного фильтра подавления дребезга (т.е. дребезг на них не влияет).

/ / Кнопка включается между входом и общим проводом и имеет контакты на замыкание. //------------------------------------------------------------------------

#include "hardware.h" J.I подключение специальных заголовков и определений //флаги нажатия на кнопки

volatile U8 flagn_knO=0, flagn_knl=0, flagn_kn2=0, flagn_kn3=0; //флаги удержания кнопок

static U8 flagu_knO=0, flagu_knl=0, flagu_kn2=0, flagu_kn3=0; //переменные накопления дребезга контактов кнопок static U8 dreb_knO=0, dreb_knl=0, dreb_kn2=0, dreb_kn3=0; //Функции опроса кнопок с подавлением дребезга

//опрос кнопки 0 ---------------------------------------------------------


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_297.html on line 122

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_297.html on line 122

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_297.html on line 122