wxianfeng2008 发表于 2012-9-17 00:31:14

MSP430能不能实现开方运算

各位,大家好,我是接触430才没几天,想问下,MSP430能不能实现开方运算?还有就是开放运算时,有没有需要注意的问题?程序如何实现?

lcofjp 发表于 2012-9-17 00:43:33

只要库中有的,就可以随便用,按着标准c的方法使用,与什么处理器无关。

guwu454 发表于 2012-9-17 21:53:25

可以用的有个函数叫pow(x,y)x的y次方,可以算开方的。好像这个函数在math.h里面。前几天我做东西用到过,计算速度你自己猜吧,很慢的。

wxianfeng2008 发表于 2012-9-17 21:57:37

谢谢大家的回帖,以后多向你们请教!

xiatianzhang 发表于 2012-9-18 09:02:28

zhangsusu 发表于 2012-9-18 11:50:44

lcofjp 发表于 2012-9-17 00:43 static/image/common/back.gif
只要库中有的,就可以随便用,按着标准c的方法使用,与什么处理器无关。

理论上是这样的 实际上要写16bit 定点算法才实用

zhangsusu 发表于 2012-9-18 11:52:23

ti的dsp 手册上有这个算法

eleczj 发表于 2012-9-24 13:02:43

函数在math.h里面

dianyuan 发表于 2012-9-27 08:56:28

本帖最后由 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

XA144F 发表于 2012-9-27 08:59:48

1+3+5+7+9+.....+(2n-1)=n*n
如果是整数开方,可以试试这个。

maimaige 发表于 2012-9-27 09:24:46

计算的一个方程啊

redroof 发表于 2012-9-27 12:04:51

一个在逻辑上最简单的开方算法(可能收敛速度不是最快的),我小时候就用这个算法在只有加减乘除的计算器上算开方:
设一个“猜测值”和一个“结果值”

初始状态:
猜测值=2
结果值=输入/猜测值

循环内容:
{
猜测值=(猜测值+结果值)/2
结果值=输入/猜测值
}

直到猜测值与结果值的差小于1为止

(如果用浮点数,可以算到猜测值与结果值相差小于你认为合理的误差值为止)

结果值就是开方结果

wuha 发表于 2012-9-27 12:28:52

430库里的数学函数库,都是浮点数计算,非常占用单片机资源,建议自己写计算函数,网上可以找找代码。

godwen 发表于 2012-9-27 13:10:59

还记得Quake-III的那篇帖子吗,用迭代法求平方根

i   = 0x5f3759df - ( i >> 1 ); // what the fuck?

多么经典的注释啊!哈哈
页: [1]
查看完整版本: MSP430能不能实现开方运算