26.01.2013, 02:49
|
|
Временная регистрация
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
|
Re: Помогите с обработкой кнопок в CVAVR
Всем большое спасибо! С вашей помощью разобрался.
Тему можно закрыть!
|
|
|
|
08.11.2013, 13:40
|
|
Прохожий
Регистрация: 08.11.2013
Адрес: Украина, Донецк
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите с обработкой кнопок в CVAVR
Сообщение от Saadov
|
PHP код:
|
int kn, Key = 0;
while(1)
{
if(!PINB.1){ kn = 0; delay_ms(20); while (PINB.1 == kn); Key=4; };
if(!PINB.2){ kn = 0; delay_ms(20); while (PINB.2 == kn); Key=3; };
};
|
В вашем случае мы нажали PINB.1 и присвоили переменной Key значение 4, дальше у нас по ходу действия программы проверяется нажата ли PINB.2, если не нажата, то Key присваивается значение 0, т.е вы почти сразу же обнуляете Key.
Код выше работает так, вы нажали кнопку, ждем 20 мсек пока пройдет дребезг, снова проверяем не изменилось ли состояние кнопки, ждем пока изменится и присваиваем переменной нужное значение.
|
Объясните пожалуйста смысл переменной kn в этом примере.
Последний раз редактировалось ran_075; 08.11.2013 в 13:48.
|
|
|
|
08.11.2013, 13:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Помогите с обработкой кнопок в CVAVR
Сообщение от ran_075
|
Объясните смысл переменной kn в этом примере.
|
С этой переменнй сравнивается значение на пине через 20 ms и позволяет отрабатывать действие, только после отпускания кнопки.
|
|
|
|
08.11.2013, 16:51
|
|
Прохожий
Регистрация: 08.11.2013
Адрес: Украина, Донецк
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите с обработкой кнопок в CVAVR
Сообщение от Saadov
|
С этой переменнй сравнивается значение на пине через 20 ms и позволяет отрабатывать действие, только после отпускания кнопки.
|
Спасибо за ответ. Но.
Разве ваш код
Сообщение от Saadov
|
PHP код:
|
int kn, Key = 0;
while(1)
{
if(!PINB.1){ kn = 0; delay_ms(20); while (PINB.1 == kn); Key=4; };
if(!PINB.2){ kn = 0; delay_ms(20); while (PINB.2 == kn); Key=3; };
};
|
|
не равноценен этому коду?
PHP код:
|
int kn, Key = 0;
while(1)
{
if(!PINB.1){delay_ms(20); while (PINB.1 == 0); Key=4; };
if(!PINB.2){delay_ms(20); while (PINB.2 == 0); Key=3; };
};
|
|
|
|
|
11.11.2013, 21:36
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 945
Сказал спасибо: 25
Сказали Спасибо 175 раз(а) в 124 сообщении(ях)
|
Re: Помогите с обработкой кнопок в CVAVR
Сообщение от Wiza_
|
Key=0;
if(!PINB.1) Key=4;
if(!PINB.2) Key=3;
При одновременно нажатых кнопках Key=3;
|
Key=0;
if(!PINB.1) Key+=4;
if(!PINB.2) Key+=3;
При одновременно нажатых кнопках Key=7. Всего-то суммировать, и новичку не требуется пока вникать в битовые операции, чтобы обработать 2 одновременно нажатые кнопки.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:44.
|
|