|
************************************************ * FileName: ex10.asm * * Description: 滤波器实验 * * Copyright(C) SanZhi Electronic, Author Zpin * ************************************************
.title "ex10"
BSP .set 1 ;当前使用McBsp1
;McBsp 内存映射寄存器 SPSA0 .set 038h SPSD0 .set 039h DRR10 .set 021h DRR20 .set 020h DXR10 .set 023h DXR20 .set 022h
SPSA1 .set 048h SPSD1 .set 049h DRR11 .set 041h DRR21 .set 040h DXR11 .set 043h DXR21 .set 042h
SPSA2 .set 034h SPSD2 .set 035h DRR12 .set 031h DRR22 .set 030h DXR12 .set 033h DXR22 .set 032h
;McBsp Subaddressed Registers 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
.if BSP = 0 SPSA .set SPSA0 SPSD .set SPSD0 RDRR .set DRR10 RDXR .set DXR10 IMASK .set 0010h .endif .if BSP = 1 SPSA .set SPSA1 SPSD .set SPSD1 RDRR .set DRR11 RDXR .set DXR11 IMASK .set 0400h .endif ;fin_flag .set 64h
.asg AR0,FIR_INDEX_P .asg AR4,FIR_DATA_P .asg AR5,FIR_COFF_P
WR_SUB_REG .macro val,addr ;写McBsp控制寄存器 stm addr,SPSA nop stm val,SPSD nop .endm RD_SUB_REG .macro addr,acc ;读McBsp控制寄存器 stm #:addr:,SPSA nop ldm SPSD,acc nop nop nop .endm
WAITTRX .macro ;等待串口中断 WAITR? RD_SUB_REG SPCR1,A and #1<<1, A bc WAITR?, AEQ .endm
PROGREG .macro progword ;与AD50二次通讯 stm #01h,RDXR WAITTRX stm #:progword:,RDXR WAITTRX .endm
wait .macro STM #0008h, AR2 RPT *AR2 NOP .endm
.mmregs .global _c_int00
.sect ".vectors" RESET b _c_int00 nop nop .space 19*4*16 BRINT0 b recv nop nop BXINT0 b trans nop nop .space 4*4*16 BRINT1 b recv nop nop BXINT1 b trans nop nop .space 4*4*16 K_FIR_BFFR .set 16
coff_fir_table .sect "coff_fir" .word 6fh,0f3h,269h,50dh,8a9h,0c99h,0ff8h,11ebh,11ebh,0ff8h,0c99h,8a9h,50dh,269h,0f3h,64h ;.word 42,0,-78,0,142,0,-235,0,357,0,-235,0,142,0,-78,0 d_data_buffer .usect "fir_bfr",40
.text _c_int00 ld #0h,DP stm #7ffh,SP ssbx INTM ssbx SXM st #2491h,SWWSR st #0ffe0h,PMST ;st #0f287h,CLKMD ST #0h,CLKMD tst: BITF CLKMD,#1h BC tst,TC ST #1087h,CLKMD BITF CLKMD,#1h RPT #0FFh NOP stm #5000h,ar7 stm #5000h,ar6 fir_init stm #1,AR0 stm #coff_fir_table,FIR_COFF_P stm #d_data_buffer,FIR_DATA_P rptz A,#K_FIR_BFFR stl A,*FIR_DATA_P stm #(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P stm #K_FIR_BFFR,BK
mcbsp_init ;初始化McBsp串口 rsbx CPL nop ; cpl latency nop ; cpl latency nop ; cpl latency
ld #0,DP ssbx INTM ssbx SXM
WR_SUB_REG #0000H,SPCR1 WR_SUB_REG #0200H,SPCR2 WR_SUB_REG #000CH,PCR WR_SUB_REG #0000H,SPCR1 WR_SUB_REG #0000H,SPCR2 WR_SUB_REG #0040H,RCR1 ;16 BITs WR_SUB_REG #0004H,RCR2 ;Ignore FS after the first WR_SUB_REG #0040H,XCR1 ;16 BITs WR_SUB_REG #0004H,XCR2 ;Ignore FS after the first
ld 100,A wait
andm #0ff3fh, 54h ;set interrupts to come from serial ports not DMA ;by clearing bits 6 and 7 in DMPREC stm #0,RDXR WR_SUB_REG #0001H,SPCR1 ;启动McBsp串口 WR_SUB_REG #0201H,SPCR2 ld 100,A wait
aic_init stm #0h,IMR orm IMASK,IMR stm #0ffffh,IFR
;PROGREG 0180H ;二次通讯初始化AD50 ;PROGREG 02C0H PROGREG 0301h PROGREG 0410h ;PROGREG 0000001100000001b ; 876543210 ;PROGREG 0000010000010000b ; 876543210
ld RDRR,A ld RDRR,A stlm A,RDXR stlm A,RDXR rsbx INTM nop nop nop js nop nop nop b js
recv ldm RDRR,A ;ADC采样数据经滤波后发送到DAC输出 stl A,*FIR_DATA_P+0% rptz A,(K_FIR_BFFR-1) mac *FIR_DATA_P+0%,*FIR_COFF_P+0%,A andm #0fffeh,ah sth A,RDXR rsbx XF rete trans rsbx XF rete .end
|