📄 ad.asm
字号:
***************************************************************
*******************TLV1571调试程序*****************************
***************************************************************
.mmregs
.def jump
.def start
K_SAMPLE_NUM .set 256
K_BUFFER_SIZE .set 8
;缓冲大小,必须大于a和b,并且必须是2的正整数次幂
K_A .set 3 ;a向量的个数
K_B .set 4 ;b向量的个数
K_CIR .set K_BUFFER_SIZE
K_kk .usect "filter_vars",K_BUFFER_SIZE
bufferdatay .usect "filter_vars",K_BUFFER_SIZE*2
bufferdatax .usect "filter_vars",K_BUFFER_SIZE*2
out_data .usect "out_vars",K_SAMPLE_NUM
in_data .usect "in_vars",1
d_cr0_send .usect "cr_send",1
d_cr1_send .usect "cr_send",1
d_temp .usect "temp",1
k_cr0_send .set 0080h
k_cr1_send .set 0100h
***********************************************************
* Y(z) 0.1589+0.4768*(z-1)+0.4768*(z-2)+0.1589*(z-3) *
* ──=─────────────────────── *
* X(z) 1-(-0.1268*(z-1)+0.5239*(z-2)-0.1257*(z-3)) *
***********************************************************
.def b1,b2,b3,b4,a1,a2,a3
b1 .set 1456H ;b1=0.1589
b2 .set 3D07H ;b2=0.4768
b3 .set 3D07H ;b3=0.4768
b4 .set 1456H ;b4=0.1589
a1 .set -103AH ;a1=-0.1268
a2 .set 430FH ;a2=0.5239
a3 .set -1016H ;a3=-0.1257
***********************************************************
*******************重新映射中断向量的变量******************
***********************************************************
K_IPTR .set 000111000b<<07
K_TEMP .set 1111111b
D_PMST .usect "pmst",1
.sect "prog"
start: SSBX FRCT
LDM PMST,A
AND #K_TEMP,A
OR #K_IPTR,A
STL A,ar2
MVDM ar2,PMST
*******************************************************
*******************设置初始值**************************
*******************************************************
stm #d_temp,ar2
stm #d_cr0_send,ar1
st #k_cr0_send,*ar1+
st #k_cr1_send,*ar1
stm #d_cr0_send,ar1
LD #K_SAMPLE_NUM,A
stm #out_data,ar7
stm #in_data,ar5
STM #K_CIR,BK
STM #1,AR0
;STM #inputdata,ar6
STM #bufferdatax,ar3
STM #bufferdatay,ar4
********************************************************
*************写状态字***********************************
********************************************************
portr 0FFFFH,*ar2
rpt #20
nop
nop
nop
portw *ar1+,07FFFH
rpt #20
nop
portw *ar1,07FFFH
nop
nop
portr 0FFFFh,*ar2
rpt #10
nop
nop
**********************************************************
********************中断设置******************************
**********************************************************
stm #0008h,IMR
nop
nop
stm #0008h,IFR
nop
rsbx intm
nop
**********************************************************
********************定时器设置******************************
**********************************************************
stm #0810h,tcr
nop
nop
stm #0100h,PRD
nop
nop
stm #0829h,TCR
nop
nop
*********************************************************************
*******等待中断,使用累加器A做计数器,当写完K_SAMPLE_NUM个数据后,******
***********重置累加器A,并使AR5指向out_data的开始地址*****************
*********************************************************************
WAIT: NOP
NOP
BC WAIT,ANEQ
NOP
STM #out_data,ar7
LD #K_SAMPLE_NUM,A
B WAIT
NOP
******************************************************************
**********中断服务程序,用以读装换信号,放入out_data区**************
******************************************************************
jump: SUB #1h,A
rsbx xf
rpt #5
nop
portr 07FFFH,*ar5
rpt #5
nop
ssbx xf
nop
nop
nop
;PSHM AR0
;STM #d_temp,ar0
;portr 0FFFFh,*ar0 ;读别的端口,使A/D转换器的CS为高
;POPM AR0
CALL filter_start
nop
nop
nop
portr 0FFFFH,*ar2
nop
nop
;portw *ar5+,0BFFFH
portw *ar7+,0BFFFH
nop
nop
rete
filter_TEST:
STL A, AR6
LDM *AR5, A
sfta A,#2
STL A, *AR7
LDM AR6, A
nop
nop
ret
filter_start:
STL A, AR6
ld *ar5,a
sfta a,+6
stl a,*ar5
;RPT #K_A-1
;MVDD *ar6+,*ar3+0%
;STM #bufferdatax,ar3
;RPT #K_A-1
;MVDD *ar3+0%,*ar4+0%
;STM #bufferdatay,ar4
;STM #bufferdatax,ar3
;STM #K_DATA_SIZE-3-1,BRC
;RPTB filter_end-1
MVDD *ar5,*ar3
RPT #K_B-1-1
MAR *ar3-0%
MPY *ar3+0%,#b4,B
LD B,A
MPY *ar3+0%,#b3,B
ADD B,A
MPY *ar3+0%,#b2,B
ADD B,A
MPY *ar3+0%,#b1,B
ADD B,A
MPY *ar4+0%,#a3,B
ADD B,A
MPY *ar4+0%,#a2,B
ADD B,A
MPY *ar4+0%,#a1,B
ADD B,A
STH A,*ar4-0%
nop
nop
sfta a,-4
STH A,*ar7
nop
nop
LDM AR6, A
nop
nop
MAR *ar4-0%
filter_end: NOP
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -