📄 sinewave.asm
字号:
FREQ1000 .set 1486
FREQ1750 .set 2600
FREQ2000 .set 2972
FREQ3000 .set 4458
FRAME_SIZE .set 64
.mmregs
.include "cos256_tbl.inc"
.global COSINE_BUFFER
.global FREQ_BUFFER
.bss TEMP,1
.bss FREQ_BUFFER,128
.bss COSINE_BUFFER,257
.bss _FREQ_STEP,1
.bss _INIT_PHASE,1
.def FREQ
STK .usect "STACK",100
.mmregs
.sect "CODE"
FREQ: SSBX OVM
SSBX SXM
SSBX FRCT
NOP
NOP
STM #STK+100H,SP
STM #001EH,PMST
ST #FREQ1000,*(_FREQ_STEP) ;
ST #0,*(_INIT_PHASE) ;
STM #FREQ_BUFFER,AR3 ;
CALL COPY_COS_TBL ;
CALL GEN_FREQ ;
LOOP: B LOOP ;
GEN_FREQ: STM #FRAME_SIZE?1,BRC ;
RPTB sine1?1
LD *(_FREQ_STEP),A ;
ADD *(_INIT_PHASE),A ;A=PRESENT PHASE
STL A,*(_INIT_PHASE) ;SAVE PRESENT PHASE
SUB #4000H,A ;SUB PI/2 FOR SINE
ABS A ;Acc CONTAINS THE OFFSET
STL A,*(TEMP) ;
;
LD *(TEMP),9,A ;
STH A,*(TEMP) ;
LD *(TEMP),A ;
ABS A ;
ADD #COSINE_BUFFER,A ;
STLM A,AR2 ;
nop ;
nop ;
LD *AR2,A ;
STL A,*AR3+ ;
;
sine1: NOP ;
RET ;
COPY_COS_TBL:
STM #COSINE_BUFFER,AR2
RPT #257?1
MVPD #COSOFF,*AR2+
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -