1、 题目一:题目一:正弦波信号发生器正弦波信号发生器 一、 设计题目:正弦波信号发生器 二、设计目的: 1、掌握正弦波发生器的工作原理 2、掌握如何用汇编语言实现正弦波信号发生器 3、熟悉 CCS 操作环境 三、设计要求: 1、用汇编语言设计一个正弦波信号发生器 2、在 CCS 环境下实现正弦信号发生器 四、设计原理: 正弦波信号发生器已被广泛地应用于通信、 仪器仪表和工业控制等领域的信号处理系统 中。通常有两种方法可以产生正弦波,分别为查表法和泰勒级数展开法。查表法主要用于精 度要求不是很高的场合, 而泰勒级数展开法是一种比查表法更为有效的方法, 它能精确地计 算出一个角度的正弦值和余弦值,且
2、只需较小的存储空间。 五、正弦波的实现 利用计算一个角度的正弦值和余弦值可实现正弦波。其实现步骤如下: 第一步:利用 sin_start 和 cos_start 子程序,计算 045(间隔为 0.5)的正弦 值和余弦值; 第二部:利用 sin(2x)=2sin(x)cos(x)公式,计算 090 的正弦值(间隔为 1) ; 第三部:通过复制,获得 0359 的正弦值; 第四步:将 0359 的正弦值重复从 PA 口输出,便可得到正弦波。产生正弦 波源程序清单 sin.asm: .title “sin.asm” .mmregs .def start .def d_xs,d_sinx,d_xc,d
3、_cosx,sinx,cosx sin_x: .usect “sin_x“,360 STACK: .usect “STACK“,10H k_theta .set 286 ;theta=pi/360(0.5deg) start: .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 ;d_sinx=sin(x) CALL cosx ;d_cosx=cos(x) LD
4、 #d_sinx,DP LD d_sinx,16,A ;A=sin(x) MPYA d_cosx ;B=sin(x)*cos(x) STH B,1,*AR6+ ;AR6-2*sin(x) MAR *AR1+0 loop1: STM #sin_x+89, AR7 ;sin91(deg.)-sin179(deg.) STM #88,BRC RPTB loop2-1 LD *AR7-,A STL A,*AR6+ loop2: STM #179,BRC ;sin180(deg.)-sin359(deg.) STM #sin_x,AR7 RPTB loop3-1 LD *AR7+,A NEG A STL A,*AR6+ loop3: STM #sin_x,AR6 ;generate sin wave STM #1,AR0 STM #360,BK B loop3 sinx: .def d_xs,d_sinx .data table