MSP430能不能实现开方运算
各位,大家好,我是接触430才没几天,想问下,MSP430能不能实现开方运算?还有就是开放运算时,有没有需要注意的问题?程序如何实现? 只要库中有的,就可以随便用,按着标准c的方法使用,与什么处理器无关。 可以用的有个函数叫pow(x,y)x的y次方,可以算开方的。好像这个函数在math.h里面。前几天我做东西用到过,计算速度你自己猜吧,很慢的。 谢谢大家的回帖,以后多向你们请教! lcofjp 发表于 2012-9-17 00:43 static/image/common/back.gif只要库中有的,就可以随便用,按着标准c的方法使用,与什么处理器无关。
理论上是这样的 实际上要写16bit 定点算法才实用 ti的dsp 手册上有这个算法 函数在math.h里面 本帖最后由 dianyuan 于 2012-9-27 09:03 编辑
;32位数的开方程序
/******************************************************************************
input--R13R12 output--R12
;*******************************************************************************/
#include "msp430x14x.h"
PUBLIC sqr
RSEG CODE
sqr
push R6
push R9
mov R12,R15
mov #00h,R14
mov #00h,R12
mov #010h,R9
sqr1
dec R9
jz exitsqr
rla R15
rlc R13
rlc R14
rla R15
rlc R13
rlc R14
jz sqr1
dec R14
inc R12
start
rla R12
mov R12,R6
rla R6
add #01h,R6
rla R15
rlc R13
rlc R14
rla R15
rlc R13
rlc R14
cmp R6,R14
jlo sqra
sqr2
sub R6,R14
inc R12
sqr3
dec R9
jnz start
exit
pop R9
pop R6
ret
end 1+3+5+7+9+.....+(2n-1)=n*n
如果是整数开方,可以试试这个。 计算的一个方程啊 一个在逻辑上最简单的开方算法(可能收敛速度不是最快的),我小时候就用这个算法在只有加减乘除的计算器上算开方:
设一个“猜测值”和一个“结果值”
初始状态:
猜测值=2
结果值=输入/猜测值
循环内容:
{
猜测值=(猜测值+结果值)/2
结果值=输入/猜测值
}
直到猜测值与结果值的差小于1为止
(如果用浮点数,可以算到猜测值与结果值相差小于你认为合理的误差值为止)
结果值就是开方结果 430库里的数学函数库,都是浮点数计算,非常占用单片机资源,建议自己写计算函数,网上可以找找代码。 还记得Quake-III的那篇帖子吗,用迭代法求平方根
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
多么经典的注释啊!哈哈
页:
[1]