x9c503a.asm

来自「dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,f」· 汇编 代码 · 共 844 行

ASM
844
字号
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00       
*******************************************************
;	C:\tic2xx\c2000\cgtools\bin\dspac.exe -v2xx x9c503a.c C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\x9c503a.if 
;	dspopt NOT RUN
;	C:\tic2xx\c2000\cgtools\bin\dspcg.exe -o -v2xx -o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\x9c503a.if C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\x9c503a.asm C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\x9c503a.tmp 
	.port
	.file	"x9c503a.c"
	.file	"f2407regs_c.h"
	.globl	_IMR
	.globl	_GREG
	.globl	_IFR
	.globl	_IMRADDR
	.globl	_PIRQR0
	.globl	_PIRQR1
	.globl	_PIRQR2
	.globl	_PIACKR0
	.globl	_PIACKR1
	.globl	_PIACKR2
	.globl	_SCSR1
	.globl	_SCSR2
	.globl	_DINR
	.globl	_PIVR
	.globl	_WDCNTR
	.globl	_WDKEY
	.globl	_WDCR
	.globl	_SPICCR
	.globl	_SPICTL
	.globl	_SPISTS
	.globl	_SPIBRR
	.globl	_SPIEMU
	.globl	_SPIRXBUF
	.globl	_SPITXBUF
	.globl	_SPIDAT
	.globl	_SPIPRI
	.globl	_SCICCR
	.globl	_SCICTL1
	.globl	_SCIHBAUD
	.globl	_SCILBAUD
	.globl	_SCICTL2
	.globl	_SCIRXST
	.globl	_SCIRXEMU
	.globl	_SCIRXBUF
	.globl	_SCITXBUF
	.globl	_SCIPRI
	.globl	_XINT1CR
	.globl	_XINT2CR
	.globl	_PADATDIR
	.globl	_PBDATDIR
	.globl	_PCDATDIR
	.globl	_PDDATDIR
	.globl	_PEDATDIR
	.globl	_PFDATDIR
	.globl	_MCRA
	.globl	_MCRB
	.globl	_MCRC
	.globl	_ADCCTRL1
	.globl	_ADCCTRL2
	.globl	_MAXCONV
	.globl	_CHSELSEQ1
	.globl	_CHSELSEQ2
	.globl	_CHSELSEQ3
	.globl	_CHSELSEQ4
	.globl	_AUTOSEQSR
	.globl	_RESULT0
	.globl	_RESULT1
	.globl	_RESULT2
	.globl	_RESULT3
	.globl	_RESULT4
	.globl	_RESULT5
	.globl	_RESULT6
	.globl	_RESULT7
	.globl	_RESULT8
	.globl	_RESULT9
	.globl	_RESULT10
	.globl	_RESULT11
	.globl	_RESULT12
	.globl	_RESULT13
	.globl	_RESULT14
	.globl	_RESULT15
	.globl	_CALIBRATION
	.globl	_MDER
	.globl	_TCR
	.globl	_RCR
	.globl	_MCR
	.globl	_BCR2
	.globl	_BCR1
	.globl	_ESR
	.globl	_GSR
	.globl	_CEC
	.globl	_CANIFR
	.globl	_CANIMR
	.globl	_LAM0H
	.globl	_LAM0L
	.globl	_LAM1H
	.globl	_LAM1L
	.globl	_MSGID0L
	.globl	_MSGID0H
	.globl	_MSGCTRL0
	.globl	_MBX0A
	.globl	_MBX0B
	.globl	_MBX0C
	.globl	_MBX0D
	.globl	_MSGID1L
	.globl	_MSGID1H
	.globl	_MSGCTRL1
	.globl	_MBX1A
	.globl	_MBX1B
	.globl	_MBX1C
	.globl	_MBX1D
	.globl	_MSGID2L
	.globl	_MSGID2H
	.globl	_MSGCTRL2
	.globl	_MBX2A
	.globl	_MBX2B
	.globl	_MBX2C
	.globl	_MBX2D
	.globl	_MSGID3L
	.globl	_MSGID3H
	.globl	_MSGCTRL3
	.globl	_MBX3A
	.globl	_MBX3B
	.globl	_MBX3C
	.globl	_MBX3D
	.globl	_MSGID4L
	.globl	_MSGID4H
	.globl	_MSGCTRL4
	.globl	_MBX4A
	.globl	_MBX4B
	.globl	_MBX4C
	.globl	_MBX4D
	.globl	_MSGID5L
	.globl	_MSGID5H
	.globl	_MSGCTRL5
	.globl	_MBX5A
	.globl	_MBX5B
	.globl	_MBX5C
	.globl	_MBX5D
	.globl	_GPTCONA
	.globl	_T1CNT
	.globl	_T1CMPR
	.globl	_T1PR
	.globl	_T1CON
	.globl	_T2CNT
	.globl	_T2CMPR
	.globl	_T2PR
	.globl	_T2CON
	.globl	_COMCONA
	.globl	_ACTRA
	.globl	_DBTCONA
	.globl	_CMPR1
	.globl	_CMPR2
	.globl	_CMPR3
	.globl	_CAPCONA
	.globl	_CAPFIFOA
	.globl	_CAP1FIFO
	.globl	_CAP2FIFO
	.globl	_CAP3FIFO
	.globl	_CAP1FBOT
	.globl	_CAP2FBOT
	.globl	_CAP3FBOT
	.globl	_EVAIMRA
	.globl	_EVAIMRB
	.globl	_EVAIMRC
	.globl	_EVAIFRA
	.globl	_EVAIFRB
	.globl	_EVAIFRC
	.globl	_GPTCONB
	.globl	_T3CNT
	.globl	_T3CMPR
	.globl	_T3PR
	.globl	_T3CON
	.globl	_T4CNT
	.globl	_T4CMPR
	.globl	_T4PR
	.globl	_T4CON
	.globl	_COMCONB
	.globl	_ACTRB
	.globl	_DBTCONB
	.globl	_CMPR4
	.globl	_CMPR5
	.globl	_CMPR6
	.globl	_CAPCONB
	.globl	_CAPFIFOB
	.globl	_CAP4FIFO
	.globl	_CAP5FIFO
	.globl	_CAP6FIFO
	.globl	_CAP4FBOT
	.globl	_CAP5FBOT
	.globl	_CAP6FBOT
	.globl	_EVBIMRA
	.globl	_EVBIMRB
	.globl	_EVBIMRC
	.globl	_EVBIFRA
	.globl	_EVBIFRB
	.globl	_EVBIFRC
	.globl	_WSGR
	.file	"x9c503a.c"
	.globl	_delayX9c503
	.globl	_setX9c503ToLowest
	.globl	_adjustX9c503
	.globl	_judgePower
	.text

	.sym	_delayX9c503,_delayX9c503,32,2,0
	.globl	_delayX9c503

	.func	22
;>>>> 	void delayX9c503(uchar n)
******************************************************
* FUNCTION DEF : _delayX9c503
******************************************************
_delayX9c503:

LF1	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR2

	.sym	_n,-3+LF1,12,9,16
	.sym	_i,1,14,1,16
	.line	2
;>>>> 		uint i;
	.line	4
;>>>> 		for(i=0;i<n;i++)
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SBRK	4-LF1
	SUBS	* 
	BGEZ	L2
	ADRK	4-LF1
L1:
	.line	6
;>>>> 			i=i;
	LAC	* 
	SACL	* 
	.line	4
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	4-LF1
	SUBS	* 
	ADRK	4-LF1
	BLZ	L1
L2:
EPI0_1:
	.line	8
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	29,000000000H,2

	.sym	_setX9c503ToLowest,_setX9c503ToLowest,32,2,0
	.globl	_setX9c503ToLowest

	.func	34
;>>>> 	void setX9c503ToLowest()
;>>>> 		uint i;	 
******************************************************
* FUNCTION DEF : _setX9c503ToLowest
******************************************************
_setX9c503ToLowest:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+,AR2

	.sym	_i,1,14,1,16
	.sym	_n,2,14,1,16
	.line	4
;>>>> 		uint n = 200;
	LACK	200
	LARK	AR2,2
	MAR	*0+
	SACL	*-
	.line	6
;>>>> 		dpm_cs_0;	// cs=0,open x9c503
	LACK	65279
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	256
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	65534
	AND	_PFDATDIR
	SACL	_PFDATDIR
	.line	7
;>>>> 	    for(i=0;i<n;i++)
	LACK	0
	SACL	* 
	ZALS	*+
	SUBS	* 
	BGEZ	L4
	MAR	* ,AR1
L3:
	.line	9
;>>>> 	    	dpm_Vw_0;	
	LACK	65527
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	2048
	LDPK	_PADATDIR
	OR	_PADATDIR
	SACL	_PADATDIR
	LACK	65527
	AND	_PADATDIR
	SACL	_PADATDIR
	.line	10
;>>>> 		    dpm_inc_1;	// inc = 1
	LACK	65534
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	257
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	.line	11
;>>>> 		    dpm_ud_0;	        
	LACK	65407
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LALK	1,15
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	LACK	65407
	AND	_PEDATDIR
	SACL	_PEDATDIR
	.line	12
;>>>> 		    delayX9c503(10);
	LACK	10
	SACL	*+
	CALL	_delayX9c503
	MAR	*-
	.line	13
;>>>> 		    dpm_inc_0;	// inc = 0
	LACK	65534
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	257
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	LACK	65534
	AND	_PEDATDIR
	SACL	_PEDATDIR
	.line	14
;>>>> 		    delayX9c503(50);
	LACK	50
	SACL	*+
	CALL	_delayX9c503
	MAR	*-,AR2
	.line	7
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*+
	SUBS	* ,AR1
	BLZ	L3
L4:
	.line	16
;>>>> 		dpm_cs_1;	//cs=1,close x9c503 	 
	LACK	65279
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	257
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
EPI0_2:
	.line	17
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	50,000000000H,3

	.sym	_adjustX9c503,_adjustX9c503,32,2,0
	.globl	_adjustX9c503

	.func	56
;>>>> 	void adjustX9c503(uchar dir,uint n)
******************************************************
* FUNCTION DEF : _adjustX9c503
******************************************************
_adjustX9c503:

LF3	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR2

	.sym	_dir,-3+LF3,12,9,16
	.sym	_n,-4+LF3,14,9,16
	.sym	_i,1,14,1,16
	.line	2
;>>>> 		uint i;	
	.line	5
;>>>> 		dpm_cs_0; 
	LACK	65279
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	256
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	65534
	AND	_PFDATDIR
	SACL	_PFDATDIR
	.line	6
;>>>> 		if(dir)
	LARK	AR2,-3+LF3
	MAR	*0+
	LAC	* 
	BZ	L5
	.line	8
;>>>> 	    	dpm_ud_1;	//u/d=0,increase
	LACK	65407
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	32896
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	.line	9
;>>>> 		    for(i=0;i<n;i++)
	LACK	0
	ADRK	4-LF3
	SACL	* 
	ZALS	* 
	SBRK	5-LF3
	SUBS	* 
	BGEZ	L8
	MAR	* ,AR1
L6:
	.line	11
;>>>> 				dpm_inc_1;	// inc = 1	        
	LACK	65534
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	257
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	.line	12
;>>>> 			    delayX9c503(10);
	LACK	10
	SACL	*+
	CALL	_delayX9c503
	MAR	*-
	.line	13
;>>>> 			    dpm_inc_0;	// inc = 0
	LACK	65534
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	257
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	LACK	65534
	AND	_PEDATDIR
	SACL	_PEDATDIR
	.line	14
;>>>> 			    delayX9c503(50);
;>>>> 		else
	LACK	50
	SACL	*+
	CALL	_delayX9c503
	MAR	*-,AR2
	.line	9
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	5-LF3
	SUBS	* ,AR1
	BLZ	L6
	B	L8
L5:
	.line	19
;>>>> 			dpm_ud_0;	//u/d=0,decrease
	LACK	65407
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LALK	1,15
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	LACK	65407
	AND	_PEDATDIR
	SACL	_PEDATDIR
	.line	20
;>>>> 		    for(i=0;i<n;i++)
	LACK	0
	ADRK	4-LF3
	SACL	* 
	ZALS	* 
	SBRK	5-LF3
	SUBS	* 
	BGEZ	L8
	MAR	* ,AR1
L9:
	.line	22
;>>>> 				dpm_inc_1;	// inc = 1	        
	LACK	65534
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	257
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	.line	23
;>>>> 			    delayX9c503(10);
	LACK	10
	SACL	*+
	CALL	_delayX9c503
	MAR	*-
	.line	24
;>>>> 			    dpm_inc_0;	// inc = 0
	LACK	65534
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	257
	LDPK	_PEDATDIR
	OR	_PEDATDIR
	SACL	_PEDATDIR
	LACK	65534
	AND	_PEDATDIR
	SACL	_PEDATDIR
	.line	25
;>>>> 			    delayX9c503(50);
	LACK	50
	SACL	*+
	CALL	_delayX9c503
	MAR	*-,AR2
	.line	20
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	5-LF3
	SUBS	* ,AR1
	BLZ	L9
L8:
	.line	28
;>>>> 		dpm_cs_1;	//cs=1,close x9c503	
	LACK	65279
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	257
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
EPI0_3:
	.line	29
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	84,000000000H,2

	.sym	_judgePower,_judgePower,32,2,0
	.globl	_judgePower

	.func	85
;>>>> 	void judgePower()
******************************************************
* FUNCTION DEF : _judgePower
******************************************************
_judgePower:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,10
	LAR	AR0,*0+,AR2

	.sym	_i,1,14,1,16
	.sym	_j,2,14,1,16
	.sym	_data,3,14,1,16
	.sym	_flag,4,14,1,16
	.sym	_result,5,62,1,80,,5
	.line	3
;>>>> 		uint i,j,data = 0;
	LACK	0
	LARK	AR2,3
	MAR	*0+
	SACL	*+
	.line	4
;>>>> 		uint flag = 0;
;>>>> 		uint result[5];
	SACL	* 
	.line	7
;>>>> 		for(j=0;j<2;j++)
	SBRK	2
	SACL	* 
	ZALS	* 
	SUBK	2
	BGEZ	L12
	MAR	*+
	RSXM ;;;
L11:
	.line	9
;>>>> 			ADCCTRL1 = 0x0030;
	LACK	48
	LDPK	_ADCCTRL1
	SACL	_ADCCTRL1
	.line	10
;>>>> 			asm(" nop");
 nop
	.line	11
;>>>> 			ADCCTRL2 = 0x6000;
	LACK	24576
	LDPK	_ADCCTRL2
	SACL	_ADCCTRL2
	.line	12
;>>>> 			CHSELSEQ1 = 0x0C;				
	LACK	12
	LDPK	_CHSELSEQ1
	SACL	_CHSELSEQ1
	.line	13
;>>>> 			MAXCONV = 0x00;			
	LACK	0
	LDPK	_MAXCONV
	SACL	_MAXCONV
	.line	14
;>>>> 			asm(" CLRC     SXM");		
 CLRC     SXM
	.line	16
;>>>> 			data = RESULT0;	
	BLKD	#_RESULT0,* 
	.line	17
;>>>> 			data = data >> 6;
	LAC	* ,9
	SACH	*-,1
	.line	18
;>>>> 			result[j] = data;
;>>>> 		}	//清除开机产生的误差数据
	LAR	AR3,*+,AR3
	MAR	*0+,AR2
	LAC	* ,AR3
	ADRK	5
	SACL	* ,AR2
	.line	7
	MAR	*-
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*+
	SUBK	2
	BLZ	L11
L12:
	.line	21
;>>>> 		for(j=0;j<5;j++)
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	5
	BGEZ	L14
	MAR	*+
	RSXM ;;;
L13:
	.line	23
;>>>> 			ADCCTRL1 = 0x0030;
	LACK	48
	LDPK	_ADCCTRL1
	SACL	_ADCCTRL1
	.line	24
;>>>> 			asm(" nop");
 nop
	.line	25
;>>>> 			ADCCTRL2 = 0x6000;
	LACK	24576
	LDPK	_ADCCTRL2
	SACL	_ADCCTRL2
	.line	26
;>>>> 			CHSELSEQ1 = 0x04;				
	LACK	4
	LDPK	_CHSELSEQ1
	SACL	_CHSELSEQ1
	.line	27
;>>>> 			MAXCONV = 0x00;			
	LACK	0
	LDPK	_MAXCONV
	SACL	_MAXCONV
	.line	28
;>>>> 			asm(" CLRC     SXM");		
 CLRC     SXM
	.line	30
;>>>> 			data = RESULT0;	
	BLKD	#_RESULT0,* 
	.line	31
;>>>> 			data = data >> 6;
	LAC	* ,9
	SACH	*-,1
	.line	32
;>>>> 			result[j] = data;
	LAR	AR3,*+,AR3
	MAR	*0+,AR2
	LAC	* ,AR3
	ADRK	5
	SACL	* ,AR2
	.line	21
	MAR	*-
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*+
	SUBK	5
	BLZ	L13
L14:
	.line	34
;>>>> 		data = (result[0]+result[1]+result[2]+result[3]+result[4])/5;
	MAR	* ,AR1
	LACK	5
	SACL	*+,AR2
	LARK	AR2,6
	MAR	*0+
	ZALS	*-
	ADDS	* ,AR1
	SACL	* 
	ZALS	* ,AR2
	ADRK	2
	ADDS	*+,AR1
	SACL	* 
	ZALS	* ,AR2
	ADDS	*+,AR1
	SACL	* 
	ZALS	* ,AR2
	ADDS	* ,AR1
	ANDK	0FFFFh
	CALL	I$$UDIV
	MAR	* ,AR2
	SBRK	6
	SACL	* 
	.line	35
;>>>> 		if( (data>=0x2f8) && (data<=0x210) )
;>>>> 			while(1)
	ZALS	* 
	SUBK	760
	BLZ	L15
	ZALS	* 
	SUBK	528
	BGZ	L15
	MAR	* ,AR1
L16:
	.line	39
;>>>> 				feedWatchDog();
	CALL	_feedWatchDog,AR1
	.line	40
;>>>> 				Delay_100_Milli_Seconds();	//100ms		
	CALL	_Delay_100_Milli_Seconds
	.line	41
;>>>> 				if(flag==0){LedOutput2(0);flag=1;}
	MAR	* ,AR2
	LARK	AR2,4
	MAR	*0+
	LAC	* 
	BNZ	L18
	MAR	* ,AR1
	LACK	0
	SACL	*+
	CALL	_LedOutput2
	MAR	*-,AR2
	LACK	1
	LARK	AR2,4
	MAR	*0+
	SACL	* 
	B	L19
L18:
	.line	42
;>>>> 				else{LedOutput2(1);flag=0;}		//报警出错闪烁		
	MAR	* ,AR1
	LACK	1
	SACL	*+
	CALL	_LedOutput2
	MAR	*-,AR2
	LACK	0
	LARK	AR2,4
	MAR	*0+
	SACL	* 
L19:
	.line	43
	MAR	* ,AR1
	B	L16
L15:
EPI0_4:
	.line	45
	MAR	* ,AR1
	SBRK	11
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	129,000000000H,10
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	I$$UDIV
	.global	_feedWatchDog
	.global	_Delay_100_Milli_Seconds
	.global	_LedOutput2
	.end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?