C 如何在avr中以十进制格式存储数字

C 如何在avr中以十进制格式存储数字,c,calculator,avr,atmega,C,Calculator,Avr,Atmega,我正在尝试使用ATMega8中的键盘输入十进制值 到目前为止,我只能输入整数值 代码如下所示 switch (keyCode) { case (0xee): keyPressed="1"; b=1; a=a*10+b; break; case (0xed): keyPressed="4"; b=4;

我正在尝试使用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;
}       
使用上面的代码,我能够在寄存器a中存储一个整数

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

上面的例子是“现在我想在按下后”的键码。在键盘上,它存储整数a中按下的所有键。它是高中数学的基础,你需要用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,5的
pow
是2。
所以您需要维护
pow

的计数器,什么是
b
a
,您想要什么还不清楚。请举例说明什么数据类型是
a
?它是整数类型还是浮点类型?