⑴ 我在用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语言编程中,变量最好让编译器自己处理,不要直接用某一个寄存器。