test.asm
来自「dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,f」· 汇编 代码 · 共 1,790 行 · 第 1/5 页
ASM
1,790 行
SACL CAPTURE_VALUE
SPLK #00H,DECODE_FLAG
B FLAG0OUT
PULSE32: LACL #0C000H ;WPULSE=2
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #00H,DECODE_FLAG
B FLAG0OUT
DEFLAG31: SPLK #01H,DECODE_FLAG ;DECODE_FLAG=0
FLAG3OUT: B CODENOUT ;************************
CODENOUT: LDP #5
LACL DENUMBER
ADD WPULSE
SACL DENUMBER
SUB #16 ;*******************23456********************8888
BCND GONEXT5,LT
LDP #5
LACL RXD_BYTES
ADD #01H
SACL RXD_BYTES ;字节数加1
SUB #0B0H
BCND SERROR,GT
NOP
NOP ;保存CAPTURE_VALUE
LAR AR4,#07H ;
LDP #5 ;
SPLK #0C000H,MCH_TEMP1 ;
SPLK #8000H,MCH_TEMP2 ;
SPLK #01H,MCH_TEMP3 ;
SPLK #0,MCHVALUE_TEMP ;
MCHCYCLE: LDP #5 ;
LACL CAPTURE_VALUE ;
AND MCH_TEMP1 ;
SUB MCH_TEMP2 ;
BCND DEMCH1,NEQ
NOP ;
B MECHNEXT ;
DEMCH1: LACL MCHVALUE_TEMP ;
OR MCH_TEMP3 ;
SACL MCHVALUE_TEMP
MECHNEXT: LACL MCH_TEMP1 ;
SFR ;
SFR ;
SACL MCH_TEMP1
LACL MCH_TEMP2 ;
SFR ;
SFR ;
SACL MCH_TEMP2
LACL MCH_TEMP3 ;
SFL ;
SACL MCH_TEMP3
MAR *,AR4 ;
BANZ MCHCYCLE ;
LDP #5 ;
LACL MCHVALUE_TEMP ;
MAR *,AR3 ;
SACL *+ ;*****************************8
LDP #5
LACL DENUMBER
SUB #16
BCND INTBYTE,EQ
NOP ;DENUMBER=17
LDP #5
LACL FLAG
BCND FLAGD1,NEQ
LACL DECODE_FLAG ;原FLAG=0
BCND DEFLAGD01,NEQ
SPLK #0,FLAG ;新FLAG=0
SPLK #0,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2
DEFLAGD01:SPLK #03H,FLAG ;新FLAG=3
SPLK #8000H,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2 ;**************************
FLAGD1: SUB #01H
BCND FLAGD2,NEQ
LACL DECODE_FLAG ;原FLAG=1
BCND DEFLAGD11,NEQ
SPLK #0,FLAG ;新FLAG=0
SPLK #0,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2
DEFLAGD11:SPLK #03H,FLAG ;新FLAG=3
SPLK #8000H,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2 ;*************************
FLAGD2: SUB #01H
BCND FLAGD3,NEQ
LACL DECODE_FLAG ;原FLAG=2
BCND DEFLAGD21,NEQ
SPLK #03H,FLAG ;新FLAG=3
SPLK #8000H,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2
DEFLAGD21:SPLK #00H,FLAG ;新FLAG=0
SPLK #0,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2 ;*************************
FLAGD3: LACL DECODE_FLAG ;原FLAG=3
BCND DEFLAGD31,NEQ
SPLK #03H,FLAG ;新FLAG=3
SPLK #8000H,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2
DEFLAGD31:SPLK #00H,FLAG ;新FLAG=0
SPLK #0,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2 ;**************************************8
INTBYTE: NOP ;DENUMBER=16
LDP #5
SPLK #0,CAPTURE_VALUE ;初始CAPTURE_VALUE=0
SPLK #00H,DENUMBER ;初始DENUMBER=0
LACL FLAG
BCND FLAGD21,NEQ
LACL DECODE_FLAG ;原FLAG=0
BCND DEFLAGD201,NEQ
SPLK #01H,FLAG ;新FLAG=1
B CODENOUT2
DEFLAGD201:SPLK #02H,FLAG ;新FLAG=2
B CODENOUT2 ;**************************
FLAGD21: SUB #01H
BCND FLAGD22,NEQ
LACL DECODE_FLAG ;原FLAG=1
BCND DEFLAGD211,NEQ
SPLK #01H,FLAG ;新FLAG=1
B CODENOUT2
DEFLAGD211:SPLK #02H,FLAG ;新FLAG=2
B CODENOUT2 ;*************************
FLAGD22: SUB #01H
BCND FLAGD23,NEQ
LACL DECODE_FLAG ;原FLAG=2
BCND DEFLAGD221,NEQ
SPLK #02H,FLAG ;新FLAG=2
B CODENOUT2
DEFLAGD221:SPLK #01H,FLAG ;新FLAG=1
B CODENOUT2 ;*************************
FLAGD23: LACL DECODE_FLAG ;原FLAG=3
BCND DEFLAGD231,NEQ
SPLK #02H,FLAG ;新FLAG=2
B CODENOUT2
DEFLAGD231:SPLK #01H,FLAG ;新FLAG=1
B CODENOUT2 ;*************************
CODENOUT2:LDP #5
SPLK #0,DECODE_FLAG
B GONEXT5
******************校验************************
CHECK: LDP #5
LACL RXD_BYTES
SUB #03H
BCND RXDEND,LT
NOP
NOP
LACL RXD_BYTES
SUB #02H
LDP #4
SACL NUMBER_OF_BYTES
LACL #ADDR_CAPTURE
SACL ADR_DATABYTES
CALL CRC16
LDP #5
LACL #ADDR_CAPTURE
ADD RXD_BYTES
SUB #01H
SACL TEMP
LAR AR4,TEMP
MAR *,AR4
LACL *-
RPT #07H
SFL
OR *
SACL TEMP
LDP #4
SUB CURRENT_CRC_VALUE
BCND RXDEND,NEQ
NOP
NOP
LIGHT: LDP #4
SPLK #01H,RESPONCE_FLAG
SERROR: LDP #5
SPLK #0,CAPTURE_TEMP
RXDEND: NOP
RET
***************;保存接收数据到指定位置**
SAVE_DATA:LDP #5
LACL RXD_BYTES
LAR AR3,#_viccdata
MAR *,AR3
SACL *+
LAR AR6,RXD_BYTES
MAR *,AR6
SBRK #01H
LAR AR4,#ADDR_CAPTURE
MOVE_ON: MAR *,AR4
LACL *+,AR3
SACL *+,AR6
BANZ MOVE_ON
NOP
NOP
RET
;***********************************************************
;子程序CRC16有两个参数:NUMBER_OF_BYTES(进行CRC运算的字节个数
; 和ADR_DATABYTES(进行CRC运算的数据的首地址)
*************************************************************
CRC16:LDP #4
LACL NUMBER_OF_BYTES
BCND IOUT,EQ
NOP
NOP
SUB #0FFH
BCND IOUT,GT
NOP
NOP
SPLK #8408H,POLYNOMIAL
SPLK #0FFFFH,PRESET_VALUE
SPLK #0F0B8H,CHECK_VALUE
SPLK #01H,CALC_CRC
SPLK #0,CHECK_CRC
LACL PRESET_VALUE
SACL CURRENT_CRC_VALUE
SPLK #0,I
SPLK #0,J
LAR AR1,ADR_DATABYTES
ICYCLE:
MAR *,AR1
LACL *+
XOR CURRENT_CRC_VALUE
SACL CURRENT_CRC_VALUE
JCYCLE:
LACL CURRENT_CRC_VALUE
AND #01H
SUB #01H
BCND ANOTHER,NEQ
NOP
NOP
LACL CURRENT_CRC_VALUE
SFR
XOR POLYNOMIAL
SACL CURRENT_CRC_VALUE
B NEXT
ANOTHER:
LACL CURRENT_CRC_VALUE
SFR
SACL CURRENT_CRC_VALUE
NOP
NEXT:LACL J
ADD #01H
SACL J
SUB #08H
BCND JOUT,EQ
NOP
NOP
B JCYCLE
JOUT:SPLK #0,J
LACL I
ADD #01H
SACL I
SUB NUMBER_OF_BYTES
BCND IOUT,EQ
NOP
NOP
B ICYCLE
IOUT: NOP
LACL #0FFFFH
SUB CURRENT_CRC_VALUE
SACL CURRENT_CRC_VALUE
RET
;***********************************************************
**************接收射频卡的返回信号*************************
JUDGE_LEVEL:
NOP
KICK_DOG
LAR AR4,#H0
MAR *,AR4
RPT #10
BLPD #H_TBL,*+ ;initialize h0,h1,...,h10,done
LAR AR4,#10
LAR AR6,#X10
MAR *,AR6
GO: SPLK #0,*+,AR4
BANZ GO,AR6 ;zero x0,x1,...,x10
NOP
NOP
LDP #5
SPLK #0,RXD_BYTES
SPLK #0,STAGE
SPLK #0,ADTEMP3
SPLK #1,ADTEMP2
SPLK #1,ADTEMP1
SPLK #0,ADNUMBER
LAR AR6,#08A00H ;AR6中为某一电平的采样个数的存放地址
LAR AR3,#8800H ;FIR滤波后的数据
************采样**********************
FSAMPLE:
LDP #DP_PF2
SPLK #0030H,ADCCTRL1
SPLK #6000H,ADCCTRL2
SPLK #0CH,CHSELSEQ1
SPLK #0,MAXCONV
CLRC SXM
LDP #5
LACL ADTEMP2
SACL ADTEMP1
LACL ADTEMP3
ADD #01H
SACL ADTEMP3
LACL ADNUMBER
ADD #01H
SACL ADNUMBER
LACL ADTEMP3
SUB #0110H
BCND BEG_JIEMA,GT
**************
NOP
NOP
LDP #DP_PF2
LACL RESULT0 ;装载转换结果(10bit,RESULT0.0-5为保留位)到ACC
RPT #5
SFR
LDP #5
SACL ADCURRENT
**************** FIR滤波程序****************************
FIR: LACL ADCURRENT ;read new data of x(n) from DM
LDP #0
sacl X10 ;renew data from lower addr
lacl #0
lt X0
mpy H10
ltd X1
mpy H9
ltd X2
mpy H8
ltd X3
mpy H7
ltd X4
mpy H6
ltd X5
mpy H5
ltd X6
mpy H4
ltd X7
mpy H3
ltd X8
mpy H2
ltd X9
mpy H1
ltd X10
mpy H0
apac ;fir computed
SACH FILTED_DATA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
****************计算高低电平的判决门限********
LDP #5
LACL ADNUMBER
SUB NUM_PRESAM
BCND JUDGE_HL,GT ;采样点数多于100H时,可以进行高低电平的判决
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?