📄 cos.asm
字号:
.mmregs
.def _c_int00
.def cos_generate,end_of_cose
.def d_cos_delay1,d_cos_delay2,d_theta,d_cosx
d_cos_delay1 .usect "cos_vars",1
d_cos_delay2 .usect "cos_vars",1
d_theta .usect "cos_vars",1
d_cosx .usect "cos_vars",1
k_cos_delay_1 .set 06602h ;cos(5)*0.8
k_cos_delay_2 .set 064d8h ;cos(10)*0.8
k_cos_theta .set 07f83h ;cos(5)
k_2 .set 2h ;循环缓冲区大小
k_256 .set 256 ;指针
COSDATA .usect "cos_data",256
.text
_c_int00: SSBX FRCT
STM #COSDATA,AR5
;NOP
STM #600H,SP
LD #d_cos_delay1,DP
;NOP
;初始化缓冲区
STM #d_cos_delay1,AR3
STM #d_theta,AR4
RPTZ A, #3h
STL A,*AR3+
;设置循环缓冲区大小
STM #1,AR0
STM #d_cosx,AR2
STM #k_2,BK
STM #k_256-1,BRC
;NOP
STM #d_cos_delay1,AR3
ST #k_cos_delay_1,*AR3+
ST #k_cos_delay_2,*AR3
STM #d_cos_delay1,AR3 ;输出值
ST #k_cos_theta,d_cosx
cos_generate:
RPTB end_of_cose
MPY *AR2,*AR3+0%,A ;cos(theta)*cos((n-1)theta)
SUB *AR3,15,A ;1/2*cos((n-2)theta)
SFTA A,1,A
STH A,*AR3 ;保存
MVDD *AR3,*AR5+
end_of_cose: NOP
cosend: B cosend ;下一次采样
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -