Как сохранить число в десятичном формате в avr

Я пытаюсь ввести десятичные значения с помощью клавиатуры в ATMega8. До сих пор я мог вводить только целые значения. Код приведен ниже.

switch (keyCode)            
{

    case (0xee): 
            keyPressed="1";
            b=1;
            a=a*10+b; 
            break;
    case (0xed): 
            keyPressed="4";
            b=4;
            a=a*10+b; 
            break;
    case (0xeb): k
            keyPressed="7";
            b=7;
            a=a*10+b; 
            break;

    case (0xde): 
            keyPressed="2";
            b=2;
            a=a*10+b; 
            break;
    case (0xdd): 
            keyPressed="5";
            b=5;
            a=a*10+b; 
            break;
    case (0xdb): 
            keyPressed="8";
            b=8;
            a=a*10+b; 
            break;
    case (0xd7): 
            keyPressed="0";
            b=0;
            a=a*10+b; 
            break;
    case (0xbe): 
            keyPressed="3";
            b=3;
            a=a*10+b; 
            break;
    case (0xbd): 
            keyPressed="6";
            b=6;
            a=a*10+b; 
            break;
    case (0xbb): 
            keyPressed="9";
            b=9;
            a=a*10+b;
}       

Используя приведенный выше код, я могу сохранить целое число в регистре

case (0xe7): keyPressed=".";

В приведенном выше случае это keyCode для "." Теперь я хочу после нажатия "." на клавиатуре он сохраняет все нажатые клавиши в виде целого числа a


person Mohit Goyal    schedule 29.08.2013    source источник
comment
Что такое b и a и непонятно чего вы хотите. Приведите пример   -  person Uchia Itachi    schedule 29.08.2013
comment
Какой тип данных a? Это целочисленный тип или тип с плавающей запятой?   -  person Klas Lindbäck    schedule 29.08.2013


Ответы (1)


Это базовая школьная математика, вам нужно представлять числа в степени 10.

Example - 
138.25 = (1 * 10^2) + (3 * 10^1) + (8 * 10^0) +         // integer part
         (2 * 10^-1) + (5 * 10^-2)                      // Float part

Я не буду давать вам полный код, но вы можете использовать эту идею

if (decimal)
{
    a = a + b / (10 ^ pow);
}
else
{
    a = a * 10 + b
}

pow — это десятичная цифра. В приведенном выше примере (138,25) pow 2 равен 1, а pow для 5 равен 2. Поэтому вам нужно поддерживать счетчик для pow

person Kamath    schedule 29.08.2013