⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bs95.asm

📁 "DIGITAL SIGNAL PROCESSING WITH C AND THE TMS32 0C30"一书的附带程序
💻 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 + -