📄 test2.asm
字号:
.title "test2.ASM"
.mmregs
stack .usect "stack",50
buffer .usect "buffer",0x1900
frame .usect "frame",1
flag .usect "flag",1
currbuff .usect "curbuff",1
xn .usect "xn",80
a0 .usect "a0",80
.bss xi,1
.bss y,1
.mmregs
length .set 04FFh
.global buffer,frame,flag,stack
.global currbuff
.global xi,y
.def _c_int00
.ref _init_5402
.ref _init_AD50
.include "reg.h"
.data
table: .word -5*32768/10000 ; H0----H79
.word 25*32768/10000
.word 24*32768/10000
.word -27*32768/10000
.word -55*32768/10000
.word 8*32768/10000
.word 88*32768/10000
.word 39*32768/10000
.word -103*32768/10000
.word -115*32768/10000
.word 80*32768/10000
.word 207*32768/10000
.word 7*32768/10000
.word -286*32768/10000
.word -176*32768/10000
.word 310*32768/10000
.word 445*32768/10000
.word -207*32768/10000
.word -873*32768/10000
.word -215*32768/10000
.word 1926*32768/10000
.word 3915*32768/10000
.word 3915*32768/10000
.word 1926*32768/10000
.word -215*32768/10000
.word -873*32768/10000
.word -207*32768/10000
.word 445*32768/10000
.word 310*32768/10000
.word -176*32768/10000
.word -286*32768/10000
.word 7*32768/10000
.word 207*32768/10000
.word 80*32768/10000
.word -115*32768/10000
.word -103*32768/10000
.word 39*32768/10000
.word 88*32768/10000
.word 8*32768/10000
.word -55*32768/10000
.word -27*32768/10000
.word 24*32768/10000
.word 25*32768/10000
.word -5*32768/10000
.text
_c_int00:
RSBX XF
RSBX XF
SSBX XF
SSBX INTM ;关闭所有可屏蔽中断,INTM=1
STM #stack+50,SP
NOP
NOP
CALL _init_5402 ;初始化C5402
NOP
NOP
; ***init McBSP1(C5402有两个MCBSP[1,2])***
STM SPCR1,MCBSP1_SPSA ;给出要修改的寄存器
STM #0000h,MCBSP1_SPSD;0021h ;修改MCBSP1_SPCR1寄存器的值为0000h
STM SPCR2,MCBSP1_SPSA
STM #0000h,MCBSP1_SPSD;0201h ;修改MCBSP1_SPCR2寄存器的值为0000h
STM RCR1,MCBSP1_SPSA
STM #0040h,MCBSP1_SPSD;16bits ;the length of frame is1.1 word per frame,the length of word is 16 bits
STM RCR2,MCBSP1_SPSA
STM #0000h,MCBSP1_SPSD
STM XCR1,MCBSP1_SPSA
STM #0040h,MCBSP1_SPSD;1 word ,16 bits
STM XCR2,MCBSP1_SPSA
STM #0000h,MCBSP1_SPSD
STM SRGR1,MCBSP1_SPSA
STM #0000000000000000b,MCBSP1_SPSD
STM SRGR2,MCBSP1_SPSA
STM #0000000000000000b,MCBSP1_SPSD
STM PCR,MCBSP1_SPSA
STM #000ch,MCBSP1_SPSD ;发送帧同步信号和发送数据均在下降沿触发
NOP ;接受帧同步信号和发送数据均在上升 沿触发
NOP
STM SPCR1,MCBSP1_SPSA
STM #0001h,MCBSP1_SPSD;0021h ;接收XRST=1使能
STM SPCR2,MCBSP1_SPSA
STM #0001h,MCBSP1_SPSD;0201h 发送RRST=1使能
CALL _init_AD50 ;初始化AD50
NOP
NOP
;判断SPCR1中RRDY是否为1(接收是否准备好),为1(准备好)就继续执行(接受数据),否则死循环。
SSBX FRCT
STM #a0,AR1
RPT #43
STM #0,*AR1+
STM #xn+43,AR3
STM #a0+43,AR4
STM #-1,AR0
LOOP: STM SPCR1,MCBSP1_SPSA
LOOPR: BITF *(MCBSP1_SPSD), #0x0002
BC LOOPR, NTC
NOP
NOP
;DSP接收数据
LDM MCBSP1_DRR1, A
STL A,*AR3+0%
RPTZ A,#43
MAC *AR3+0%,*AR4+0%,B
STH B,*(y)
STM #y,AR2
LD *AR2,A
NOP
NOP
;判断SPCR2中XRDY是否为1(发送是否准备好),为1(准备好)就继续执行(发送数据),否则死循环。
STM SPCR2,MCBSP1_SPSA
L: BITF *(MCBSP1_SPSD), #0x0002
BC L, NTC
NOP
NOP
;DSP发送数据
STLM A, MCBSP1_DXR1
NOP
NOP
B LOOP
NOP
NOP
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -