📄 bs95.asm
字号:
;BANDSTOP FIR @ 60 Hz, 95 COEFFICIENTS. IMPULSE RESPONSE
.TITLE "BS95" ;;BS @ 60 Hz,Fs=600 Hz
.GLOBAL MAIN,BEGIN,FILT,COEFF,H0 ;REF/DEF SYMBOLS
.DATA ;ASSEMBLE INTO DATA SECT
IM_ADDR .WORD IMPULSE ;;INIT VALUE IMPULSE
OUT_ADDR .WORD OUT ;INIT VALUE OUT
XN_ADDR .WORD XN+LENGTH-1 ;NEWEST (LAST) IN SAMPLE
HN_ADDR .WORD COEFF ;COEFF TABLE ADDR
IMPULSE .FLOAT 100000
XN .USECT "XN_BUFF",LENGTH ;SAMPLES BUFFER SIZE
.SECT "VECTORS" ;ASSEMBLE INTO VECT SECT
MAIN .WORD BEGIN
OUT .USECT "OUT_PORT",1 ; 1 SPACE FOR OUT
.TEXT ;ASSEMBLE INTO TEXT SECT
BEGIN LDP OUT_ADDR ;INIT DATA PAGE
LDI @IM_ADDR,AR5 ;;IMPULSE ADDR -> AR5
LDI @OUT_ADDR,AR6 ;D/A ADDR -> AR6
LDI @XN_ADDR,AR1 ;"LAST"SAMPLE ADDR
LDI LENGTH,BK ;BK = # COEFFS(FILTER LENGTH)
LDF 0.0,R0 ;INIT R0=0
LDF 0.0,R7 ;;INIT R7=0
LDI LENGTH,R4 ;R4=COUNTER TO CALL FILT SUB
LDF *AR5,R3 ;INPUT NEW SAMPLE -> R3
STF R3,*AR1++(1)% ;STORE NEWEST SAMPLE-MODEL DELAY
LOOP LDI @HN_ADDR,AR0 ;"FIRST" COEFF H(N-1) ADDR -> AR0
CALL FILT ;GO TO SUBROUTINE FILT
FIX R2,R1 ;R1=INTEGER(R2)
STI R1,*AR6 ;OUTPUT INTEGER VALUE
SUBI 1,R4 ;DECREMENT R4
STF R7,*AR1++(1)% ;;ALL OTHER SAMPLES =0
BNZ LOOP ;BRANCH UNTIL R4 < 0
WAIT BR WAIT ;WAIT
FILT LDF 0.0,R0 ;INIT R0=0
LDF 0.0,R2 ;INIT R2=0
RPTS LENGTH-1 ;N MULTIPLY
MPYF *AR0++,*AR1++%,R0 ; HN*XN -> R0
|| ADDF R0,R2 ;// WITH ACC -> R2
ADDF R0,R2 ;LAST ACC -> R2
RETS ;RETURN FROM SUBROUTINE
;COEFFICIENTS STORED IN REVERSED ORDER,H(N-1),H(N-2)....H0
.DATA
COEFF: .FLOAT 2.15044163554686E-0004, 5.26045365715008E-0004, 5.34465528630905E-0004
.FLOAT 2.72846177109559E-0004, 1.51567971515189E-0005, 1.04198787103756E-0004
.FLOAT 6.67673667346076E-0004, 1.41517899993777E-0003, 1.70082520872498E-0003
.FLOAT 8.89128714514791E-0004,-1.15115794574157E-0003,-3.74240316260534E-0003
.FLOAT -5.55335319851902E-0003,-5.23957279542369E-0003,-2.27404909706295E-0003
.FLOAT 2.52164465382895E-0003, 7.14835275598162E-0003, 9.33887027559202E-0003
.FLOAT 7.78331793205347E-0003, 2.97662050714719E-0003,-2.88210946728894E-0003
.FLOAT -7.00457269277006E-0003,-7.58591603285912E-0003,-4.91461758300422E-0003
.FLOAT -1.26591943794565E-0003, 5.04174485455035E-0004,-1.07645236776892E-0003
.FLOAT -4.78938329249316E-0003,-7.06537926023853E-0003,-4.06016374593056E-0003
.FLOAT 5.55342138573410E-0003, 1.87556940050698E-0002, 2.87171830068991E-0002
.FLOAT 2.79147910475633E-0002, 1.25053214464728E-0002,-1.43762497381894E-0002
.FLOAT -4.25355261820682E-0002,-5.85357081201214E-0002,-5.20214560501477E-0002
.FLOAT -2.15628607718122E-0002, 2.31366290732643E-0002, 6.43093700094719E-0002
.FLOAT 8.35531469984729E-0002, 7.03722764357883E-0002, 2.77258812987592E-0002
.FLOAT -2.83418015016206E-0002,-7.51795916048749E-0002, 9.06666666066667E-0001
.FLOAT -7.51795916048749E-0002,-2.83418015016206E-0002, 2.77258812987592E-0002
.FLOAT 7.03722764357883E-0002, 8.35531469984729E-0002, 6.43093700094719E-0002
.FLOAT 2.31366290732643E-0002,-2.15628607718122E-0002,-5.20214560501477E-0002
.FLOAT -5.85357081201214E-0002,-4.25355261820682E-0002,-1.43762497381894E-0002
.FLOAT 1.25053214464728E-0002, 2.79147910475633E-0002, 2.87171830068991E-0002
.FLOAT 1.87556940050698E-0002, 5.55342138573410E-0003,-4.06016374593056E-0003
.FLOAT -7.06537926023853E-0003,-4.78938329249316E-0003,-1.07645236776892E-0003
.FLOAT 5.04174485455035E-0004,-1.26591943794565E-0003,-4.91461758300422E-0003
.FLOAT -7.58591603285912E-0003,-7.00457269277006E-0003,-2.88210946728894E-0003
.FLOAT 2.97662050714719E-0003, 7.78331793205347E-0003, 9.33887027559202E-0003
.FLOAT 7.14835275598162E-0003, 2.52164465382895E-0003,-2.27404909706295E-0003
.FLOAT -5.23957279542369E-0003,-5.55335319851902E-0003,-3.74240316260534E-0003
.FLOAT -1.15115794574157E-0003, 8.89128714514791E-0004, 1.70082520872498E-0003
.FLOAT 1.41517899993777E-0003, 6.67673667346076E-0004, 1.04198787103756E-0004
.FLOAT 1.51567971515189E-0005, 2.72846177109559E-0004, 5.34465528630905E-0004
.FLOAT 5.26045365715008E-0004
H0 .FLOAT 2.15044163554686E-0004
LENGTH .SET H0-COEFF+1 ;FILTER LENGTH
IMPULSE .FLOAT 100000 ;IMPULSE VALUE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -