⑴ 我在用51單片機運算浮點數的乘法時出現以下情況如何解決,編譯器為KEIL2,就是乘完後的結果大於65535的...
浮點數本身就有個精度問題
C51的float浮點型只有7位有效數字,符合IEEE-754標准
浮點運算相比整數運算是很費CPU的
如果long也放不下 可以用字元大數的計算方法,不過很麻煩
⑵ 求C語言代碼:單片機沒有乘除法,如何實現乘除法運算
單片機乘除法要用到ACC與B寄存器
所以在中斷程序中:
{
ACC++;
,
,
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
最後的兩個除法把ACC的值改變了。把變數ACC改為一個其它的全局變數就好了。(比如定義一個全局變數unsigned char n;把ACC改為n;)
C語言編程中,變數最好讓編譯器自己處理,不要直接用某一個寄存器。
⑶ 求C語言代碼:單片機沒有乘除法,如何實現乘除法運算
單片機乘除法要用到ACC與B寄存器
所以在中斷程序中:
{
ACC++;
,
,
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
最後的兩個除法把ACC的值改變了。把變數ACC改為一個其它的全局變數就好了。(比如定義一個全局變數unsigned
char
n;把ACC改為n;)
C語言編程中,變數最好讓編譯器自己處理,不要直接用某一個寄存器。