📄 cos1.asm
字号:
.mmregs
.def cos_generate,end_of_cose,main
.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_0 .set 8*32768/10 ;0.8
k_cos_delay_1 .set 8*99619*32768/1000000 ;cos(5)*0.8
k_cos_delay_2 .set 8*9848*32768/100000 ;cos(10)*0.8
k_cos_theta .set 99619*32768/100000 ;cos(5)
k_2 .set 2h ;循环缓冲区大小
k_216 .set 216 ;指针
COSDATA .usect "cos_data",216 ; 3 cycles
.text
main:
RSBX CPL
ld #0,dp
SSBX SXM
SSBX FRCT
STM #COSDATA,AR5
NOP
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_216-1,BRC
NOP
STM #d_cos_delay1,AR3
ST #k_cos_delay_1,*AR3+
ST #k_cos_delay_2,*AR3
ST #k_cos_theta,d_cosx
ST #k_cos_delay_0,*ar5+
ST #k_cos_delay_1,*ar5+
ST #k_cos_delay_2,*ar5+
cos_generate:
RPTB end_of_cose-1
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+
NOP
end_of_cose: NOP
cosend:
B cosend
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -