📄 test.asm
字号:
.title "ex12"
BSP .set 0 ;当前使用McBsp0
;McBsp0 内存映射寄存器
SPSA0 .set 038h ;定义子地址寄存器映射位置
SPSD0 .set 039h ;定义子块数据寄存器映射位置
DRR10 .set 021h ;接收数据寄存器1映射位置
DRR20 .set 020h ;接收数据寄存器2映射位置
DXR10 .set 023h ;发送数据寄存器1映射地址
DXR20 .set 022h ;发送数据寄存器2映射地址
;McBsp1 内存映射寄存器
SPSA1 .set 048h
SPSD1 .set 049h
DRR11 .set 041h
DRR21 .set 040h
DXR11 .set 043h
DXR21 .set 042h
;McBsp Subaddressed Registers
SPCR1 .set 00h ;定义SPCR10的映射子地址
SPCR2 .set 01h ;定义SPCR20的映射子地址
RCR1 .set 02h ;接收控制寄存器1映射子地址
RCR2 .set 03h ;接收控制寄存器2映射子地址
XCR1 .set 04h ;发送控制寄存器1映射子地址
XCR2 .set 05h ;发送控制寄存器2映射子地址
SRGR1 .set 06h ;采样率发生器寄存器1映射子地址
SRGR2 .set 07h ;采样率发生器寄存器2映射子地址
MCR1 .set 08h ;多通道控制寄存器1映射子地址
MCR2 .set 09h ;多通道控制寄存器2映射子地址
RCERA .set 0ah ;接收通道控制寄存器1映射子地址
RCERB .set 0bh ;接收通道控制寄存器2映射子地址
XCERA .set 0ch ;发送通道使能寄存器A映射子地址
XCERB .set 0dh ;发送通道使能寄存器B映射子地址
PCR .set 0eh ;引脚控制寄存器映射子地址
.if BSP = 0 ;条件汇编,因为5402有两个同步缓冲口如果BSP=0则使用同步缓冲口0
SPSA .set SPSA0 ;由于同步缓冲口采用子地址寻址方式
SPSD .set SPSD0
RDRR .set DRR10
RDXR .set DXR10
.endif
.if BSP = 1 ;条件汇编,因为5402有两个同步缓冲口如果BSP=1则使用同步缓冲口1
SPSA .set SPSA1
SPSD .set SPSD1
RDRR .set DRR11
RDXR .set DXR11
.endif
;以下程序是写数据的子程序也就是宏
WR_SUB_REG .macro val,addr ;写McBsp控制寄存器
stm addr,SPSA ;将ADDR的地址写入SPSA
nop ;空操作
stm val,SPSD ;将配置值写入SPSD
nop ;空操作
.endm
;以下程序是读数据的子程序也就是宏
RD_SUB_REG .macro addr,acc ;读McBsp控制寄存器
stm addr,SPSA ;将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 ;DSP与AD50的二次通讯(将其最后一位置为1便可)
stm #01h,RDXR
WAITTRX
stm progword,RDXR
WAITTRX
.endm
;以下程序是等待延时子程序
wait .macro
STM #0400h, AR0
RPT *AR0
NOP
.endm
.mmregs
.global _c_int00
.sect ".vectors"
;以下是中断向量表
RESET b _c_int00
nop
nop
.space 19*4*16
BRINT0 b recv
nop
nop
BXINT0 rete
nop
nop
nop
.space 10*4*16
;以下是主程序
.text
_c_int00
ld #0h,DP ;设置数据页指针为第0页
stm #0ff00h,SP ;设置堆栈指针地址为2000H
ssbx INTM ;关闭所有中断
ssbx SXM ;禁止符号扩展方式位。请看ST1寄存器
st #7FFFh,SWWSR ;设置等待寄存器全都设置为7等待
st #0E8h,PMST ;设置处理器工作方式状态寄存器
st #1007h,CLKMD ;设置时钟方式寄存器,工作频率为20M(工作频率取决于(高四位+1*10M
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -