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

📄 evm_qep.asm

📁 Texas-Instrument C2000 Series DSP example programs
💻 ASM
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Beta Version 6.63       
*******************************************************
;	C:\DSP\2XX\DSPTOOLS\CGT\6.63B\dspac.exe -v2xx -i..\include ..\source\evm_qep.c C:\WINDOWS\TEMP\evm_qep.if 
;	C:\DSP\2XX\DSPTOOLS\CGT\6.63B\dspopt.exe -v2xx -s -O2 C:\WINDOWS\TEMP\evm_qep.if C:\WINDOWS\TEMP\evm_qep.opt 
;	C:\DSP\2XX\DSPTOOLS\CGT\6.63B\dspcg.exe -v2xx -o -n -o -n -o C:\WINDOWS\TEMP\evm_qep.opt C:\WINDOWS\TEMP\evm_qep.asm C:\WINDOWS\TEMP\evm_qep.tmp 
	.port
	.file	"..\source\evm_qep.c"
	.file	"..\include\evm_qep.h"
	.globl	_qep_rollover
	.globl	_qep_diff
	.globl	_QEP_GetIncr
	.globl	_QEP_Init
	.file	"..\source\evm_qep.c"
   .sect   "evm_qep"     
	.bss	_qep_rollover,1	
	.bss	_qep_diff,1	
	.bss	_qep_temp,1	
	.text

	.sym	_QEP_Init,_QEP_Init,32,2,0
	.globl	_QEP_Init

	.func	46
;>>>> 	void QEP_Init(unsigned zero_position, unsigned rollover)
******************************************************
* FUNCTION DEF : _QEP_Init
******************************************************
_QEP_Init:

LF1	.set	1

	SAR	AR0,*+
	SAR	AR1,*
	LAR	AR0,*+,AR3

	.sym	_zero_position,-3+LF1,14,9,16
	.sym	_rollover,-4+LF1,14,9,16
	.line	2
*** 48	-----------------------    *(unsigned*)0x7092 |= 0x30u;
	.line	3
;>>>> 	   OCRB |= 0x30;        /* enable qep1/2 mux'd inputs */
	LARK	AR3,28818
	LACK	48
	OR	* 
	SACL	* ,AR4
*** 50	-----------------------    *(unsigned*)0x7408 = 0xd83au;
	.line	5
;>>>> 	   T2CON = 0xD83A;      /* enable qep circuit using timer2 */
	LARK	AR4,29704
	SPLK	#55354,* 
*** 56	-----------------------    *(unsigned*)0x7408 |= 0x40u;
	.line	11
;>>>> 	   T2CON |= 0x0040;     /* enable timer 2 */
	LACK	64
	OR	* 
	SACL	* 
*** 58	-----------------------    *(unsigned*)0x7420 &= 0x1d0fu;
	.line	13
;>>>> 	   CAPCON &= 0x1D0F;
	ADRK	24
	LACK	7439
	AND	* 
	SACL	* 
*** 59	-----------------------    *(unsigned*)0x7420 |= 0xe000u;
	.line	14
;>>>> 	   CAPCON |= 0xE000;    /* enable qep decoder circuit */ 
	LACK	57344
	OR	* 
	SACL	* ,AR2
*** 62	-----------------------    *(unsigned*)0x7405 = zero_position;
	.line	17
;>>>> 	   T2CNT = zero_position;
	LARK	AR2,-3+LF1
	MAR	*0+
	LAC	* ,AR4
	SBRK	27
	SACL	* ,AR2
*** 63	-----------------------    qep_rollover = rollover;
	.line	18
;>>>> 	   qep_rollover = rollover;  
	MAR	*-
	BLDD	* ,#_qep_rollover
*** 64	-----------------------    qep_diff = 0;
	.line	19
;>>>> 	   qep_diff = 0;
	LACK	0
	LDPK	_qep_diff
	SACL	_qep_diff
***  	-----------------------    return;
EPI0_1:
	.line	20
	MAR	* ,AR1
	SBRK	2
	LAR	AR0,* 
	RET

	.endfunc	65,000000000H,1
           .text                                           
           .def    _qep_rollover                           
           .def    _qep_diff                               
           .def    _qep_temp                               
           .def    _QEP_GetIncr                            
T2CNT      .set    7405h                                   
_QEP_GetIncr:                                              
        ;read timer 2 counter                              
        ;--------------------                              
           ldp     #T2CNT/128                              
           lacc    T2CNT                                   
           ldp     #_qep_temp                              
           sacl    _qep_temp   ;save temporarely 		
                                                           
        ;modulo calculation                                
        ;------------------                                
check:      lacc    _qep_temp,16                           
            sub     _qep_diff,16                           
            bcnd    Nega,lt         ; ACC negative         
            sub     _qep_rollover,16                       
            bcnd    OK, lt          ; ACC is OK            
            lacc    _qep_diff,16                           
            add     _qep_rollover,16                       
            sach    _qep_diff                              
            b       check;                                 
                                                           
Nega:       lacc    _qep_diff,16                           
            sub     _qep_rollover,16                       
            sach    _qep_diff                              
            b       check                                  
                                                           
OK:         add     _qep_rollover,16                       
                                                           
EPI:        sach    _qep_temp                              
            lacc    _qep_temp    ;ACC = Return Value       
            ret                                            
	.end

⌨️ 快捷键说明

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