Помогите с вводом значения переменной int с кнопок

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 2
Зарегистрирован: Вт ноя 02, 2010 23:48:55

Сообщение lomik72 »

C помощью кнопок (с кнопочного телефона) нужно быстро ввести и сохранить значение переменной s .например 12 или 4768
К нопки подключены к портам с подтяжкой к + и земле
Я новичек и поэтому уже голову сломал (програмирую в codevision)
Вот кусочек програмы


eeprom int s =0; //вводимое значение может быть любым от 0 до 9999


if(PIND.0==0){?...} // кнопка 0 Организация опроса кнопок для примера произвольная
if(PIND.1==0){?...} // кнопка 1
if(PIND.2==0){?...} // кнопка 3
if(PIND.3==0){?...} // кнопка 4
if(PIND.4==0){?...} // кнопка 5
if(PIND.5==0){?...} // кнопка 6
if(PIND.6==0){?...} // кнопка 7
if(PIND.7==0){?...} // кнопка 8
if(PINС.0==0){?...} // кнопка 9
if(PIND.1==0){?...} // кнопка изменить значение
if(PIND.2==0){?...} // кнопка сохранить значение

lcd_clear();
lcd_gotoxy(0,0);
#pragma rl+
sprintf(lcd_bufer,"Значение %i ,s);
#pragma rl-
lcd_puts(lcd_bufer);
Реклама
Электрический кот
Аватара пользователя
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34

Сообщение neonix »

Изучай на здоровье :)))
http://www.avrlab.com/node/85
Такие вещи делают массивом, считаем нажатия клавиш и заполняем в массиве поочередно элементы. Впрочем думаю по приведенному примеру разберешься, лень расписывать весь алгоритм. Тем более там и так откомментированный пример.
Where technology meets enjoyment.
Контактная информация:
Реклама
Грызет канифоль
Сообщения: 296
Зарегистрирован: Ср дек 30, 2009 09:55:39

Сообщение kolobok0 »

lomik72 писал(а):...Вот кусочек програмы...
для начала упростите задачу (например одновременное нажатие только одной кнопки. см. как реагирует стандартная клава от писюка), и выпишите себе несколько постулатов.

1) таймер для антидребезга и повтора нажатия(при зажиме клавиши) можно иметь один.
2) таймер сбрасывается при отпускании любой клавиши.
3) таймер запускается при нажатии любой клавиши.
4) таймер задаёт параметры ухода от дребезга и повторного нажатия. при этом другие клавиши могут быть нажаты.
5) опросов надо делать несколько. с тестированием нажатия(без очистки) и с очисткой результата.

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

дальше творите :)

удачи вам
(круглый)
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»