基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc

上传人:b****1 文档编号:13166250 上传时间:2022-10-07 格式:DOC 页数:7 大小:31KB
下载 相关 举报
基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc_第1页
第1页 / 共7页
基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc_第2页
第2页 / 共7页
基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc_第3页
第3页 / 共7页
基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc_第4页
第4页 / 共7页
基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc

《基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc》由会员分享,可在线阅读,更多相关《基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc(7页珍藏版)》请在冰豆网上搜索。

基于DSP的正弦波信号发生器源程序汇编语言Word格式.doc

.def cos_start

d_coeff .usect "

coeff"

4

.data

table:

.word 0249H ;

c1=1/(7*8)

.word 0444H ;

c2=1/(5*6)

.word 0AABH ;

c3=1/(3*4)

.word 4000H ;

c4=1/(1*2)

d_x .usect "

cos_vars"

1

d_squr_x.usect "

d_temp .usect "

d_cosx .usect "

c_1 .usect "

.text

SSBX FRCT

STM #d_coeff,AR5

RPT #3

MVPD #table,*AR5+

STM #d_coeff,AR3

STM #d_x,AR2

STM #c_1,AR4

ST #7FFFH,c_1

SQUR *AR2+,A ;

A=x^2

ST A,*AR2 ;

(AR2)=x^2

||LD *AR4,B ;

B=1

MASR *AR2+,*AR3+,B,A ;

A=1-x^2/56,T=x^2

MPYA A ;

A=T*A=x^2(1-x^2/56)

STH A,*AR2 ;

(d_temp)=x^2(1-x^2/56)

MASR *AR2-,*AR3+,B,A ;

A=1-x^2/30(1-x^2/56),T=x^2(1-x^2/56)

MPYA *AR2+ ;

B=x^2(1-x^2/30(1-x^2/56))

ST B,*AR2 ;

(d_temp)=x^2(1-x^2/30(1-x^2/56))

A=1-x^2(1-x^2/30(1-x^2/56))

SFTA A,-1,A ;

A右移一位即A除以2

NEG A

B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))

MAR *AR2+

RETD

ADD *AR4,16,B ;

B=1-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))

STH B,*AR2 ;

cos(theta)

RET

.end

*中断向量文件vectors.asm

.title"

vectors.asm"

.ref start

.sect"

.vectors"

B start

.end

*链接命令文件

vectors.obj

cosx.obj

-O cosx.out

-m cosx.map

-estart

MEMORY

{

PAGE0:

EPROM:

org=0090H,len=0F70H

VECS:

org=0080H,len=0010H

PAGE1:

SPRAM:

org=1000H,len=1000H

DARAM:

org=2000H,len=2000H

}

SECTIONS

.text :

>

EPROM PAGE0

.data :

STACK :

SPRAM PAGE1

cos_vars :

DARAM PAGE1

coeff :

.vectors :

VECS PAGE0

附录D.2利用泰勒公式产生正弦波的程序

**************************************

*利用泰勒公式产生正弦波的程序*

**************************************

sin.asm"

sin_x:

sin_x"

360

.usect"

10H

.bssdis_buff,1

k_theta .set 286

PA0 .set 0x0002

start:

STM #STACK+10H,SP

STM k_theta,AR0

STM 0,AR1

STM #sin_x,AR6

STM #90,BRC

RPTB loop1-1

LDM AR1,A

LD #d_xs,DP

STL A,@d_xs

STL A,@d_xc

CALL sinx

CALL cosx

LD #d_sinx,DP

LD @d_sinx,16,A

MPYA @d_cosx

STH B,1,*AR6+

MAR *AR1+0

loop1:

STM #sin_x+89,AR7

STM #88,BRC

RPTB loop2-1

LD *AR7-,A

STL A,*AR6+

loop2:

STM #179,BRC

STM #sin_x,AR7

RPTB loop3-1

LD *AR7+,A

loop3:

STM #sin_x,AR6

STM #1,AR0

STM #360,BK

loop4:

PORTW *AR6+0%,PA0

LD*AR6,A

MVDK*AR6,@dis_buff

B loop4

*用泰勒级数开展开式计算角度的正弦值 *

*sin(x)=x(1-x*x/2*3(1-x*x/4*5(1-x*x/6*7(1-x*x/8*9))))*

sinx:

.def d_xs,d_sinx

table_s

.word 01C7H ;

c1=1/(8*9)

.word 030BH ;

c2=1/(6*7)

.word 0666H ;

c3=1/(4*5)

.word 1556H ;

c4=1/(2*3)

d_coef_s .usect "

coef_s"

d_xs .usect "

sin_vars"

d_squr_xs .usect "

d_temp_s .usect "

d_sinx .usect "

d_l_s .usect "

STM #d_coef_s,AR5

MVPD #table_s,*AR5+

STM #d_coef_s,AR3

STM #d_xs,AR2

STM #d_l_s,AR4

ST #7FFFH,d_l_s

A=1-x^2/72,T=x^2

A=T*A=x^2(1-x^2/72)

(d_temp)=x^2(1-x^2/72)

A=1-x^2/42(1-x^2/72),T=x^2(1-x^2/72)

B=x^2(1-x^2/42(1-x^2/72))

(d_temp)=x^2(1-x^2/42(1-x^2/72))

A=1-x^2/20(1-x^2/42(1-x^2/72))

B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))

(d_temp)=B

A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))

MPYA d_xs ;

B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))))

STH B,d_sinx ;

sin(theta)

*************************************************

*用泰勒级数开展开式计算角度的余弦值 *

*cos(x)=1-x*x/2(1-x*x/3*4(1-x*x/5*6(x*x/7*8))) *

cosx:

.def d_xc,d_cosx

d_coef_c .usect "

coef_c"

table_c:

.word 0249H ;

.word 0444H ;

.word 0AABH ;

.word 4000H ;

d_xc .usect "

d_squr_xc .usect "

d_temp_c .usect "

c_l_c .usect "

c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1