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

📄 dsptest.asm

📁 dsp测试初始化编程
💻 ASM
字号:
		.title "bigt8n"

		.include "init54x.inc"
		.include "initbsp.inc"
		.include "cpu_reg.inc"
		.include "K_def.inc"

		.mmregs

;FOLLOWING IS MACRO DEFINE FOR AD 
;**********************************************************************
WR_MCBSP_SUB_REG        .macro  addr,val
                        stm     addr,SPSA0
                        nop
                        stm     val,SPSD0
                        nop
                        .endm

RD_MCBSP_SUB_REG        .macro  addr,acc
                        stm     #:addr:,SPSA0
                        nop
                        ldm     SPSD0,acc
                        nop
                        nop
                        nop
                        .endm

WAITTRX   .macro             ; Wait for serial port to Rx word
WAITR?
        RD_MCBSP_SUB_REG        SPCR20,A
        and #1<<1, A
        bc   WAITR?, AEQ
          .endm

PROGREG   .macro    progword
        WAITTRX
		stm  #01h,DXR10       
        WAITTRX
        stm     :progword:,DXR10
          .endm               

wait   .macro	val
		RPT val 		;repeat the #val of times 
		NOP 			;do nothing in the loop
		.endm 			

;*********************************************************************

		.def	MAIN_START 

		.data
RES_SPACE:
		.space	07E0h		;reserve 127 words and clear 0
		.word   8000h
		.word   0000H


                .sect    ".DISPLAY"
		.label   DISPLAY_SRC
		.word	08AAH		;INDICATE 8BITS PARALLEL BOOT MODE
		.word	7fffH		;VALUE FOR SWWSR
		.word	0F000H		;VALUE FOR BSCR
		.word	0000h		;xpc for entry point
		.word   0100h       ;pc for entry point
		.word	02f0h		;size of first section
		.word	0000h		;xpc for first section
		.word	0100h		;pc for first section
		.copy   "vector.asm"
MAIN_START:
DISPLAY:
		LD	#00H,DP
		STM     #K_SP,SP
		STM     #K_ST0,ST0		;DP=0,ARP=0
		STM     #K_ST1,ST1		;INTM=1,SXM=0,CMPT=0,XF=0
		RSBX    XF				;XF=0
	    STM     #K_PMST,PMST    ;IPTR=02,MP/MC=1,OVLY=1,AVIS=0,drom=1, clkoff=1,
		STM     #K_SWWSR,SWWSR	;I/O is ONE cycle wait 
		STM     #K_SWCR,SWCR
		STM     #K_BSCR,BSCR
		ST      #0FFF7H,PORT2_BUF
		PORTW   PORT2_BUF,0002H		

		STM	#0b,CLKMD
T_STATU0X:
		LDM	CLKMD,A
		AND     #01b,A
		BC	T_STATU0X,ANEQ
		STM	#0b,CLKMD

;*************************************************************************
;*   audio_init:
;*************************************************************************
_DSS_init

     WR_MCBSP_SUB_REG   SPCR10,	#SPCR10_VAL	; reset McBSP0
     WR_MCBSP_SUB_REG   SPCR20,	#SPCR20_VAL

     WAIT	#1000H

     WR_MCBSP_SUB_REG   PCR0,	#PCR0_VAL
     WR_MCBSP_SUB_REG   RCR10,	#RCR10_VAL
     WR_MCBSP_SUB_REG   RCR20,	#RCR20_VAL
     WR_MCBSP_SUB_REG   XCR10,	#XCR10_VAL
     WR_MCBSP_SUB_REG   XCR20,	#XCR20_VAL
        
     WAIT	#1000H

; set interrupts to come from serial ports not DMA
; by clearing bits 6 and 7 in DMPREC
     andm       #0ff3fh, 54h

;AFTER ENABLE mcbsp0, SEND 0 TO EXTERNAL TO SET UP DATA ACQUISTION AS REQUIRED 
     stm 	#0, DXR10

; now enable McBSP transmit and receive
     WR_MCBSP_SUB_REG   SPCR10,#SPCR10_VAL | 1
     WR_MCBSP_SUB_REG   SPCR20,#SPCR20_VAL | 1

 	WAIT	#1000H
	
	CALL	DELAY      
	CALL 	DELAY
;*************************************************************************
;*   AIC_INIT:
;*   Initialization of TLC320AD50.           
;*************************************************************************
_AIC_INIT    
	WAIT	#1000H	
	PROGREG #AD50REG3_VAL
	WAIT	#1000H
	PROGREG #AD50REG4_VAL
	nop
	nop
	nop
	CALL	DELAY    
	CALL	DELAY    
	CALL	DELAY    

	ld      DRR10, A
	ld      DRR10, A
	STM		#0000H,DXR10
	STM		#0000H,DXR10


BOOT_DISPLAY
		STM	#0001H,AR5
LOOPF:  ANDM    #NOTEPT,PORT2_BUF
		portw   PORT2_BUF,0002h      
		CALL	DELAY
		ORM     #EPTLED,PORT2_BUF
        portw   PORT2_BUF,0002h
		CALL	DELAY
		BANZ	LOOPF,*AR5-

INIT
		STM     #K_IMR,IMR		;ENABLE BRINT0
		ST      #0FFF7H,PORT2_BUF
		ORM     #EPTLED,PORT2_BUF
		PORTW   PORT2_BUF,0002H		;DISPLAY EMPTY STATUS
		RSBX    INTM			;ENABLE INTERRUPT

		STM     #K_CLKMD,CLKMD	;set clock to 100Mhz
		WAIT	#1000H

MAIN_LOOP:
	    ANDM    #NOTEPT,PORT2_BUF
		portw   PORT2_BUF,0002h      
		STM	#0040H,AR6
DEY1EX:
		STM	#0FFF0H,AR5
DEY1IN:		
		NOP
		BANZ	DEY1IN,*AR5-
		BANZ	DEY1EX,*AR6-

		ORM     #EPTLED,PORT2_BUF
        portw   PORT2_BUF,0002h
		STM	#0040H,AR6
DEY2EX:
		STM	#0FFF0H,AR5
DEY2IN:		
		NOP
		BANZ	DEY2IN,*AR5-
		BANZ	DEY2EX,*AR6-

		B       MAIN_LOOP


;*************************************************************************
;*   ANALOG_IFC:
;*
;*   Serial port receive interrupt service routine
;************************************************************************

_CPU_to_codec_ch1
	PSHM   	AL
	PSHM   	AH
	PSHM	AG
	LDM  	DRR10,	a
    and     #0fffeh, A          ;masking out LSB
	STL 	A,DXR10
	POPM	AG
	POPM    AH
	POPM    AL
	POPM    ST1
	POPM    ST0
	rete
     
DELAY: 
	PSHM    AR6
	STM     #0020H,AR6
DELAY_LOOP:
    RPT     #(0fff0h)
	NOP
	BANZ    DELAY_LOOP,*AR6-
	POPM    AR6
	RET



		.space	4000h
		.label	DISPLAY_END

		.text
	LD		#00H,DP
	STM		#K_SP,SP
    STM     #0FFA0H,PMST    	;OVLY=1&MP/MC=0,drom=0,clkoff=0
	STM     #07FFFH,SWWSR
	STM     #0FFFFH,SWCR
    SSBX    INTM            	;disable all interrupt
	ST      #0FFFFH,PORT2_BUF
	ORM     #EPTLED,PORT2_BUF
	ANDM    #CLR_CWR,PORT2_BUF	;SET CWR LOW
	PORTW   PORT2_BUF,0002H		;SHUT LED
	STM     #8000H,AR3
	STM     DISPLAY_SRC,AR5

	STM     #0BH,AR4		;WRITE FIRST BLOCK OF BOOT ABLE 
WRI_RPT					;768 WORDS TOTAL
	STM     #63,AR1			;WRITE 128 BYTES
WRI_LOP:
	LD      *AR5,-8,A
	STL     A,*AR3+	
	NOP
	NOP
	NOP
	LD      *AR5+,A
	STL     A,*AR3+
	nop
	BANZ    WRI_LOP,*AR1-
	CALL    DELAYY
	BANZ    WRI_RPT,*AR4-

	STM     #RES_SPACE,AR1		;WRITE THE SOURCE ADDRESS
	STM     #0FF80H,AR5
	STM     #127,AR3
WRI_LOOP:
	LD     *AR1+,-8,A
	STL    A,*AR5+			
	nop
	BANZ    WRI_LOOP,*AR3-

LOAD_LOOP:
	ANDM     #NOTEPT,PORT2_BUF
	ORM      #SET_CWR,PORT2_BUF
    PORTW    PORT2_BUF,0002H	;LIT LED
	B       $

DELAYY: 
	PSHM    AR2
	STM     #0020H,AR2
DELAYY_LOOP:
    RPT     #0fff0h
	NOP
	BANZ    DELAYY_LOOP,*AR2-
	POPM    AR2
	RET

		.end

⌨️ 快捷键说明

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