📄 sinwave_generate.asm
字号:
.title "SinWave_Generate.asm"
.mmregs
.def _c_int00
.ref _sinX
.ref _cosX
.sect "VEC"
b _c_int00
stack: .usect "STACK",500
.bss input,1
.bss output,1
.bss temp,1
.bss xx,1
.bss sinX,1
.bss cosX,1
.bss ratio,1
;数字角频率 Wn=模拟频率/采样频率,默认为pi/180
;应用时Ratio=Wn/(pi/180),只有此值大于1,为整数才可用本程序
result .usect "result",360
.global input
.global xx
.global sinX
.global cosX
angel .set 286 ; 0.5度
.text
_c_int00:
ssbx frct
ssbx sxm
stm #stack+500,SP
ld #input,dp
st #0,@input
stm #result,ar7
st 4,@ratio ;注意为整数意义上的数
stm #90,BRC
rptb loop1-1 ; 0~90
squr @input,A
sth A,@xx
call _sinX
call _cosX
ld @input,16,A ; 角度加
add #angel,16,A
sth A,@input
ld @sinX,16,A ;注意这种乘法的使用
mpya @cosX ;sin(2x)=2*sin(x)*cos(x)
sth B,1,*ar7+
loop1:
mvmm ar7,ar6 ;峰值点修正
ld *ar6,A
add #6,A
stl A,*ar6-
ld *ar6,A
add #25,A
stl A,*ar6-
ld *ar6,A
add #6,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -