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

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 ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz