51、以 y??ai?1ixi 为例,编写完整的.asm汇编源程序以及.cmd命令文件,写出程序注释,
并叙述在CCS2.0集成开发环境下,调试程序的基本步骤。其中 a和x的值由自己确定。 解:
.title \
.mmregs ;将存储映像寄存器导入列表
STACK .usect \ ;给堆栈段分配空间 .bss a,5 ;将11个字空间分配给各个变量 .bss x,5 .bss y,1
PA0 .set 0 ;将端口PA0全部置0 .def start ;定义标号start .data ;定义数据代码段 table:
.word 4,4,4,4,4(设置8个单元的16位整型常量,其初值为4) .word 4,4,4,4,4
.text ;定义文本代码段 start:
STM #0,SWWSR ;将等待寄存器设为0,表示不等待 STM #STACK+10h,SP ;设堆栈指针
STM #a,AR1 ;将AR1指向变量a的地址
RPT #9 ;从程序存储空间转移9+1个值到数据储存空间 MVPD table,*AR1+
CALL SUM ;调用SUM子程序 end: B end ;循环等待
SUM: STM #a,AR3 ;将AR3指向变量a的地址 STM #x,AR4 ;将AR4指向变量x的地址
RPTZ A,#4 ;将A清0,并重复执行下一条指令4+1次 MAC *AR3+,*AR4+,A
STL A,@y ;将寄存器A中的低16位存入y地址空间 PORTW @y,PA0 ;将y地址中的值输出到输出口 RET ;子程序返回 .end ;程序结束
2、试举一例DSP实际应用的例子,具体要求如下: 1)画出系统基本的硬件连接电路或硬件电路框图; 2)对系统的工作原理及工作过程进行详细介绍; 3)给出DSP软件程序和必要的注释; 4)报告内容条理清楚,思路清晰; 5)报告要求手写完成,格式要规范美观。 解: 基于TMS320C54x DSP的函数发生器的设计。
1)硬件结构框图
2)设计原理
DSP芯片 EDA 拨码开关 ADUC812 波形产生是DSP的重要应用之一。而正弦信号发生器的设计则是波形产生应用的一个重要方面,它在通信领域有着广泛的应用。利用DSP产生正弦信号有三种方法:查表法(lookup table approach)、多项式逼近法(polynomial approximation)和迭代法(recursive algorithm)。这三种方式各有其应用范围。本设计题目以TMS320C54x DSP为目标器件,设计并实现基于迭代法的“正弦序列生成”算法及其DSP程序。
sin(x)?x?x33!?x55!?x77!?x99!?x(1?x22*3(1?x24*5(1?x26*7(1?x28*9))))
为了减少使用的存储器,可以采用正弦信号的对称性,复制90~180度的正弦值和180~360度的正弦值。
余弦信号的产生同样可以采用多种方法产生。一是采用公式计算得到,二是采用正弦信号变换得到。
方波信号产生可以通过轮流输出两个不同大小的数值通过A/D转换得到。
3)源代码
.title \
.mmregs .def start start:
.text disc:
.ref d_xs,d_sinx,d_xc,d_cosx,sinx,cosx sin_x: .usect \
cos_x: .usect \STACK: .usect \k_theta .set 286 .text
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 NEG A
STL A,*AR6+ loop3: STM #sin_x,AR6 STM #360,BRC RPTB loop4-1 LD *AR6,A
ADD #1000000000000000B,A STL A,*AR6+ loop4: STM #cos_x,AR6 STM #0259H,AR7 STM #269,BRC RPTB loop5-1 LD *AR7+,A STL A,*AR6+ loop5: STM #0200H,AR7
STM #90,BRC RPTB loop6-1 LD *AR7+,A STL A,*AR6+ loop6: STM #cos_x,AR6 STM #1,AR0 STM #360,BK disf:
fangbo_x: .usect \ .text
STM #STACK+10H,SP STM #fangbo_x,AR6 STM #90,BRC RPTB loop6-1 LD #7FFFH,A
STL A,*AR6+ loop7: STM #90,BRC RPTB loop8-1 LD #7FFFH,A NEG A
STL A,*AR6+
loop8: STM #fangbo_x,AR7 STM #180,BRC RPTB loop9-1 LD *AR7+,A
STL A,*AR6+ loop9: STM #fangbo_x,AR6 STM #1,AR0 STM #360,BK STM #400H,AR6 STM #468H,AR0 dingshi:
TIM0 .set 0024H PRD0 .set 0025H TCR0 .set 0026H .def main .text main:
STM #STACK+10H,SP STM #3FA0H,PMST STM #00,PRD0 STM #0269H,TCR0 STM #0008H,IFR STM #0008H,IMR
RSBX INTM STM #10,AR1 end: B end TINT0:
PSHM T
BANZ END1,*AR1- STM #10,AR1
PORTW *AR6+%,01H
CMPR 00H,AR6 BC OVER,TC B END1 OVER:
PORTR 00H,*AR2 ;读拨码开关
CMPM *AR2,#00H ;为0时输出余弦波,为1时输出方波 BC loop8,TC
STM #600H,AR6 STM #602H,AR0 B EE loop8:
STM #400H,AR6 STM #568H,AR0 EE: SSBX TC
END1: POPM T RETE sinx:
.def d_xs,d_sinx .data
table_s: .word 01C7H .word 030BH .word 0666H .word 1556H d_coef_s .usect \d_xs .usect \d_squr_xs .usect \d_temp_s .usect \d_sinx .usect \d_1_s .usect \ .text
SSBX FRCT
STM #d_coef_s,AR5