Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проверить нажатие кнопок
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ivano
Приветствую!
Есть две кнопки подключенные к PC0, PC1 и земле. Опрос нажатия должен происходить в процедуре обработки прерывания от таймера. Как граматно проверить какая кнопка была нажата? Необходимо, чтобы этот пример работал и в CV и IAR?

Как обозвать через define ну скажем первый разряд PINC? Граматно ли это?

Как проверить через if конкретный разряд PINC?

Как все это сделать красиво. Интересует именно механизм проверки.
Rash
по IARу подсказать не могу сам с ним разбираюсь, а алгоритм думаю ткой, настроил нужные биты на вход, подключил pul-up, и делать не по таймеру а по внешнему прерыванию. на мегах есть кроме отдельных внешних прерываний такое как PCINТ, один вектор прерываний для несколькиз пинов.
BVU
Для IAR, но думаю что пой дет и для других. smile.gif
PIND - входной регистр порта; mask_All_Key - маска проверяемого разряда.
unsigned char key_press = 0;

if(key_press == PIND & mask_All_Key)
{
......................
}
rezident
Тут обсуждали уже клавиатуру.
kolobok0
Цитата(ivano @ Oct 14 2005, 16:49)
.......Опрос нажатия должен происходить в процедуре обработки прерывания от таймера. Как граматно проверить какая кнопка была нажата? ......


По ссылки там вроде бы мысли изложены. Могу добавить только ышо пару нюансов...
а) Входы клавы выделены. Тогда возможен опрос прям из обработчика прерывания таймера...
б) Входы клавы совмещены с шиной. Тогда немного хитрее... Опрос в основном цикле (синхронно по отношению к шине), но с учётом временных засечек от таймера.

Но в любом случае использовать таймер Вам придёться. И рекомендую сразу закладывать такие весчи как автоповтор и антидребезг. Описанние по ссылки - очень похожи на логику которую приходилось реализовывать (у кого там мысли схожы?). Правда у меня код был поменьше, без матрицы и одновременным нажатием...


с уважением
(круглый)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.