0

ATMega8 でキーパッドを使用して 10 進数値を入力しようとしています。今までは整数値しか入力できませんでした。コードは以下のとおりです。

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=".";

上記の場合は、「。」のキーコードです。「。」を押した後、今欲しい。キーパッドでは、押されたすべてのキーが整数 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は 10 進数です。上記の例 (138.25) では、pow 2 は 1 で、pow5 は 2 です。したがって、カウンタを維持する必要があります。pow

于 2013-08-29T09:13:03.147 に答える