dsin.asm

来自「基于凌阳和ad9850实现的正弦波信号发生器程序」· 汇编 代码 · 共 62 行

ASM
62
字号
.include hardware.inc
//=============================================================
// ----Function: unsigned int Uint_SIN(unsigned int Data);
// -Description: sin(x) = x - x3/6 + x5/120 - x7/5040
// --Parameters: 计算sin值,输入数据为Q15格式,输入为弧度,限制到0~0.5派
// -----Returns: 输出数据为Q15格式
// -------Notes: 118 Cycle
//============================================================= 
.code
.PUBLIC _Uint_SIN
_Uint_SIN: 
	
	r3 = r1   //r1中为x
     mr = r3*r1 //计算x2 Q30   (65536 - (10922 - (546 - 13*x2)*x2)*x2)*x
     r2 = r4   //存x2 Q14 r2
     r3 = 52
     mr = r3*r2
     r3 = 546
     r3 -= r4
     r3 = r3 lsl 2
   mr = r3*r2
     r3 = 10922
     r3 -= r4
     r3 = r3 lsl 2
     mr = r3*r2
     r3 = 0
     r3 -= r4
     mr = r3*r1
     r1 = r4
   retf

//=============================================================
// ----Function: unsigned int Uint_COS(unsigned int Data);
// -Description: cos(x) = 1 - x2/2 + x4/24 - x6/720 + x8/40320
// --Parameters: 计算COS值,输入数据为Q15格式,输入为弧度,限制到0~0.5派
// -----Returns: 输出数据为Q15格式
// -------Notes: 130 Cycle
//============================================================= 
.PUBLIC _Uint_COS
_Uint_COS: r3 = r1   //r1中为x
     mr = r3*r1//计算x2 Q24   65536 - (32768 - (2731 - (91 - 1.6*x2)*x2)*x2)*x2)*X2
     r2 = r4   //存x2 Q14 r2
     r3 = 7
     mr = r3*r2
     r3 = 91
     r3 -= r4
     r3 = r3 lsl 2
     mr = r3*r2
     r3 = 2731
     r3 -= r4
     r3 = r3 lsl 2
   mr = r3*r2
     r3 = 32768
     r3 -= r4
     r3 = r3 lsl 1
     mr = r3*r2
     r3 = 0x8000
     r3 -= r4
     r1 = r3
   retf

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?