c4_2_3.dsp

来自「《DSP应用开发实用子程序》配套源代码」· DSP 代码 · 共 66 行

DSP
66
字号
.MODULE/RAM/ABS=H#0000   DIFF;
					{y(i)=a1×y(i-1)+…+an×y(i-n)+b0×x(i)+ b1×x(i-1)+…+bn×x(i-n);}
.CONST                          n=2;                
.CONST                          m=1024;             
.VAR/PM/RAM/CIRC/ABS=H#0700   COEFFICIENT [2*n+1];
.VAR/DM/RAM/ABS=H#3000        DATA[m], OUT[m];
.ENTRY                           DIFFRENTIAL;
.GLOBAL                         DATA, OUT, COEFFICIENT;
.INIT                             COEFFICIENT :<xs>; 
                         					
.INIT         					 DATA:<in>;                JUMP START: NOP; NOP; NOP;      
                      RTI: NOP; NOP; NOP;     
                      RTI: NOP; NOP; NOP;
                      RTI: NOP; NOP; NOP;
                      RTI: NOP; NOP; NOP;
                      RTI: NOP; NOP; NOP;
                      RTI: NOP; NOP; NOP;
START:               L0 = 0;       I0 = ^DATA;
                      L1 = 0;      I1 = ^OUT;
                      M0 = -1;     M1 = 1;
                      M2 = 0;      M3 = n+2;
                      L4 = %COEFFICIENT;
                      I4 = ^ COEFFICIENT;
                      M4 = 1;
				   CNTR = m;	
                      DO INPUT UNTIL CE;
                      AX0 = DM (I0, M1);
INPUT:                IO (0) = AX0;
                      I0 = ^DATA;
                      CNTR = n+2;               
                      DO INITIAL UNTIL CE;
                      AX0 = DM (I0, M1);
                      IO (1) = AX0;
INITIAL:              DM (I1, M1) = AX0;
                      MODIFY (I1, M0);
                      MY0 = PM (I4, M4);        
                      MX0 = DM (I4, M0);
                      MX1 = DM (I0, M0);
                      SE = 3;                   
                      CNTR = m-n-2;
                      DO COMPUTE UNTIL CE;
                      CALL DIFFRENTIAL;
                      SR = ASHIFT MR1 (HI);
                      IO (1) = SR1;             
                      MODIFY (I1, M3);
                      DM (I1, M2) = SR1;
                      MX0 = DM (I1, M0);
                      MODIFY (I0, M3);
                      MODIFY (I0, M1);
COMPUTE:            MX1 = DM (I0, M0);
                      IDLE;
DIFFRENTIAL         MR = 0;                     
                      CNTR = n;
                      DO PLUSYI UNTIL CE;
PLUSYI               MR = MR+MX0*MY0 (SS);
                      MX0 = DM (I1, M0);
                      MY0 = PM (I4, M4);
                      CNTR = n+1;
                      DO PLUSXI UNTIL CE;
PLUSXI:              MR = MR+MX1*MY0 (SS);
                      MX1 = DM (I0, M0);
                      MY0 = PM (I4, M4);
                      RTS;
                      .ENDMOD;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?