📄 ad.asm
字号:
***************************************************************
*******************TLV1571调试程序*****************************
***************************************************************
.mmregs
.def jump
.def start
;.def time
K_SAMPLE_NUM .set 256
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
***********************************************************
********************滤波器初始化***************************
***********************************************************
;.def START2
K_DATA_SIZE .set 256 ;输入数据个数
K_BUFFER_SIZE .set 8
;缓冲大小,必须大于a和b,并且必须是2的正整数次幂
K_STACK_SIZE .set 256 ;堆栈大小
K_A .set 3 ;a向量的个数
K_B .set 4 ;b向量的个数
K_CIR .set K_BUFFER_SIZE
;STACK .usect "stack",K_STACK_SIZE
;SYSTEM_STACK .set K_STACK_SIZE+STACK
DATA_DP .usect "filter_vars",0
filterdata .usect "filter_vars",K_DATA_SIZE
bufferdatay .usect "filter_vars",256
bufferdatax .usect "filter_vars",K_BUFFER_SIZE*2
***********************************************************
*******************重新映射中断向量的变量******************
***********************************************************
K_IPTR .set 000111000b<<07
K_TEMP .set 1111111b
D_PMST .usect "pmst",1
************************************************************
************************************************************
.sect "prog"
.asg AR2,ORIGIN
.asg AR3,INPUT
.asg AR4,FILTER
.asg AR5,OUTPUT
.def b1,b2,b3,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
start:
SSBX FRCT
LDM PMST,A
AND #K_TEMP,A
OR #K_IPTR,A
STL A,ar6
MVDM ar6,PMST
stm #0ffffh,tcr
stm #00177h,PRD
stm #08e4h,TCR
*******************************************************
*******************设置初始值**************************
*******************************************************
stm #d_temp,ar6
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 #K_CIR,BK
STM #1,AR0
STM #out_data,ORIGIN
STM #bufferdatax,INPUT
STM #bufferdatay,FILTER
STM #filterdata,OUTPUT
RPT #K_A-1
;MVDD *ORIGIN+,*INPUT+0%
STM #0, *INPUT+0%
STM #bufferdatax,INPUT
RPT #K_A-1
MVDD *INPUT+0%,*FILTER+0%
; STM #0,*FILTER+0%
STM #bufferdatay,FILTER
; STM #bufferdatax,INPUT
********************************************************
*************写状态字***********************************
********************************************************
portr 0FFFFH,*ar6
nop
nop
nop
portw *ar1+,07FFFH
rpt #8
nop
portw *ar1,07FFFH
portr 01h,*ar6
rpt #10
nop
nop
**********************************************************
********************中断设置******************************
**********************************************************
stm #0008h,IMR
nop
nop
stm #0000h,IFR
nop
rsbx intm
nop
*********************************************************************
*******等待中断,使用累加器A做计数器,当写完K_SAMPLE_NUM个数据后,******
***********重置累加器A,并使AR5指向out_data的开始地址*****************
*********************************************************************
WAIT: NOP
NOP
; BC WAIT,ANEQ
; NOP
;STM #out_data,ar7
; STM #filterdata,ar5
;LD #K_SAMPLE_NUM,A
B WAIT
NOP
******************************************************************
**********中断服务程序,用以读装换信号,放入out_data区**************
******************************************************************
jump: ;SUB #1h,A
rsbx xf
rpt #5
nop
portr 07FFFH,*ar7
********************归一化, 移位********************
LD *ORIGIN, A
SFTA A, 6, B
STL B, *ORIGIN
********************归一化, 移位********************
rpt #5
nop
ssbx xf
nop
portr 0FFFFH,*ar6
nop
nop
nop
nop
**********************************
MVDD *ORIGIN,*INPUT
RPT #K_B-1-1
MAR *INPUT-0%
MPY *INPUT+0%,#b4,B
LD B,A
MPY *INPUT+0%,#b3,B
ADD B,A
MPY *INPUT+0%,#b2,B
ADD B,A
MPY *INPUT+0%,#b1,B
ADD B,A
MPY *FILTER+0%,#a3,B
ADD B,A
MPY *FILTER+0%,#a2,B
ADD B,A
MPY *FILTER+0%,#a1,B
ADD B,A
STH A,*FILTER-0%
STH A,*OUTPUT
MAR *FILTER-0%
********************归一化, 移位********************
LD *OUTPUT, A
SFTA A, -4, B
STL B, *OUTPUT
********************归一化, 移位********************
**********************************
portw *OUTPUT,0BFFFH
nop
nop
rete
;time:
; portw *ar7+,0BFFFH
; nop
; nop
; rete
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -