{
if( !BTN1_cur ) //Если текущее состояние 0, то кнопка нажата
state = 1; //Переменная состояния означает, что кнопка нажата
}
BTN1_prev = BTN1_cur; //Текущее состояние сохраняется в переменной,
//которая будет предыдущей в следующем цикле проверки
return state; //Возвращаем состояние 0 если кнопка не нажата и 1 если нажата
}
В данном примере первый светодиод зажигается при первом нажатии на кнопку 1. Необходимо модифицировать программу следующим образом:
3. Написать программу проверки состояния энкодера
Аналогично предыдущему примеру для проверки состояния энкодера необходимо использовать две переменных – с текущим и с предыдущим состоянием. В случае вращения энкодера по часовой стрелке необходимо включить первый светодиод и выключить его, если энкодер вращается в противоположном направлении.
Для этого функцию main прототипа проекта необходимо модифицировать следующим образом:
int ENCA_cur, ENCA_prev; //Глобальные переменные текущего и предыдущего состояний контакта А
int ENCB_cur, ENCB_prev; //Глобальные переменные текущего и предыдущего состояний контакта B
void main (void)
{
// Настроить порт
SCS |= 0x01; //Разрешить быстрый ввод/вывод
FIO0DIR = 0x00000000; // Все разряды порта 0 на ввод для чтения состояния кнопок и энкодера
FIO0MASK = 0; //Все разряды порта 0 работают в быстром режиме
FIO2DIR = 0x00FF; // Биты 0-7 порта 2 на вывод для управления светодиодами
FIO2MASK = 0; //Все разряды порта 2 работают в быстром режиме
ENCA_cur = ENCA_prev = (FIO0PIN & 0x00000800) >> 11; //Чтение начального состояния
//контакта А энкодера (P0.11)
ENCB_cur = ENCB_prev = (FIO0PIN & 0x00200000) >> 21; //Чтение начального состояния
//контакта B энкодера (P0.21)
while (1)//Loop forever
{
if( GetEncState() == 1 )
{
FIO2PIN = 0x01; //Вкл. первый светодиод если энкодер вращается по часовой
}
else
if( GetEncState() == -1 )
{
FIO2PIN = 0x00; //Выкл. первый светодиод если энкодер вращается против часовой
}
Delay( 100 ); //Задержка между опросами состояния >10 мсек
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.