реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проверить нажатие кнопок, Научите pls
ivano
сообщение Oct 14 2005, 12:49
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 27-08-05
Пользователь №: 8 014



Приветствую!
Есть две кнопки подключенные к PC0, PC1 и земле. Опрос нажатия должен происходить в процедуре обработки прерывания от таймера. Как граматно проверить какая кнопка была нажата? Необходимо, чтобы этот пример работал и в CV и IAR?

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

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

Как все это сделать красиво. Интересует именно механизм проверки.
Go to the top of the page
 
+Quote Post
Rash
сообщение Oct 14 2005, 12:59
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



по IARу подсказать не могу сам с ним разбираюсь, а алгоритм думаю ткой, настроил нужные биты на вход, подключил pul-up, и делать не по таймеру а по внешнему прерыванию. на мегах есть кроме отдельных внешних прерываний такое как PCINТ, один вектор прерываний для несколькиз пинов.
Go to the top of the page
 
+Quote Post
BVU
сообщение Oct 14 2005, 13:00
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Для IAR, но думаю что пой дет и для других. smile.gif
PIND - входной регистр порта; mask_All_Key - маска проверяемого разряда.
unsigned char key_press = 0;

if(key_press == PIND & mask_All_Key)
{
......................
}


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 14 2005, 15:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Тут обсуждали уже клавиатуру.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Oct 18 2005, 11:35
Сообщение #5


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(ivano @ Oct 14 2005, 16:49)
.......Опрос нажатия должен происходить в процедуре обработки прерывания от таймера. Как граматно проверить какая кнопка была нажата? ......


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

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


с уважением
(круглый)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016