.title "FIR.ASM"
.mmregs
.def start
.def rxData
levelN .set 25
buffer .usect "buffer",levelN+2 ;25级数组空间,有1个是保留空间
IN .usect "IN",8192 ;输入的数据保存区
OUT .usect "OUT",8192 ;输出的数据保存区
STACK .usect "stack",400h ;堆栈的长度
.bss kong,2
.bss Echo,1
.bss ncount,1
.bss temp,5
.bss temp1,1
.bss temp2,5
;***************************************************
;* 系统变量定义 *
;***************************************************
CPU_SPEED_160M .set 9007h
LEFT_PTRq .set 4000h
RIGHT_PTR .set 8000h
FLAG .set 0060h
DataBuffSize .set 8192
DELAYTIME .set 0 ;6134
;***************************************************
;* mcBSP变量预定义 *
;***************************************************
SPSA0 .set 38h
SPSD0 .set 39h
SPSA1 .set 48h
SPSD1 .set 49h
SPCR1 .set 00h
SPCR2 .set 01h
RCR1 .set 02h
RCR2 .set 03h
XCR1 .set 04h
XCR2 .set 05h
SRGR1 .set 06h
SRGR2 .set 07h
MCR1 .set 08h
MCR2 .set 09h
RCERA .set 0ah
RCERB .set 0bh
XCERA .set 0ch
XCERB .set 0dh
PCR .set 0eh
RCERC .set 10h
RCERD .set 11h
XCERC .set 12h
XCERD .set 13h
RCERE .set 14h
RCERF .set 15h
XCERE .set 16h
XCERF .set 17h
RCERG .set 18h
RCERH .set 19h
XCERG .set 1ah
XCERH .set 1bh
DRR20 .set 20h
DRR10 .set 21h
DXR20 .set 22h
DXR10 .set 23h
DRR21 .set 40h
DRR11 .set 41h
DXR21 .set 42h
DXR11 .set 43h
;***************************************************
;* 语音AIC23的参数预定义 *
;***************************************************
AIC23_RESET_REG .set 0fh
AIC23_POWER_DOWN_CTL .set 06h
AIC23_ANALOG_AUDIO_CTL .set 04h
ANAPCTL_DAC .set 10h
AIC23_DIGITAL_AUDIO_CTL .set 05h
AIC23_LT_LINE_CTL .set 00h
AIC23_RT_LINE_CTL .set 01h
AIC23_DIGITAL_IF_FORMAT .set 07h
DIGIF_FMT_LRP .set 10h
DIGIF_FMT_MS .set 40h
DIGIF_FMT_IWL_16 .set 00h
DIGIF_FMT_FOR_DSP .set 03h
AIC23_SAMPLE_RATE_CTL .set 08h
SRC_SR_08 .set 0ch
AIC23_DIG_IF_ACTIVATE .set 09h
DIGIFACT_ACT .set 01h
SRC_BOSR .set 02h
SRC_MO .set 01h
HECHENGDIGIF .set DIGIF_FMT_LRP|DIGIF_FMT_MS|DIGIF_FMT_IWL_16|DIGIF_FMT_FOR_DSP
;***************************************************
;* FIR滤波器的系数 *
;***************************************************
.data
COEF: .word 20*32768/10000, 16*32768/10000 ;b24,b23
.word 0*32768/10000, -44*32768/10000 ;b22,b21
.word -117*32768/10000, -181*32768/10000 ;b20,b19
.word -168*32768/10000, 0*32768/10000 ;b18,b17
.word 359*32768/10000,870*32768/10000 ;b16,b15
.word 1415*32768/10000, 1835*32768/10000 ;b14,b13
.word 1992*32768/10000, 1835*32768/10000 ;b12,b11
.word 1415*32768/10000, 870*32768/10000 ;b10,b9
.word 359*32768/10000, 0*32768/10000 ;b8,b7
.word -168*32768/10000, -181*32768/10000 ;b6,b5
.word -117*32768/10000, -44*32768/10000 ;b4,b3
.word 0*32768/10000, 16*32768/10000 ;b2,b1
.word 20*32768/10000 ;b0
;***************************************************
;* 主程序 *
;***************************************************
.text
start: STM #STACK+400h,SP ;设置堆栈
STM #temp,AR1 ;向3005h的IO端口写1
ST #1,*AR1
PORTW *AR1,3005h
STM #0,CLKMD ;初始化频率
RPT #50
NOP
STM #CPU_SPEED_160M,CLKMD
RPT #50
NOP
;**********************************************************
STM #SPCR1,SPSA1 ;mcBSP1的初始化
STM #0,SPSD1
STM #SPCR2,SPSA1
STM #0,SPSD1
STM #SPCR1,SPSA1
STM #1800h,SPSD1
STM #RCR1,SPSA1
STM #040h,SPSD1
STM #XCR1,SPSA1
STM #040h,SPSD1
STM #SRGR2,SPSA1
STM #2000h,SPSD1
STM #SRGR1,SPSA1
STM #0FFh,SPSD1
STM #XCR2,SPSA1
STM #0,SPSD1
STM #RCR2,SPSA1
STM #0,SPSD1
STM #PCR,SPSA1
STM #0A08h,SPSD1
STM #SPCR2,SPSA1
ORM #40h,SPSD1
RPT 100
NOP
STM #SPCR1,SPSA1
ORM #01h,SPSD1
STM #SPCR2,SPSA1
ORM #01h,SPSD1
RPT 100
NOP
;*******************************************************************
STM #temp,AR1 ;AIC23初始化AIC23_Write(AIC23_RESET_REG, 0);
ST #AIC23_RESET_REG,*AR1
STM #temp+1,AR2
ST #0,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma1: ;MVKD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady1,TC
B Testma1
SendReady1: ;MVKM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
STM #temp,AR1 ;AIC23_Write(AIC23_POWER_DOWN_CTL, 0);
ST #AIC23_POWER_DOWN_CTL,*AR1
STM #temp+1,AR2
ST #0,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma2: ;MVMD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady2,TC
B Testma2
SendReady2: ;MVDM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
STM #temp,AR1 ; AIC23_Write(AIC23_ANALOG_AUDIO_CTL, ANAPCTL_DAC );
ST #AIC23_ANALOG_AUDIO_CTL,*AR1
STM #temp+1,AR2
ST #ANAPCTL_DAC,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma3: ;MVMD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady3,TC
B Testma3
SendReady3: ;MVDM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
STM #temp,AR1 ; AIC23_Write(AIC23_DIGITAL_AUDIO_CTL, 0);
ST #AIC23_DIGITAL_AUDIO_CTL,*AR1
STM #temp+1,AR2
ST #0,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma4: ;MVMD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady4,TC
B Testma4
SendReady4: ;MVDM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
STM #temp,AR1 ;AIC23_Write(AIC23_LT_LINE_CTL, 0x17);
ST #AIC23_LT_LINE_CTL,*AR1
STM #temp+1,AR2
ST #017h,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma5: ;MVMD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady5,TC
B Testma5
SendReady5: ;MVDM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
STM #temp,AR1 ; AIC23_Write(AIC23_RT_LINE_CTL,0x17);
ST #AIC23_RT_LINE_CTL,*AR1
STM #temp+1,AR2
ST #017h,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma6: ;MVMD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady6,TC
B Testma6
SendReady6: ;MVDM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
STM #temp,AR1 ;
ST #AIC23_DIGITAL_IF_FORMAT,*AR1
STM #temp+1,AR2
ST #HECHENGDIGIF,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma7: ;MVMD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady7,TC
B Testma7
SendReady7: ;MVDM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
STM #temp,AR1 ;
ST #AIC23_SAMPLE_RATE_CTL,*AR1
STM #temp+1,AR2
ST #SRC_SR_08,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma8: ;MVMD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady8,TC
B Testma8
SendReady8: ;MVDM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
STM #temp,AR1 ;AIC23_Write(AIC23_DIG_IF_ACTIVATE, DIGIFACT_ACT);
ST #AIC23_DIG_IF_ACTIVATE,*AR1
STM #temp+1,AR2
ST #DIGIFACT_ACT,*AR2
LD *AR1,9,A
ADD *AR2,A
STL A,*AR1
STM #SPCR2,SPSA1
Testma9: ;MVMD SPSD1,*AR2
LDM SPSD1,A
STL A,*AR2
BITF *AR2,#02h
BC SendReady9,TC
B Testma9
SendReady9: ;MVDM,*AR1,DXR11;
LD *AR1,A
STLM A,DXR11;
;****************************************************
STM #SPCR1,SPSA0 ;mcBSP0的初始化
STM #0,SPSD0
STM #SPCR2,SPSA0
STM #0,SPSD0
; STM
评论0