void opros_knO() {
if (IN_KNOP0==OFF) // нажата ли кнопка?
{
if (dreb_knO > DREB_KN0_K) //да, превышен ли порог накопления дребезга?
{
if (flagu_knO==l)
{} else
{
flagu_knO=l; flagn_knO=l; }
// да, установлен ли флаг удержания? // да, ничего не делать
// нет, установить флаг удержания // установить флаг нажатия
}
else dreb_knO++;
else
{
flagu_knO=0; dreb_knO=0; }
}
//опрос кнопки 1 void opros_knl()
{
//не превышен, продолжить накопление
//не нажата
// обнулить флаг удержания // обнулить счетчик накопления подавления дребезга
// нажата ли кнопка?
if (IN_KN0P1==0FF) {
if (dreb_knl > DREB_KNl_K) //да, превышен ли порог накопления дребезга?
{
if (flagu_knl==l)
{} else
{
flagu_knl=l; flagn_knl=l;
}
// да, установлен ли флаг удержания? // да, ничего не делать
// нет, установить флаг удержания // установить флаг нажатия
}
else dreb_knl++;
}
else
{
flagu_knl=0;
dreb_knl=0;
}
}
//опрос кнопки 2 -■ void opros_kn2() {
if (IN_KN0P2==0FF)
//не превышен, продолжить накопление //не нажата // обнулить флаг удержания
// обнулить счетчик накопления подавления дребезга
// нажата ли кнопка?
{
if (dreb_kn2 > DREB_KN2_K) //да, превышен ли порог накопления дребезга? {
if (flagu_kn2==
{} else
{
flagu_kn2=l; flagn_kn2=l; }
}
else dreb_kn2++;
}
else
{
flagu_kn2=0; dreb_kn2=0; }
//
1) //да, установлен ли флаг удержания?
// да, ничего не делать
// нет, установить флаг удержания // установить флаг нажатия
//не превышен, продолжить накопление
//не нажата
// обнулить флаг удержания обнулить счетчик накопления подавления дребезга
}
//опрос кнопки 3 -----------
void opros_kn3() {
if (IN_KN0P3==0FF) {
if (dreb_kn3 > DREB_KN3 {
if (flagu_kn3==
{} else
{
flagu_kn3=l; flagn_kn3=l; }
// нажата ли кнопка?
К) //да, превышен ли порог накопления дребезга?
1) //да, установлен ли флаг удержания?
// да, ничего не делать
// нет, установить флаг удержания // установить флаг нажатия
}
else dreb_kn3++;
else
{
flagu_kn3=0; dreb_kn3=0;
}
//не превышен, продолжить накопление
//не нажата
// обнулить флаг удержания // обнулить счетчик накопления подавления дребезга
}
Этот файл будет использоваться во всех проектах, как подключаемый. Вызовы функций опроса кнопок производятся в программах проектов с частотой 1 кГц из функции-обработчика прерываний от Таймера 0 TimerlnterruptQ, содержащейся в файле hardware.c. Следует заметить, что прерывания от этого таймера, во всех предлагаемых проектах, используются для осуществления различных программных операций, которые требуется производить периодически. Определения входов подключения кнопок к микроконтроллеру содержатся в файле hardware.h. В файле кпор.с содержатся функции opros_kn0()...opros_kn3() обслуживания четырех кнопок, каждая из которых подключена к отдельной линии ввода/вывода. Эти линии в функциях имеют формальные имена IN_KNOP0...IN_KNOP3. При этом предполагается, что кнопки являются нормально разомкнутыми и включены между входами LPC2000 и общим проводом
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |