如何在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; } 

使用上面的代码,我可以在寄存器a中存储一个整数

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

上面的例子是“。”的keyCode。 按“”后我想要。 在键盘上它存储按整数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, pow为5为2.所以你需要维持pow计数器