0

我正在尝试使用 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=".";

以上案例是“。”的keyCode。现在我想按下“。” 在键盘上,它将所有按下的键存储在整数 a 中

4

1 回答 1

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,而pow5 是 2。所以你需要维护计数器pow

于 2013-08-29T09:13:03.147 回答