📄 mcbsp0risr.asm
字号:
***此程序是串口0的接收中断服务程序,完成了将ad73311采样数据存入指定地址的任务
***接收中断的速率按照AD73311的帧率进行
*程序在10.20日修改过,最后定型的程序应该是,在中断中只将采样数据共16k存入地址
*6000h-a000h的内存中,应该去掉自动回声的程序,同时在中断程序中,可以设置如果
*采样16k数据以满,那么立即屏蔽中断,使中断不再响应。也可以在主程序中依据中断
*进入的次数,关闭中断不再响应
.include MMRegs.h
.global _mcbsp0risr
.global _admemory
.global _MCBSP0RNUM
.include "regsave.asm"
.title "mcbsp0risr.asm"
.sect "mcbsp0"
_mcbsp0risr
ssbx intm ;关中断
reg_save
rsbx sxm
stm #_MCBSP0RNUM, ar6
nop
nop
ld *ar6, a
nop
nop
nop
add #1, a
nop
nop
nop
stl a,*ar6
nop
nop
nop
stm #_admemory, ar6 ;
nop
nop
ld *ar6, a ;将数据要存放的地址放入a中
nop
nop
nop
nop
sub #0a000h, a ;可以存入16k数据
nop
nop
bc redo, NC ;如果存储地址超过了a000h,那么重置6000h,或者屏蔽掉中断
stm #_admemory, ar6
nop
nop
st #6000h, *ar6
nop
nop
nop
stm #_MCBSP0RNUM, ar6
nop
nop
st #0000h, *ar6
nop
nop
nop
redo
ld *ar6, a
nop
nop
nop
nop
stlm a, ar5 ;将数据要存放的地址放入ar5寄存器中
nop
nop
nop
ldm McBSP0_DRR1, a ;读取drr10中的数据
nop
nop
nop
nop
*********** 信号合并 先合并再输出,可观察采样波形**********
sub #4000h, a
nop
nop
nop
bc nosub, NC
sub #4000h, a
b outspeech
nosub add #4000h,a
nop
nop
nop
outspeech
***************信号合并***************
stl a, *ar5 ;将a中的数据(读取的数据)放入ar5中的地址中
nop
nop
nop
*此段程序是使AD73311输出采样数据的D/A转换结果的
ld *ar5, a ;将ar5中地址指向的数据存入a中
nop
nop
nop
*********** 信号合并 输出,如果使用此断程序,上面的合并程序不需要**********
; sub #4000h, a
; nop
; nop
; nop
; bc nosub, NC
; sub #4000h, a
; b outspeech
;nosub add #4000h,a
; nop
; nop
; nop
;outspeech
***************信号合并***************
stlm a, 23h ;将数据从串口发送出去,这相当于同步回声
nop
nop
nop
********************************
stm #_admemory,ar6
nop
nop
ld *ar6, a
nop
nop
nop
nop
add #1, a
nop
nop
nop
stl a, *ar6 ;接收数据的存放地址加1,仍然存入admemory地址中
nop
nop
nop
ssbx sxm
out reg_restore
rete ;开中断,从中断返回
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -