Просмотр этой темы:
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
Кто-нибудь реализовывал уже это?Работу с клавиатурой?
Отправлено: 20.11.2011 22:58
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
о ужас... и как я тебе объясню как надо программировать?есть такие понятия как текущая вводимая позиция, кнопка принятия резульата и т.д.
Отправлено: 20.11.2011 23:23
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
алгоритм напиши, пожалуйста.
Отправлено: 21.11.2011 7:14
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
Я и хочу реализовать с кнопкой принятия результата для окончания ввода, счетчик для подсчета количества введенных цифр (1-5, если > 5 - то ошибка), массив из 10 элементов для хранения числа (0-9). А вот как сохранить нужное мне число(например 6565) в 16-битную переменную(например addr) и в нужной мне последовательности, вот в этом и проблема!!!
Отправлено: 21.11.2011 9:18
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
в том то и дело, что вводить надо в массив для элементов введенного числа.
Индекс=0 опрос клавиатуры . в зависимости от нажатой кнопки(сделать задержку для антидребезга) в массив[индекс]= заносим нажатую цифру индекс ++ опрос клавиатуры . в зависимости от нажатой кнопки(сделать задержку для антидребезга) в массив[индекс]= заносим нажатую цифру и т.д. Как только нажали ввод, преобразуем числа по вышенаписанной формуле путем умножения на 10000, 1000, 100, 10 и выходим из куска ввода
Отправлено: 21.11.2011 13:00
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
клавиатуру я организую не матричную, а кнопки от клавиш через резисторы(Условия позволяют так сделать).
ВОт пример кода: void KEYBOARD (void) { if (pp != 0) pp--; if (!ZERO) { if (pp == 0) { writed(10); // 0 on LCD key[0]=0; counter++; } pp=10000; } if (!ONE) { if (pp == 0) { writed(1); // 1 on LCD key[1]=1; counter++; } pp=10000; } } //-------main KEYS-----------// void KEYS (void) { unsigned count_c=0; unsigned char addr_H=0,addr_L=0; if (pp != 0) pp--; if (!ACCEPT) // accept input data(end of inputting data) { if (pp == 0) { if (counter == 1) // 1 digit { counter=0; //.. } if (counter == 2) // 2 digits { counter=0 //.. } } pp=10000; } Подскажи, пожалуйста, не совсем понял!
Отправлено: 21.11.2011 14:59
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
if (!TWO)
{ if (pp == 0) { writed(2); // 2 on LCD key[2]=2; counter++; } pp=10000; } if (!THREE) { if (pp == 0) { writed(3); // 3 on LCD key[3]=3; counter++; } pp=10000; } if (!FOUR) { if (pp == 0) { writed(4); // 4 on LCD key[4]=4; counter++; } pp=10000; } if (!FIVE) { if (pp == 0) { writed(5); // 5 on LCD key[5]=5; counter++; } pp=10000; } if (!SIX) { if (pp == 0) { writed(6); // 6 on LCD key[6]=6; counter++; } pp=10000; } if (!SEVEN) { if (pp == 0) { writed(7); // 7 on LCD key[7]=7; counter++; } pp=10000; } if (!EIGHT) { if (pp == 0) { writed(8); // 8 on LCD key[8]=8; counter++; } pp=10000; } if (!NINE) { if (pp == 0) { writed(9); // 9 on LCD key[9]=9; counter++; } pp=10000; } Подскажи, пожалуйста, как все эти 9 клавиш обработать?
Отправлено: 21.11.2011 15:05
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
Вот,для начала, простенькая функция опроса кнопок unsigned char IsKeyPressed(void) // 0 if (KeyPressed[1]==FALSE) //...
Отправлено: 22.11.2011 12:15
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
А дальше как сохранять в 16 бит. перемнную все эти цифры?
Я алгоритм действий понимаю. Но только вот как програмно это ореализовать= ступор(((
Отправлено: 22.11.2011 14:18
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
и получить коненчное чило в 16-битной пер., которое было введено пользователем.
Отправлено: 22.11.2011 16:01
|
|