我正在尝试使用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
中按下的所有键答案 0 :(得分: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