📄 dsptest.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 + -