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

📄 main.asm

📁 编码器DSP TMES320LF2407程序
💻 ASM
字号:
;2006 01 08 tianke yundongkongzhika 
*************************************************************    
; Include header file:
            .include "X24x.h"

; Step 1: Global declaration:
            .global    _c_int0, T1_ISR, PHANTOM, NMI_ISR,GISR2
            .ref     INIT_2407
   
; Variables declaration:

			.bss    ADC_RESULT,1
			.bss    LAST_RESULT,1
			.bss	PULSE_COUNT,1
			.bss    TEMP_COUNT,1
            	
		
			
			
		
		
			.page


******************************************************************
******
******                		MAIN
******
******************************************************************

; Digital I/O registers
OCRA		.set 7090h		; Output Control Reg A
OCRB		.set 7092h		; Output Control Reg B
OCRC 		.set 7094h	    ; Output Control reg c
OPCRA		.set 7090h		; Output Control Reg A
OPCRB		.set 7092h		; Output Control Reg B
OPCRC 		.set 7094h	    ; Output Control reg c
PADATDIR	.set 7098h		; I/O port A Data & Direction reg.
PBDATDIR	.set 709Ah		; I/O port B Data & Direction reg.
PCDATDIR	.set 709Ch		; I/O port C Data & Direction reg.
PDDATDIR	.set 709Eh		; I/O port D Data & Direction reg.
PEDATDIR	.set 7095h		; I/O port E Data & Direction reg.
PFDATDIR	.set 7096h		; I/O port F Data & Direction reg.
 
GPTCON		.set 7400h		; GP Timer control register. 
T1CNT		.set 7401h		; GP Timer 1 counter register. 
T1CMPR		.set 7402h		; GP Timer 1 compare register. 
T1CMP		.set 7402h
T1PR		.set 7403h		; GP Timer 1 period register. 
T1PER		.set 7403h
T1CON		.set 7404h		; GP Timer 1 control register. 
T2CNT		.set 7405h		; GP Timer 2 counter register. 
T2CMPR		.set 7406h		; GP Timer 2 compare register. 
T2CMP		.set 7406h
T2PR		.set 7407h		; GP Timer 2 period register. 
T2PER		.set 7407h
T2CON		.set 7408h		; GP Timer 2 control register. 
T3CNT		.set 7409h		; GP Timer 3 counter register. X240 only.
T3CMPR		.set 740Ah		; GP Timer 3 compare register.  X240 only.
T3CMP		.set 740Ah
T3PR		.set 740Bh		; GP Timer 3 period register.  X240 only.
T3PER		.set 740Bh	
T3CON		.set 740Ch		; GP Timer 3 control register. X240 only.

COMCON		.set 7411h		; Compare control register.
ACTR		.set 7413h		; Full compare action control register.
SACTR		.set 7414h		; Simple compare action control register. 
DBTCON		.set 7415h		; Dead-band timer control register. 

CMPR1		.set 7417h		; Full compare unit compare register1. 
CMPR2		.set 7418h		; Full compare unit compare register2.
CMPR3		.set 7419h		; Full compare unit compare register3.

SCMPR1	.set 741Ah		; Single compare unit compare register1. X240 only.
SCMPR2	.set 741Bh		; Single compare unit compare register2. X240 only.
SCMPR3	.set 741Ch		; Single compare unit compare register3. X240 only.
CAPCON	.set 7420h		; Capture control register. 
CAPFIFO 	.set 7422h		; Capture FIFO status register. 
			
FIFO1		.set 7423h		; Capture Channel 1 FIFO Top
FIFO2		.set 7424h		; Capture Channel 2 FIFO Top
FIFO3		.set 7425h		; Capture Channel 3 FIFO Top
FIFO4		.set 7426h		; Capture Channel 4 FIFO Top. X240 only.
CAP1FIFO	.set 7423h		; Capture Channel 1 FIFO Top
CAP2FIFO	.set 7424h		; Capture Channel 2 FIFO Top
CAP3FIFO	.set 7425h		; Capture Channel 3 FIFO Top
CAP4FIFO	.set 7426h		; Capture Channel 4 FIFO Top. X240 only.

EVIMRA	.set 742Ch		; Group A Interrupt Mask Register
EVIMRB	.set 742Dh		; Group B Interrupt Mask Register
EVIMRC	.set 742Eh		; Group C Interrupt Mask Register
IMRA	.set 742Ch		; Group A Interrupt Mask Register
IMRB	.set 742Dh		; Group B Interrupt Mask Register
IMRC	.set 742Eh		; Group C Interrupt Mask Register


EVIFRA	.set 742Fh		; Group A Interrupt Flag Register 
EVIFRB	.set 7430h		; Group B Interrupt Flag Register
EVIFRC	.set 7431h		; Group C Interrupt Flag Register
IFRA	.set 742Fh		; Group A Interrupt Flag Register 
IFRB	.set 7430h		; Group B Interrupt Flag Register
IFRC	.set 7431h		; Group C Interrupt Flag Register

 
EVIVRA	.set 7432h		; Group A Int. Vector Register. X240 only.
EVIVRB	.set 7433h		; Group B Int. Vector Register. X240 only.
EVIVRC	.set 7434h		; Group C Int. Vector Register. X240 only.

BIT0     .set 000fh
BIT15    .set 0000h
        	.text
_c_int0:            
_main:

;Load auxilary register AR7, stack pointer:
     ;      LAR     AR7, #stack_adr      ; Point to B1 for Stack	
		
		
			
			
		CALL    INIT_2407  
		CLRC 	INTM
		
		
	
LOOP:    		
;编码器portA: A0---ADCCS  A1--ADCA0  A2--ADCR/C  A3--ADCCE
;A0到A3均配置为输出口	#0F0Fh 
			
			LDP     #0E1H
			SPLK    #0FF08h,PADATDIR
			NOP
			NOP
			NOP
;IOPD0 为0则可以读取转换结果,如果为1继续等待
wait:	
		
			BIT 	PDDATDIR,BIT0   
			BCND    wait,TC
			
			LDP     #0E1H
			SPLK    #0FF0Ch,PADATDIR
			LACC    PBDATDIR,8			
	     	ADD     PCDATDIR  
	     	AND     #0FFFH	     	 
	     	SPLK    #0FF0Fh,PADATDIR	 
	     	
	     	MAR     AR1
	     	LDP     #4H  
	     	LACC	#1234H 	  
	     		LDP     #4H    	
	     	SACL	ADC_RESULT	
	     		LDP     #4H  
	     	LACC    ADC_RESULT
	     		LDP     #4H  
	     	SPLK    #1,ADC_RESULT
	     		LDP     #4H  
	     	LACC	ADC_RESULT
	     		LDP     #4H  	     	
			SPLK    #2,LAST_RESULT
			LACC	LAST_RESULT
				LDP     #4H  
			SPLK    #3,PULSE_COUNT
			LACC	PULSE_COUNT
				LDP     #4H  
			SPLK    #3,TEMP_COUNT
			LACC	ADC_RESULT		
			LACC	LAST_RESULT
			LACC	PULSE_COUNT
			LACC	TEMP_COUNT
	     	
	     
	     	
	     	;IOPB5,IOPB4配置为输出,IOPB0-IOPB3为输入  
	     	;IOPB5对应A脉冲,IOPB4对应B脉冲     
	     	LDP     #0E1H     
		    SPLK	#3030H,PBDATDIR
			
	;		CALL	calculate	
			
			
            b        LOOP             
         
       
			RET

********************************************************************
**************计算前后两次AD采样后的数值差,得到脉冲数***************
********************************************************************

calculate:	
			CLRC	  C		
			LACC  ADC_RESULT
			SUB   LAST_RESULT
			
			BIT   PULSE_COUNT,BIT15
			BCND  addloop,TC
			SUB   PULSE_COUNT
			B     savecount 
addloop:
			ADD   PULSE_COUNT
			
savecount:	
			SACL  PULSE_COUNT	
			BCND  flag,NC
			LACC  PULSE_COUNT
			OR	  #8000H
			SACL  PULSE_COUNT
				
flag:
			LACC    ADC_RESULT
			SACL	LAST_RESULT
			
			ret						
			

			

																																									
              

**********************************************************
*                 	NMI ISR                          *
**********************************************************
NMI_ISR:
            CLRC INTM         ; re-enable maskable interrupts
            RET               ; return to main

****************************************************
*			T1 ISR
****************************************************
GISR2:	;优先级INT2中断入口					
		;保存状态寄存器 
		;保护现场
		; Step 5: Context saving.
        
		LDP     #0h
		SPLK    #0FFh, IFR      ; Clear all Int Flags
    	LDP		#0E8h
    	SPLK	#0FFFFh,EVIFRA		;清EVA中断标志
    		  	
		LDP		#0E1H


	     
	     
T1PINT_ISR:							;通用定时器1中断入口
		LDP		#DP_EV	
		SPLK		#0,T1CNT


	    LDP     #0E1H
		CLRC	INTM	;开总中断,因为一进中断就自动关闭总中断

		RET

*********************************
;假中断程序
PHANTOM:			
				;复位看门狗
		RET

⌨️ 快捷键说明

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