📄 main.asm
字号:
.mmregs
.global _c_int00
.ref fir_init
.ref cf_serial
SPSA0 .set 38h
SPSD0 .set 39h
SPSA1 .set 0x0048
SPSD1 .set 0x0049
SPSA2 .set 0x0034
SPSD2 .set 0x0035
SPCR1 .set 0x0000
SPCR2 .set 0x0001
PCR .set 0x000e
.text
_c_int00:
;-------------------------------------------
; 初始化DSP
;-------------------------------------------
; 关中断
SSBX INTM
RSBX CPL
NOP
NOP
; 设置堆栈
STM 600h,SP
; 设置中断屏蔽寄存器,开串口0收中断
STM #10h,IMR
; 清中断标志
STM 0,IFR
; 设置DP指针值,用于DP寻址高9位
LD #0h,DP
; 设置软件等待状态寄存器和块转移控制寄存器
STM 7fffh,SWWSR
STM 800h,BSCR
; 设置中断向量表首地址
LDM PMST,A
AND #7fh,0,A,A
OR #0080h,0,A,A
STLM A,PMST
;将串口1配置为通用IO
STM #SPCR1,SPSA1
ANDM #0xfffe,SPSD1
STM #SPCR2,SPSA1
ANDM #0xfffe,SPSD1
RPT #0x1ff
NOP
STM #PCR,SPSA1
STM #0x3f00,SPSD1
;AD50 reset
STM #PCR,SPSA1
ANDM #0xfffB,SPSD1 ;实现复位
RPT #0x7fff
NOP
RPT #0x7fff
NOP
STM #PCR,SPSA1
ORM #0x0004,SPSD1
RPT #0x7fff
NOP
NOP
RPT #0x7fff
NOP
; 设置时钟模式寄存器,根据需要倍频
STM 0h,CLKMD
cmode: LDM CLKMD,A
AND #1h,0,A,A
BC cmode,ANEQ
STM 1207h,CLKMD
;-------------------------------------------
; 初始化串口
;-------------------------------------------
; 串口收发复位
STM 0h,SPSA0
ANDM 0fffeh,SPSD0
STM 1h,SPSA0
ANDM 0ff3eh,SPSD0
RPT #1ffh
NOP
; 根据串口配置表配置串口
STM SPSA0,AR2
STM 6h,BRC
LD #cf_serial,0,A
RPTB sconf-1
READA *AR2+
ADD #1h,0,A,A
READA *AR2-
ADD #1h,0,A,A
sconf:
nop
; 使能串口
RPT #1ffh
NOP
STM 0h,SPSA0
ORM 1h,SPSD0
STM 1h,SPSA0
ORM 1h,SPSD0
;-------------------------------------------
; 完成处理工作
;-------------------------------------------
CALL fir_init
; 开中断
RSBX INTM
NOP
NOP
loop: NOP
NOP
B loop
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -