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

 
 
> Проблема с преобразованиями
max_mart
сообщение Nov 22 2011, 05:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Здравствуйте.
Реализую клавиатуру числовую 0-9. Для окончания ввода использую клавишу принятия ввода. Работаю с 1,2,3,4,5 значными цифрами, если введено чило, содержащее более 5 цифр, то ошибка. Как преобразовать из двоично-десятичной формы в двоичную знаю.
Но вот как реализовать сохранение группы нажатых цифр в одну переменную 16-битную - вот проблема. Например ввели число 4563, надо чтобы оно было сохранено в 16-битной переменнойи и цифры были сохранены в нужной мне последовательности после нажатия клавиши "accept".
Помогите, пожалуйста, в данной проблеме?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
max_mart
сообщение Nov 22 2011, 07:16
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Во первых я замарачиваться не стал сделал клаву просто от ножки МК через резистор на конпку.
Во вторых цифре от 0-9 соответствует 4 разрядный двоичный код, поэтому 5 цифр числа просто в 16-битную пер. не уместится, если исп. ее для хран. нажатой цифры.
И как я уже выше написал: Я не пойму только одного момента: как мне сохранить нажатый код цифры, ячтобы в дальнейшем ее расчитать и получить нужное мне число.
Вот пример на 6 цифрах:
unsigned char counter=0; // для подсчета кол-ва введенных цифр
unsigned key[6]; // массив для хранения цифры для опред. кнопки
unsigned int addr=0;

if (!ZERO)
{

writed(10); // 0 on LCD
key[0]=0;
counter++;
}
if (!ONE)
{
if (pp == 0)
{
writed(1); // 1 on LCD
key[1]=1;
counter++;
}
pp=10000;
}
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 (!ACCEPT) // accept input data(end of inputting data)
{
if (pp == 0)
{
if (counter == 1) // 1 digit
{
// надо сохр введеные цифры в пер. addr, чтобы получить 1 значное число
counter=0;
//..

}
if (counter == 2) // 2 digits
{
// надо сохр введеные цифры в пер. addr, чтобы получить 2 значное число
counter=0;
//..

}
if (counter == 3) // 3 digits
{
// надо сохр введеные цифры в пер. addr, чтобы получить 3 значное число
counter=0;
//..

}
if (counter == 4) // 4 digits
{
// надо сохр введеные цифры в пер. addr, чтобы получить 4 значное число
counter=0;
//..

}
if (counter == 5) // 5 digits
{
// надо сохр введеные цифры в пер. addr, чтобы получить 5 значное число

counter=0;
//..

}
if (counter > 5)
{
counter=0;
// отображаю ошибку


}
Вот как мне сохр. в пер. addr я не знаю.
Я знаю что, чтобы получить например число 453 из введенных цифр надо просто: 4*100+5*10+3=453 в 16 битной переменной.
Но я не знаю как мне их сохранять при нажатии клавиши, чтобы не потерять последовательность.
Помогите, пожалуйста с кодом? Дописать его, чтобы реализовать задуманное.
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 22 2011, 07:20
Сообщение #3


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(max_mart @ Nov 22 2011, 11:16) *
5 цифр числа просто в 16-битную пер. не уместится

так и "не просто" не уместится... диапазон чисел от 00000 до 99999 не помещается в 16 бит никак

вот только непонятно, почему Вы себя ограничили этими 16-ю битами?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- max_mart   Проблема с преобразованиями   Nov 22 2011, 05:22
- - Navovvol   Цитата(max_mart @ Nov 22 2011, 08:22) Здр...   Nov 22 2011, 06:21
- - stells   Цитата(max_mart @ Nov 22 2011, 09:22) Пом...   Nov 22 2011, 06:27
- - haker_fox   QUOTE (max_mart @ Nov 22 2011, 13:22) Здр...   Nov 22 2011, 06:39
- - Navovvol   Можно сделать еще интересней. Допустим диапазон от...   Nov 22 2011, 06:40
|- - haker_fox   QUOTE (Navovvol @ Nov 22 2011, 14:40) Мож...   Nov 22 2011, 06:49
- - stells   так все красиво расписывают: буфер , ОЗУ... вопро...   Nov 22 2011, 06:49
|- - haker_fox   QUOTE (stells @ Nov 22 2011, 14:49) так в...   Nov 22 2011, 06:57
|- - stells   Цитата(haker_fox @ Nov 22 2011, 10:57) Ав...   Nov 22 2011, 06:58
|- - haker_fox   QUOTE (stells @ Nov 22 2011, 14:58) а по-...   Nov 22 2011, 07:05
- - max_mart   мне нужно число 0-65535. Если мне надо будит больш...   Nov 22 2011, 07:34
- - Navovvol   к сожалению я ни черта не понимаю в С/С++   Nov 22 2011, 08:21
- - hd44780   Автор, как я понял, хочет получить, допустим, числ...   Nov 22 2011, 09:48
|- - haker_fox   QUOTE (hd44780 @ Nov 22 2011, 17:48) Буфе...   Nov 22 2011, 09:57
- - max_mart   нет не матрица. Всего 9 клавиш. Я не могу сообраз...   Nov 22 2011, 10:10
|- - ut1wpr   Цитата(max_mart @ Nov 22 2011, 14:10) нет...   Nov 22 2011, 10:49
- - max_mart   Не понял: зачем умножать на 10 и для чего прибавля...   Nov 22 2011, 11:08
|- - hd44780   Цитата(max_mart @ Nov 22 2011, 14:08) зач...   Nov 22 2011, 11:39
- - max_mart   ладно подумаю на накопителем. цифр всего 5, а мак...   Nov 22 2011, 11:54
|- - ut1wpr   Цитата(max_mart @ Nov 22 2011, 15:54) лад...   Nov 22 2011, 12:45
|- - neiver   Цитата(ut1wpr @ Nov 22 2011, 16:45) Не зн...   Nov 22 2011, 14:20
|- - ut1wpr   Цитата(neiver @ Nov 22 2011, 18:20) Здесь...   Nov 22 2011, 15:11
- - max_mart   [удалено]   Nov 22 2011, 14:05
- - max_mart   int GetCodeButton() { if (!ZERO) return 0; ...   Nov 22 2011, 15:36
|- - hd44780   Цитата(max_mart @ Nov 22 2011, 18:36) Хот...   Nov 22 2011, 17:51
- - max_mart   Хотелось бы узнать какое значение получает функция...   Nov 22 2011, 18:31
|- - hd44780   Цитата(max_mart @ Nov 22 2011, 21:31) Как...   Nov 22 2011, 18:34
|- - max_mart   [quote name='max_mart' date='Nov 22 20...   Nov 22 2011, 19:08
- - haker_fox   QUOTE (max_mart @ Nov 22 2011, 15:16) Во ...   Nov 23 2011, 04:40
- - max_mart   Конечно!!! Внутренние подтягивающие ре...   Nov 23 2011, 05:21
- - hd44780   hacker_fox, там и резистор не нужен. Нога МК - кно...   Nov 23 2011, 05:23
|- - haker_fox   QUOTE (hd44780 @ Nov 23 2011, 13:23) hack...   Nov 24 2011, 08:57
- - max_mart   С учетом всего выше сказанного реализую это все. н...   Nov 23 2011, 09:06
|- - hd44780   Ладно, хотите массив, делайте массив. Тоже верно. ...   Nov 23 2011, 13:05
- - max_mart   ))) Извиняюсь!!! Писал в торопях!...   Nov 23 2011, 18:03


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

 


RSS Текстовая версия Сейчас: 12th August 2025 - 08:06
Рейтинг@Mail.ru


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