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

📄 lbdai.asm

📁 这是DSP的实验报告程序(FFT/IIR/FIR)欢迎大家借鉴!
💻 ASM
字号:
		.title "ex10"
BSP			.set		0		;当前使用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 10*4*16
K_FIR_BFFR		.set 80
coff_fir_table	.sect "coff_fir"
h0               .word     0
h1               .word     -8
h2               .word     9
h3               .word     40
h4               .word     46
h5               .word     0
h6               .word     -62
h7               .word     -72
h8               .word     -20
h9               .word     23
h10              .word     0
h11              .word     -32
h12              .word     37
h13              .word     179
h14              .word     205
h15              .word     0
h16              .word     -267
h17              .word     -303
h18              .word     -81
h19              .word     91
h20              .word     0
h21              .word     -115
h22              .word     129
h23              .word     613
h24              .word     686
h25              .word     0
h26              .word     -861
h27              .word     -966
h28              .word     -256
h29              .word     290
h30              .word     0
h31              .word     -375
h32              .word     433
h33              .word     2143
h34              .word     2547
h35              .word     0
h36              .word     -3932
h37              .word     -5295
h38              .word     -1888
h39              .word     3793
h40 		 .word     6535
h41              .word     3793
h42              .word     -1888
h43              .word     -5295
h44              .word     -3932
h45              .word     0
h46              .word     2547
h47              .word     2143
h48              .word     433
h49              .word     -375
h50              .word     0
h51              .word     290
h52              .word     -256
h53              .word     -966
h54              .word     -861
h55              .word     0
h56              .word     686
h57              .word     613
h58              .word     129
h59              .word     -115
h60              .word     0
h61              .word     91
h62              .word     -81
h63              .word     -303
h64              .word     -267
h65              .word     0
h66              .word     205
h67              .word     179
h68              .word     37
h69              .word     -32
h70              .word     0
h71              .word     23
h72              .word     -20
h73              .word     -72
h74              .word     -62
h75              .word     0
h76              .word     46
h77              .word     40
h78              .word     9
h79              .word     -8

d_data_buffer	.usect "fir_bfr",200
		.text
_c_int00
		ld #0h,DP
		stm #7ffh,SP
		ssbx INTM
		ssbx SXM
        st #7fffh,SWWSR
        st #0ffe0h,PMST
        ST #0h,CLKMD
tst:	BITF CLKMD,#1h
		BC tst,TC
    	ST #01007h,CLKMD
		BITF CLKMD,#1h
		RPT #0FFh
		NOP
        stm #4000h,ar6
        stm #4500h,ar3
        stm #1000h,ar7
        ld #0,a
wer     stl a,*ar6+
        banz wer,*ar7-
        stm #4000h,ar6
        stm #999,ar7
        stm #4500h,ar3
fir_init
		stm #1,AR0                           ;step=1
		stm #coff_fir_table,FIR_COFF_P       ;fir_data_p=ar4
		stm #d_data_buffer,FIR_DATA_P        ;fir_data_p=ar5
		rptz A,#K_FIR_BFFR                   ;fir_data_p=0
		stl A,*FIR_DATA_P
		stm #(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P  ;ar4=ar4+79
		stm #K_FIR_BFFR,BK                            ;bk=80
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 #30h,IMR
		stm #0ffffh,IFR
		PROGREG 0301h
		PROGREG 0410h
		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采样数据滤波存放到A中
        ld a,b                  ;ADC采样数据不滤波存放到B中
		stl A,*FIR_DATA_P+0%    ; 代替原来的数据
		rptz A,(K_FIR_BFFR-1)   ; 80阶
		mac *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ;
		andm #0fffeh,ah
		sth A,RDXR              ;portw out
		banz rrr,*ar7-          ;反复1000h次
	    stm #999,ar7
		stm #4000h,ar6
		stm #4500h,ar3
		rsbx XF
		rete
rrr		stl a,*ar3+      ;没有滤波的放在AR3里4500H
        stl b,*ar6+      ; 滤了的数据放在AR6里4000H
        rete
trans	rsbx XF                                       
		rete
		.end
		
		
		

⌨️ 快捷键说明

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