Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.10.2009, 11:14
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Инверсия кнопок
Подскажите. Сейчас у меня на кнопках (ногах МЕГИ_"88") висит 1 нажимаем на кнопку там вырисовывается "0" значит кнопка нажата, а мне нужно чтобы изночально был "0" а при нажатие "1" Спасибо
Последний раз редактировалось FedorChek; 06.10.2009 в 11:19.
|
|
|
|
06.10.2009, 11:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Инверсия кнопок
Включить кнопку к плюсу питания, на ножку - pull-down резистор. Но при этом энергопотребление вырастет
|
|
|
|
06.10.2009, 12:56
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Инверсия кнопок
Считывание реализованно с помощью этих процедур (с работой которых я толком не разобрался)
unsigned char read_buttons_ones(void)
{
unsigned char temp;
temp=PIND;
temp››=2;
temp|=0xf8;
return ~temp;
}
unsigned char read_buttons(void)
{
unsigned char buttons, count, temp;
buttons=read_buttons_ones();
if (ent_flag) {buttons|=1;ent_flag=0;}
count=128;
timer_counter1_start();
while((buttons==0)&&timeout1) buttons=read_buttons_ones();
if (!timeout1) return 0x00;
while(count--) buttons|=read_buttons_ones();
temp=read_buttons_ones();
while(temp)
{
buttons|=temp;
temp=read_buttons_ones();
}
return buttons;
}
Далее идет main
buttons=read_buttons();
switch(buttons)
{
case ENT_button: goto mode_recept;
Вот кнопка ENT_button не инвертирована (работает) т.е. когда нажимаем переходим к процедуре mode_recept
Как прочитать "нажатие" на остальные две кнопки у которых вместо "0" единица
|
|
|
|
06.10.2009, 15:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.01.2008
Сообщений: 1,143
Сказал спасибо: 379
Сказали Спасибо 430 раз(а) в 274 сообщении(ях)
|
Re: Инверсия кнопок
Сообщение от MisterDi
|
Включить кнопку к плюсу питания, на ножку - pull-down резистор. Но при этом энергопотребление вырастет
|
И отключите внутрений подтягивающий резистор на ноге
CBI PORTx,n
пусть енергию не жрет!
|
|
|
|
06.10.2009, 19:12
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Инверсия кнопок
Извините помоему я не корректно задал вопрос
Подскажите как считать нажатия на кнопки (желательно примером)
схема следующая и менять ее нельзя прилогается в файле
|
|
|
|
06.10.2009, 19:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Инверсия кнопок
Код:
|
unsigned char read_buttons_ones(void)
{
return (PIND ›› 2) & 0x06;
} |
Если кроме инверсии все остальное не изенялось.
|
|
|
|
06.10.2009, 22:59
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Инверсия кнопок
Я так полагаю return (PIND ›› 2) & 0x06; в место
return ~temp; нужно поставить?
Спасибо
|
|
|
|
07.10.2009, 12:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Инверсия кнопок
Сообщение от FedorChek
|
Я так полагаю return (PIND ›› 2) & 0x06; в место
return ~temp; нужно поставить?
|
Я привел всю функцию. Ее тоже можно расписать в несколько строк и с левыми переменными, но зачем?
|
|
|
|
08.10.2009, 11:40
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Инверсия кнопок
На такую схему
unsigned char read_buttons_ones(void)
{
return (PIND ›› 2) & 0x06;
}
ни одна из кнопок не реагирует изначалиная функция считывала нажатие кнопки (той что через транзистор подключина на рисунки "32") остальные соответственно не работают как их "подключить"
#define ENT_button 1 "32"
#define ESC_button 4 "2"
#define SEL_button 2 "1"
до переработки схемы все кнопки были подключены через транзисторы
и работали отлично.
|
|
|
|
08.10.2009, 12:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Инверсия кнопок
Ja nevnimatelno prochital i reshil chto vse proinvertirovat nujno. Togda tak:
return ((PIND ›› 2) ^ 0x01) & 0x07;
Последний раз редактировалось kison; 08.10.2009 в 12:51.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:22.
|
|