📄 main1.asm
字号:
;ZY13DSP12BD mfilter1.0
;Mr Li Xiao Bei
;Hu Bei Zhong You
;2004.6.9
;mfilter1.0
;======================== main.asm =========================
;
.mmregs
.def _c_int00
.include c54.inc
.ref c54init
.ref table
.def Get_ADValue
;A/D输入地址
PA1 .set 0x0008
;D/A输出地址
PA0 .set 0x0002
.bss y,1 ;y
.data
ad_data .usect "ad_data",256 ;一共采样128个点来完成滤波的实验
xn .usect "xn",80 ;xn
h .usect "h",80 ;h
.sect "progsys"
.align 0x10
_c_int00:
STM #0x0f80,SP
CALL c54init ;设置相应的采样率来完成实验项目
LD #ad_data,DP
SSBX FRCT ;小数乘法
STM #h,AR1
RPT #79
MVPD table,*AR1+ ;将滤波系数从程序存储区搬移到数据存储区
STM #h+79,AR4
STM #ad_data,AR5 ;将A/D数据缓冲区的首地址赋值给AR5
STM #256,AR6 ;将缓冲区大小初始值赋127
STM #79,AR7 ;对滤波器输入数据xn进行计数
STM #80,BK ;设置循环缓冲器的长度
STM #-1,AR0
STM #xn,AR3
MVDD *AR5+,*AR3 ;将A/D采集进来的数据输入xn进行运算
STM #xn+79,AR3 ;将AR3指向循环缓冲区的最后一位数据
; LD #xn,DP
FIR:
RPTZ A,#79
MAC *AR3+0%,*AR4+0%,A
STH A,@y
PORTW @y,PA0
BANZ bbb,*AR7-
STM #ad_data,AR5 ;将A/D数据缓冲区的首地址赋值给AR5
bbb:
MVDD *AR5+,*AR3+0%
B FIR
**********ISR Get A/D Value and Filter*************
Get_ADValue:
*Read AD Value
;PSHM AR5
;PSHM AR6
PORTR PA1,*AR5+
BANZ aaa,*AR6-
;STM #127,AR6 ;开始刷新A/D数据缓冲区
;STM #ad_data,AR5 ;将A/D数据缓冲区的首地址赋值给AR5
STM #0,IMR ;关闭定时器
aaa:
;POPM AR6
;POPM AR5
RETE
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -