【问题标题】:Floating type value in ATMega8ATMega8 中的浮点型值
【发布时间】:2013-08-29 06:41:00
【问题描述】:

我的微控制器不处理浮点类型值,那么如何使用 int 对浮点类型值进行操作?

就像我有一个值存储在寄存器 a=5 现在我想将它乘以 0.65 并将结果存储在另一个寄存器 c 中? 我该怎么做? 在使用 int 时,它解决了在使用 float 时将小数值放在一边,它显示“?”

【问题讨论】:

  • 根据您使用的编译器,即使目标 CPU 没有,它也可能具有浮点处理。
  • 为什么不支持?
  • 我需要提取“.”后面的值只有我会将它用作整数..告诉我一种方法来做到这一点?假设我通过键盘输入一个随机数说 abcd.efgh 现在我只想要 efgh .. 我该如何使用它??
  • 您需要存储字符并将其转换为整数或浮点数。 ATMega* 支持浮点运算。将其转换为字符数组并使用atof函数
  • 这个问题已经解决了thanx all..请移步新问题:) stackoverflow.com/questions/18506198/…

标签: c calculator microcontroller avr atmega


【解决方案1】:

您正在混合多个问题:

首先:即使您的目标控制器不包含浮点单元 (FPU),也可以使用 SW 库完成计算。 这个库的使用通常是自动发生的。你可以在浮点数中进行计算。 这些库在代码大小和执行速度方面相对庞大。即使您只添加简单的浮点运算,您也会注意到代码大小的巨大增加。

第二个问题是通过 printf 例程的输出。由于浮动端口支持通常不需要,它被条带化以节省代码大小。您可以通过添加库 libprintf_flt.a libm.a 显式激活它并使用链接器选项 -Wl,-u,vfprintf

您也可以使用 ftoa 函数。

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多