c - ATMega8 中的浮点类型值

标签 c calculator microcontroller avr atmega

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

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

最佳答案

您正在混合多个问题:

首先:即使您的目标 Controller 不包含浮点单元 (FPU),也可以使用软件库完成计算。 该库的使用通常会自动发生。你可以用 float 进行计算。 这些库的代码大小和执行速度相对较大。即使您只添加简单的浮点算术,您也会注意到代码大小的巨大增加。

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

您也可以使用 ftoa 函数。

关于c - ATMega8 中的浮点类型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18503888/

相关文章:

c - 定点处理器和浮点处理器有什么区别?这两种处理器如何处理 float ?

java - 控制语句: Why is my 'New Balance' change when I 'charge to credit' then 'pay credit' twice?

c - 十六进制计算器,使用 scanf 解析字符串

c - 使用 KEIL 编译器在 C 中标记多个字符串

c++ - 如何使用 xlib 正确截屏?

c - 使用 C 中的递归计算算术表达式

c - STM32单次操作持续时间是多少

c - 在 C 中打印数字行

c++ - 使用 openssl/md5 的意外 MD5 哈希值

C 双向链表插入