2013-08-29 75 views
-1

我的微控制器不處理浮點類型值,所以如何使用int對浮點類型值執行操作?ATMega8中的浮點類型值

就像我有一個值存儲在一個寄存器a = 5 現在我想乘以0.65並將結果存儲在另一個寄存器c? 我該怎麼做? 在使用int時,它解決了在使用浮點時將小數值留在一邊的問題,它顯示「?」

+2

根據您使用的編譯器,即使目標CPU沒有,它也可能有浮點處理。 –

+0

它爲什麼不支持它? –

+0

我需要提取「。」後面的值。只有我會用它作爲一個整數..告訴我一個方法來做到這一點? 假設我正在通過鍵盤輸入一個隨機數說abcd.efgh 現在我只需要efgh ..我如何使用它? –

回答

0

你混合多個問題:

第一:即使你的目標控制器不包含浮點單元(FPU)的計算可以用SW libries來完成。 這個libs通常會自動使用。你可以用float來進行計算。這些庫在代碼大小和執行速度方面相對較大。即使您只添加簡單的浮點算術,您也會注意到代碼大小的巨大增量。

第二個問題是通過printf-routines的輸出。由於不需要浮動端口支持,因此可以節省代碼大小。您可以通過添加庫libprintf_flt.a libm.a並使用鏈接器選項來顯式激活它,或者使用鏈接器選項-Wl,-u,vfprintf

替代地,您可以使用ftoa函數。