⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitor.asm

📁 Texas-Instrument C2000 Series DSP example programs
💻 ASM
📖 第 1 页 / 共 2 页
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Beta Version 6.63       
*******************************************************
;	C:\DSP\2XX\DSPTOOLS\CGT\6.63B\dspac.exe -v2xx -iencoder\include -irs232\include monitor.c C:\WINDOWS\TEMP\monitor.if 
;	C:\DSP\2XX\DSPTOOLS\CGT\6.63B\dspopt.exe -v2xx -s -O2 -Z C:\WINDOWS\TEMP\monitor.if C:\WINDOWS\TEMP\monitor.opt 
;	C:\DSP\2XX\DSPTOOLS\CGT\6.63B\dspcg.exe -v2xx -o -s -o -n -o C:\WINDOWS\TEMP\monitor.opt C:\WINDOWS\TEMP\monitor.asm C:\WINDOWS\TEMP\monitor.tmp 
	.port
	.bss	_qep_sample$1,1,1
	.file	"monitor.c"
	.file	"c:\dsp\2xx\dsptools\cgt\6.63b\stdlib.h"
	.sym	_size_t,0,14,13,16
	.sym	_wchar_t,0,4,13,16
	.globl	_atoi
	.globl	_atol
	.globl	_atof
	.globl	_strtod
	.globl	_strtol
	.globl	_strtoul

	.stag	__div_t,32
	.member	_quot,0,4,8,16
	.member	_rem,16,4,8,16
	.eos
	.sym	_div_t,0,8,13,32,__div_t

	.stag	__ldiv_t,64
	.member	_quot,0,5,8,32
	.member	_rem,32,5,8,32
	.eos
	.sym	_ldiv_t,0,8,13,64,__ldiv_t
	.globl	_div
	.globl	_ldiv
	.globl	_rand
	.globl	_srand
	.globl	_calloc
	.globl	_free
	.globl	_malloc
	.globl	_minit
	.globl	_realloc
	.globl	_abort
	.globl	_exit
	.globl	_atexit
	.globl	_abs
	.globl	_labs
	.globl	_qsort
	.globl	_bsearch
	.globl	_getenv
	.globl	_ti_sprintf
	.file	"c:\dsp\2xx\dsptools\cgt\6.63b\math.h"
	.globl	_asin
	.globl	_acos
	.globl	_atan
	.globl	_atan2
	.globl	_ceil
	.globl	_cos
	.globl	_cosh
	.globl	_exp
	.globl	_fabs
	.globl	_floor
	.globl	_fmod
	.globl	_frexp
	.globl	_ldexp
	.globl	_log
	.globl	_log10
	.globl	_modf
	.globl	_pow
	.globl	_sin
	.globl	_sinh
	.globl	_sqrt
	.globl	_tan
	.globl	_tanh
	.file	"rs232\include\conio.h"
	.globl	_getch
	.globl	_putch
	.globl	_clrscr
	.globl	_sendstr_PMEM
	.globl	_sendstr_DMEM
	.globl	_getline
	.globl	_getlong
	.globl	_atol_F240
	.globl	_read_PMEM
	.file	"rs232\include\sci.h"
	.globl	_SCI_Init
	.globl	_kbhit
	.globl	_SCI_Getc
	.globl	_SCI_Sendc
	.globl	_SCI_Rdy_to_Send
	.file	"encoder\include\evm_qep.h"
	.globl	_qep_rollover
	.globl	_qep_diff
	.globl	_QEP_GetIncr
	.globl	_QEP_Init
	.file	"encoder\include\encoder.h"
QEP_ROLLOVER  .set 8192 
	.globl	_encoder_position
	.globl	_Encoder_Init
	.globl	_Encoder_ZeroPosition
	.globl	_Encoder_MatchIncrPhase
	.globl	_Encoder_CalcPhase
	.globl	_Encoder_SamplePosition
	.globl	_Encoder_CalcPosition
	.file	"monitor.h"
	.globl	_monitor
	.globl	_Encoder_MSG
	.file	"monitor.c"
	.text

	.sym	_monitor,_monitor,32,2,0
	.globl	_monitor

	.func	49
;>>>> 	void monitor(void)
;>>>> 	   char c;
******************************************************
* FUNCTION DEF : _monitor
******************************************************
_monitor:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,41
	LAR	AR0,*0+
;	<save register vars>
	SAR	AR6,*+
	SAR	AR7,*+,AR7
	LARK	AR7,1
	MAR	*0+,AR2


	.sym	_qep_sample,_qep_sample$1,14,3,16
*
* AR5	assigned to variable  c
* AR5	assigned to variable  i
* AR6	assigned to temp var  L$1
* AR6	assigned to temp var  L$2
* AR6	assigned to temp var  L$3
* AR6	assigned to temp var  L$4
* AR6	assigned to temp var  L$5
* AR6	assigned to temp var  L$6
*  ---  c shares AUTO storage with Y$3
*
*** 52	-----------------------    b[0] = 0;
	.sym	Y$1,1,14,1,16
	.sym	Y$2,2,4,1,16
	.sym	_c,3,4,1,16
	.sym	_b,4,52,1,160,,10
	.sym	_str,14,52,1,320,,20
	.sym	_val,34,52,1,48,,3
	.sym	_angle,37,15,1,32
	.sym	_fbuffer,39,6,1,32
	.line	4
;>>>> 	   char b[10]="";
;>>>> 	   char str[20];               /* general purpose buffer */
;>>>> 	   int i;                      /* general purpose counter */
;>>>> 	   int val[3];
;>>>> 	   static unsigned qep_sample;
;>>>> 	   volatile unsigned long  angle;
;>>>> 	   volatile float fbuffer;
	LACK	0
	LARK	AR2,4
	MAR	*0+
	SACL	* ,AR1
*** 63	-----------------------    SCI_Init(130u);
	.line	15
;>>>> 	   SCI_Init(((SYSCLK*10)/8/BAUDRATE+5)/10);
;>>>> 	   for (;;)
;>>>> 	      clrscr(); 
;>>>> 	      sendstr_PMEM(header);
;>>>> 	      sendstr_PMEM("\rMain Menu\r");
;>>>> 	      sendstr_PMEM("\r\t1) Encoder Initialization");
;>>>> 	      sendstr_PMEM("\r\t2) ADC1,2 & QEP Test");
;>>>> 	      sendstr_PMEM("\r\t3) Print Encoder Increment & Phase");
;>>>> 	      sendstr_PMEM("\r\t4) Print Position (1/1000 Degrees)");
;>>>> 	      sendstr_PMEM("\r\r Press '1'..'4'. Please make your choice. \r");
;>>>> 	      for (c = 0; c<'1' || c>'6';c = SCI_Getc());
;>>>> 	      switch (c)
;>>>> 	         case '1': /*------------------------*/
;>>>> 	                   Encoder_Init(QEP_ROLLOVER);
;>>>> 	                   sendstr_PMEM("\r\r");                 
;>>>> 	                   sendstr_PMEM(" +--------------------+\r");
;>>>> 	                   sendstr_PMEM(" | Encoder setup done |\r");          /* Screen Output */
;>>>> 	                   sendstr_PMEM(" +--------------------+\r");
;>>>> 	                   sendstr_PMEM(" >> Press any key to confirm\r");
;>>>> 	                   for (c=0; c==0; c = (kbhit() ? getch() : 0) );
;>>>> 	                   break; 
;>>>> 	         case '2': /*----------------*/
;>>>> 	                   clrscr();
;>>>> 	                   sendstr_PMEM("\rInput from ADC1, ADC2, QEP: 000000 000000 000000");
;>>>> 	                   do
;>>>> 	                      sendstr_PMEM("\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
;>>>> 	                      sendstr_PMEM("\b\b\b\b\b\b\b");
;>>>> 	                      ADC_START(5,13);
;>>>> 	                      ADC_READ2(val[0],val[1]);
;>>>> 	                      val[0] = (val[0] - ENC_U0_OFFSET) << 1;
;>>>> 	                      val[1] = (val[1] - ENC_U90_OFFSET)<< 1;
;>>>> 	                      #ifndef QEP_POWER2
;>>>> 	                         val[2] = QEP_GetIncr();
;>>>> 	                      #else
;>>>> 	                         val[2] = (T2CNT - qep_diff) & (QEP_ROLLOVER-1);
;>>>> 	                      #endif
;>>>> 	                      ltoa ((long)val[0], str);
;>>>> 	                      for (i=strlen(str); i<7; i++)
;>>>> 	                         sendstr_PMEM(" ");
;>>>> 	                      sendstr_DMEM(str);
;>>>> 	                     ltoa ((long)val[1], str);
;>>>> 	                     for (i=strlen(str); i<7; i++)
;>>>> 	                        sendstr_PMEM(" ");
;>>>> 	                     sendstr_DMEM(str);
;>>>> 	                     ltoa ((unsigned long)val[2], str);
;>>>> 	                     for (i=strlen(str); i<7; i++)
;>>>> 	                        sendstr_PMEM(" ");
;>>>> 	                     sendstr_DMEM(str);
;>>>> 	                  } while( SCI_Getc() == -1 );
;>>>> 	                  break;
;>>>> 	         case '3': /*----------------------------------*/
;>>>> 	                   clrscr();
;>>>> 	                   sendstr_PMEM("\rSIN/COS Q-Encoder, Increments, Phase: 000000 000000");
;>>>> 	                   do
;>>>> 	                      sendstr_PMEM("\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
;>>>> 	                      qep_sample = Encoder_SamplePosition();
;>>>> 	                      Encoder_CalcPosition(qep_sample);
;>>>> 	                      ltoa ((unsigned long) encoder_position[1], str);
;>>>> 	                      for (i=strlen(str); i<7; i++)
;>>>> 	                         sendstr_PMEM(" ");
;>>>> 	                     sendstr_DMEM(str);
;>>>> 	                      ltoa ((unsigned long) encoder_position[0], str);
;>>>> 	                      for (i=strlen(str); i<7; i++)
;>>>> 	                         sendstr_PMEM(" ");
;>>>> 	                     sendstr_DMEM(str);
;>>>> 	                  } while( SCI_Getc() == -1 );
;>>>> 	                  break;
;>>>> 	         case '4': /*----------------*/
	LACK	130
	SACL	*+
	CALL	_SCI_Init
	MAR	*-
*** 63	-----------------------    goto g37;
	B	L37
L1:
***	-----------------------g1:
*** 179	-----------------------    clrscr();
	.line	131
;>>>> 	                   clrscr();
	CALL	_clrscr,AR1
*** 180	-----------------------    sendstr_PMEM("\rAngle (1/1000 * Degrees): 000000000");
	.line	132
;>>>> 	                   sendstr_PMEM("\rAngle (1/1000 * Degrees): 000000000");
;>>>> 	                   do
	LRLK	AR3,SL0
	SAR	AR3,*+
	CALL	_sendstr_PMEM
	MAR	*-
L3:
***	-----------------------g3:
*** 184	-----------------------    sendstr_PMEM("\b\b\b\b\b\b\b\b\b\b");
	.line	136
;>>>> 	                      sendstr_PMEM("\b\b\b\b\b\b\b\b\b\b");
	LRLK	AR3,SL1
	SAR	AR3,*+
	CALL	_sendstr_PMEM
	MAR	*-
*** 189	-----------------------    qep_sample = Y$0 = Encoder_SamplePosition();
	.line	141
;>>>> 	                      qep_sample = Encoder_SamplePosition();
	CALL	_Encoder_SamplePosition
	MAR	* ,AR7
	SACL	* ,AR1
	LDPK	_qep_sample$1
	SACL	_qep_sample$1
*** 190	-----------------------    Encoder_CalcPosition(Y$0);
	.line	142
;>>>> 	                      Encoder_CalcPosition(qep_sample);
	SACL	*+
	CALL	_Encoder_CalcPosition
	MAR	*-,AR2
*** 195	-----------------------    angle = (long)encoder_position[1]<<16;
	.line	147
;>>>> 	                      angle = ((long) encoder_position[1]) << 16;
	LDPK	_encoder_position+1
	ZALH	_encoder_position+1
	LARK	AR2,37
	MAR	*0+
	SACL	*+
	SACH	*-
*** 196	-----------------------    angle += encoder_position[0];
	.line	148
;>>>> 	                      angle += (long) encoder_position[0]; 
	LDPK	_encoder_position
	ZALS	_encoder_position
	ADDS	*+
	ADDH	*-
	SACL	*+
	SACH	*-,AR1
*** 197	-----------------------    fbuffer = (float)angle*7.45058059692383e-9F;
	.line	149
;>>>> 	                      fbuffer = ((double) angle)/(2048 * 0x10000);
	LALK	FL0
	RPTK	1
	TBLR	*+
	MAR	* ,AR2
	ZALS	*+
	ADDH	*+,AR1
	CALL	F$$ULTOF
	CALL	F$$MUL
	MAR	*-
	ZALH	*-
	ADDS	* ,AR2
	SACL	*+
	SACH	*-,AR1
*** 198	-----------------------    fbuffer = fbuffer*3.6e5F;
	.line	150
;>>>> 	                      fbuffer = fbuffer * 360000;
	LALK	FL1
	RPTK	1
	TBLR	*+
	MAR	* ,AR2
	LAC	*+,AR1
	SACL	*+,AR2
	LAC	*-,AR1
	SACL	*+
	CALL	F$$MUL
	MAR	*-
	ZALH	*-
	ADDS	* ,AR2
	SACL	*+
	SACH	*-
*** 199	-----------------------    angle = (long)fbuffer;
	.line	151
;>>>> 	                      angle = (long) fbuffer;
	LAC	*+,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+
	CALL	F$$FTOL
	MAR	* ,AR2
	SBRK	3
	SACL	*+
	SACH	*-,AR3
*** 204	-----------------------    ltoa(angle, &str);
	.line	156
;>>>> 	                      ltoa (angle, str);
	LARK	AR3,14
	MAR	*0+,AR1
	SAR	AR3,*+,AR2
	ZALS	*+
	ADDH	* ,AR1
	SACL	*+
	SACH	*+
	CALL	_ltoa
	SBRK	3
*** 205	-----------------------    if ( (i = strlen(&str)) >= 10 ) goto g7;
	.line	157
;>>>> 	                      for (i=strlen(str); i<10; i++)
	MAR	* ,AR3
	LARK	AR3,14
	MAR	*0+,AR1
	SAR	AR3,*+
	CALL	_strlen
	MAR	*-,AR0
	SACL	* 
	LAR	AR5,* 
	SAR	AR5,*
	SSXM
	LAC	* 
	SUBK	10
	BGEZ	L7
***  	-----------------------    L$1 = 9-i;
	SAR	AR5,*
	LACK	9
	SUB	* 
	SACL	* 
	LAR	AR6,* ,AR1
***	-----------------------g6:
***	-----------------------g50:
L50:
*** 206	-----------------------    sendstr_PMEM(" ");
	.line	158
;>>>> 	                         sendstr_PMEM(" ");
	LRLK	AR3,SL2
	SAR	AR3,*+
	CALL	_sendstr_PMEM
	MAR	*-,AR6
*** 205	-----------------------    if ( --L$1 != -1 ) goto g50;
	.line	157
	BANZ	L50,*-,AR1
L7:
***	-----------------------g7:
*** 207	-----------------------    sendstr_DMEM(&str);
	.line	159
;>>>> 	                     sendstr_DMEM(str);
;>>>> 	                  } while( SCI_Getc() == -1 );
	MAR	* ,AR3
	LARK	AR3,14
	MAR	*0+,AR1
	SAR	AR3,*+
	CALL	_sendstr_DMEM
	MAR	*-
*** 210	-----------------------    if ( SCI_Getc() == (-1) ) goto g3;
	.line	162
;>>>> 	                  break;
	CALL	_SCI_Getc
	SSXM
	SUBK	-1
	BZ	L3
*** 210	-----------------------    goto g37;
	B	L37
L8:
***	-----------------------g8:
*** 147	-----------------------    clrscr();
	.line	99
	CALL	_clrscr,AR1
*** 148	-----------------------    sendstr_PMEM("\rSIN/COS Q-Encoder, Increments, Phase: 000000 000000");
	.line	100
	LRLK	AR3,SL3
	SAR	AR3,*+
	CALL	_sendstr_PMEM
	MAR	*-
L10:
***	-----------------------g10:
*** 152	-----------------------    sendstr_PMEM("\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
	.line	104
	LRLK	AR3,SL4
	SAR	AR3,*+
	CALL	_sendstr_PMEM
	MAR	*-
*** 157	-----------------------    qep_sample = Y$1 = Encoder_SamplePosition();
	.line	109
	CALL	_Encoder_SamplePosition
	MAR	* ,AR7
	SACL	* ,AR1
	LDPK	_qep_sample$1
	SACL	_qep_sample$1
*** 158	-----------------------    Encoder_CalcPosition(Y$1);
	.line	110
	SACL	*+
	CALL	_Encoder_CalcPosition
	MAR	*-,AR3
*** 163	-----------------------    ltoa((unsigned long)encoder_position[1], &str);
	.line	115
	LARK	AR3,14
	MAR	*0+,AR1
	SAR	AR3,*+
	LDPK	_encoder_position+1
	ZALS	_encoder_position+1
	SACL	*+
	SACH	*+
	CALL	_ltoa
	SBRK	3
*** 164	-----------------------    if ( (i = strlen(&str)) >= 7 ) goto g14;
	.line	116
	MAR	* ,AR3
	LARK	AR3,14
	MAR	*0+,AR1
	SAR	AR3,*+
	CALL	_strlen
	MAR	*-,AR0
	SACL	* 
	LAR	AR5,* 
	SAR	AR5,*
	SSXM
	LAC	* 
	SUBK	7
	BGEZ	L14
***  	-----------------------    L$2 = 6-i;
	SAR	AR5,*
	LACK	6
	SUB	* 
	SACL	* 
	LAR	AR6,* ,AR1
***	-----------------------g13:
***	-----------------------g49:
L49:
*** 165	-----------------------    sendstr_PMEM(" ");
	.line	117
	LRLK	AR3,SL2
	SAR	AR3,*+
	CALL	_sendstr_PMEM
	MAR	*-,AR6
*** 164	-----------------------    if ( --L$2 != -1 ) goto g49;
	.line	116
	BANZ	L49,*-,AR1
L14:
***	-----------------------g14:
*** 166	-----------------------    sendstr_DMEM(&str);
	.line	118
	MAR	* ,AR3
	LARK	AR3,14
	MAR	*0+,AR1
	SAR	AR3,*+
	CALL	_sendstr_DMEM
	MAR	*-,AR3
*** 168	-----------------------    ltoa((unsigned long)encoder_position[0], &str);
	.line	120
	LARK	AR3,14
	MAR	*0+,AR1
	SAR	AR3,*+
	LDPK	_encoder_position
	ZALS	_encoder_position
	SACL	*+
	SACH	*+
	CALL	_ltoa
	SBRK	3
*** 169	-----------------------    if ( (i = strlen(&str)) >= 7 ) goto g18;
	.line	121
	MAR	* ,AR3
	LARK	AR3,14
	MAR	*0+,AR1
	SAR	AR3,*+
	CALL	_strlen
	MAR	*-,AR0
	SACL	* 
	LAR	AR5,* 
	SAR	AR5,*
	SSXM
	LAC	* 
	SUBK	7
	BGEZ	L18
***  	-----------------------    L$3 = 6-i;
	SAR	AR5,*
	LACK	6

⌨️ 快捷键说明

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