【问题标题】:How to store a number in decimal format in avr如何在avr中以十进制格式存储数字
【发布时间】:2013-08-29 08:46:58
【问题描述】:

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

上面的case是"."的keyCode现在我想按“。”在键盘上,它将所有按下的键存储在整数 a 中

【问题讨论】:

  • ba 是什么,不清楚你想要什么。举个例子
  • a 是什么数据类型?是整数类型还是浮点类型?

标签: c calculator avr atmega


【解决方案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维护计数器

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多