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

📄 test.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
            RPT     COUNTER
            NOP             
            RET                                                   
;*****1/256****CODEN_NUMBERS个8位数据的脉冲位置编码(假设数据存放在ADR_CODEN开始的单元中)*(使用单元:61H,62H,63H)************
DATACODEN:  LDP     #4                  ;2
            SPLK    #0FFFFH,CODEN_TEMP  ;2
            LAR     AR4,ADR_CODEN       ;2  
            RPT     #04H    
            NOP                         ;-->16
CODEN_CYCLE:LDP     #4                  ;2
            LACL    CODEN_TEMP          ;1
            ADD     #01H                ;1
            SACL    CODEN_TEMP          ;1
            SUB     CODEN_NUMBERS       ;1
            BCND    END_CODEN,EQ        ;条件成立,4个周期;不成立,2个周期
            MAR     *,AR4               ;1
            LACL    *+                  ;1
            LDP     #0                  ;2
            SACL    61H                 ;1
            SACL    62H                 ;1   
            BCND    GOON,EQ             
            NOP
            NOP
GOBACK:     CALL    HIGH1             ;"HIGH1"调用前有34个指令周期
            LDP     #0   
            LACL    MCOUNTER
            ADD     #01H
            SACL    MCOUNTER
            SUB     #05H       
            BCND    HIGH1ON,NEQ  
            SPLK    #0,MCOUNTER  
           ; SPLK    #02H,MODIFY
            SPLK    #01H,MODIFY   
            B       HIGHIONO
HIGH1ON:    RPT     #03H
            NOP
HIGHIONO:   LACL    62H
            SUB     #01H 
            SACL    62H
            RPT     #08H    
            NOP            
            LACL    62H 
            BCND    GOBACK, NEQ   
            NOP
            NOP
            NOP
            NOP         
GOON:       CALL    PULSE          ;"PULSE"调用前有34个指令周期  
            LDP     #0
            LACL    #0FFH
            SUB     61H  
            SACL    63H    
            LACL    63H 
            BCND    GOEND,EQ 
            RPT     #0AH
            NOP       
GOBACK2:    CALL    HIGH2           ;"HIGH2"调用前有20(+4)个指令周期
            LDP     #0    
            LACL    MCOUNTER
            ADD     #01H
            SACL    MCOUNTER
            SUB     #05H
            BCND    HIGH2ON,NEQ  
            SPLK    #0,MCOUNTER
            SPLK    #01H,MODIFY 
            B       HIGH2ONO
HIGH2ON:    RPT     #04H
            NOP
HIGH2ONO:   LACL    63H
            SUB     #01H  
            SACL    63H
            LACL    63H    
            BCND    GOBACK2, NEQ 
GOEND:      B       CODEN_CYCLE     ;4个指令周期
END_CODEN:  RET      
;***1/4***CODEN_NUMBERS个8位数据的脉冲位置编码(假设数据存放在ADR_CODEN开始的单元中)********
DATA_CODING:LDP     #4                  ;2
            LAR     AR6,CODEN_NUMBERS   ;1
            LAR     AR4,#03H            ;2
            LAR     AR1,ADR_CODEN       ;1  
            RPT     #10H                         ;1
            NOP                         ;1
CODING_CYCLE:                           ;-------->24
            MAR     *,AR6               ;1
            BANZ    CODING              ;条件成立,4个周期;不成立,2个周期
            B       END_CODING
CODING:                                 ;4
            MAR     *,AR1               ;1
            LACL    *+                  ;1 
            SFL                         ;1
            SFL                         ;1
            LDP     #0                  ;2
            SACL    CODING_TEMP         ;1  ----->36
GO_BYTECODING:LDP   #0                  ;2
            LACL    CODING_TEMP         ;1
            SFR                         ;1
            SFR                         ;1
            SACL    CODING_TEMP         ;1
            AND     #0003H              ;2
            SACL    61H                 ;1
            SACL    62H                 ;1   
            BCND    GO_ON,EQ 
            NOP
            NOP
GO_BACK:                                ; ------>50
            CALL    QHIGH1               ;"HIGH1"调用前有50个指令周期
            LDP     #0
            LACL    62H
            SUB     #01H 
            SACL    62H
            RPT     #16H    
            NOP            
            LACL    62H                                                             
            BCND    GO_BACK, NEQ   
            NOP
            NOP         
GO_ON:      CALL    QPULSE          ;"PULSE"调用前有50个指令周期  
            LDP     #0
            LACL    #03H
            SUB     61H  
            SACL    63H    
            NOP         
            NOP
            NOP
            BCND    GO_END,EQ 
                   
GO_BACK2:   CALL    QHIGH2           ;"HIGH3"调用前有10(+4)个指令周期
            LDP     #0              ;2
            LACL    63H             ;1
            SUB     #01H            ;1
            SACL    63H             ;1  
            RPT     #03H
            NOP
            BCND    GO_BACK2, NEQ   ; 
                                    ;2   ---->12
GO_END:     NOP
            NOP          
            NOP
            MAR     *,AR4           ;1
            BANZ    GO_BYTECODING   ;
                                    ;2
            LAR     AR4,#03H        ;1
            NOP                     ;1
            B       CODING_CYCLE    ;4个指令周期  
END_CODING: RET      
;***********************************************************  
;系统初始化程序
SYSINIT:
;        SETC 	INTM
;        CLRC 	SXM
;       	CLRC 	OVM
;		CLRC 	CNF					;B0区被配置为数据空间
;        LDP 	#0E0H				;指向7000h~7080h区
;        SPLK 	#81FEH,SCSR1   		;时钟2倍频,CLKIN=10 M,CLKOUT=20 M
;        SPLK	#0E8H,WDCR			;不使能WDT
;	    LDP		#0
;		SPLK	#0FFFFH,IFR			;清全部中断标志  
;		SPLK	#0000H,IMR			;使能中断第4级INT4  
;		LDP     #5
;		SPLK    #1H,FLAG        
;		LDP     #DP_PF2
;        LACL	MCRC
;        AND		#0FF9FH				;IOPE5,6口配置为一般I/O口
;        SACL	MCRC      
;        LACL	PEDATDIR
;        OR		#6060H              ;IOPE5,6口设置为输出方式,输出为1
;        SACL    PEDATDIR    
;        LACL    MCRB
;        AND     #0FF3FH
;        SACL    MCRB                       ;IOPC6,7配置为I/O口
;        LACL    PCDATDIR
;        OR      #0C0C0H
;        SACL    PCDATDIR             
        RET
******************************************** 
************定时器初始化********************************************8    	    
;TIMERINIT: ; LDP     #0
;           ; SPLK    #02H,IMR            ;使能中断优先级INT2
;           ; SPLK    #0FFFFH,IFR         ;清中断标志
;            LDP     #DP_EVA
;            SPLK    #00H,EVAIMRA        ;不使能 中断
;            SPLK    #0FFFH,EVAIFRA      ;清 EVA标志
;            SPLK    #0600H,T1PR          ;定时100ms	    
;            SPLK    #0174CH,T1CON       ;连续增计数模式;预分频因子为128;
                                        ;定时其计数使能 ;内部时钟
                                        ;定时器1比较使能 
;           SPLK    #0,T1CNT                                        
;           RET         
*********************************************************
***********************解码************************ 
*********************************************************
JIEMA:    
        LAR     AR3,#ADDR_CAPTURE
        LDP     #5
		SPLK    #0,CAPTURE_VALUE 
		SPLK    #0,RXD_BYTES    
		LAR     AR6,#8A03H
MCH_DECODEN:
        MAR     *,AR6
        LACL    *+      
        LDP     #5   	           ;判断SOF,18.88us HIGH
		SACL    280H
		SUB     SWIDTH
		ABS
		SUB     WIDTH_SPACE
		BCND    SEENEXT,GT  
		LDP     #5
		SPLK    #02H,FLAG         ; FLAG=00H:前一字节以LOW结束,且延伸到下一字节 
		                          ; FLAG=01H:前一字节以HIGH结束,且没有延伸到下一字节
		                          ; FLAG=02H:前一字节以HIGH结束,且没有延伸到下一字节
		                          ; FLAG=03H:前一字节以HIGH结束,且延伸到下一字节  
        	SPLK   #0,DENUMBER		  
       	 	SPLK   #00H,CAPTURE_VALUE    
        	SPLK   #00H,DECODE_FLAG                          
		B       GONEXT5   
SEENEXT:LACL    280H
		SUB     DWIDTH   
		ABS
		SUB     WIDTH_SPACE
		BCND    SERROR,GT  
		LDP     #5                        ; 37.76us HIGH
		SPLK    #03H,FLAG                 ; 前一字节以HIGH结束,且延伸到下一字节
		SPLK    #01H,DENUMBER        
		SPLK    #8000H,CAPTURE_VALUE  
		SPLK   #00H,DECODE_FLAG 		
		B       GONEXT5  	
GONEXT5:	MAR     *,AR6
        	LACL    *+      
        	LDP     #5   	           
		SACL    280H
		SUB     SWIDTH
		ABS
		SUB     WIDTH_SPACE
		BCND    DENEXT,GT  
		LDP     #5
        	SPLK    #01H,WPULSE                ;18.88US         
		B       DECONDEN  
DENEXT: 	LACL    280H
		SUB     DWIDTH  
		ABS
		SUB     WIDTH_SPACE
		BCND    DENEXT2,GT 
		LDP     #5
	    	SPLK    #02H,WPULSE                ; 37.76us 	     
	    	B       DECONDEN           
DENEXT2:	LACL    280H
	   	SUB     TWIDTH
	   	ABS
		SUB     WIDTH_SPACE
		BCND    SERROR,GT  
		LDP     #5
	    	SPLK    #03H,WPULSE                ; 56.64us 	     
	    	B       CHECK
DECONDEN: 	LDP     #5                             
          	LACL    FLAG                    ;**************************
          	BCND    DECONDEN1,NEQ  
          	LACL    DENUMBER                ;FLAG=0 
          	SUB     #01H
          	SACL    DETEMP 
          	LACL    DECODE_FLAG
          	BCND    DEFLAG01,NEQ
          	LACL    WPULSE                   ;DECODE_FLAG=0
          	SUB     #01H	
          	BCND    PULSE02,NEQ
          	LACL    #8000H                  ;WPULSE=1 
          	RPT     DETEMP
          	SFR
          	OR      CAPTURE_VALUE              
          	SACL    CAPTURE_VALUE         
          	SPLK    #01H,DECODE_FLAG 
          	B       FLAG0OUT
PULSE02:  LACL    #0C000H                 ;WPULSE=2 
          RPT     DETEMP
          SFR
          OR      CAPTURE_VALUE
          SACL    CAPTURE_VALUE  
          SPLK    #01H,DECODE_FLAG            
          B       FLAG0OUT       
DEFLAG01: SPLK    #00H,DECODE_FLAG        ;DECODE_FLAG=1
FLAG0OUT: B       CODENOUT                ;*****************************
DECONDEN1:SUB   #01H        		 					
          BCND  DECONDEN2,NEQ 
          LDP     #5                      ;FLAG=1
          LACL    DECODE_FLAG
          BCND    DEFLAG11,NEQ
          LACL    DENUMBER                ;DECODE_FLAG=0
          BCND    GONONDE,NEQ 
          LACL    WPULSE                   ;DENUMBER=0
          SUB     #01H    
          BCND    PULSE12,NEQ
          SPLK    #8000H,CAPTURE_VALUE    ;WPULSE=1
          SPLK    #01H,DECODE_FLAG           
          B       FLAG1OUT
PULSE12:  SPLK    #0C000H,CAPTURE_VALUE   ;WPULSE=2
          SPLK    #01H,DECODE_FLAG            
          B       FLAG1OUT      
GONONDE:  LACL    DENUMBER                ;DECODE_FLAG=0,DENUMBER>0
          SUB     #01H
          SACL    DETEMP 
          LACL    WPULSE               
          SUB     #01H
          BCND    PULSE112,NEQ
          LACL    #8000H                  ;WPULSE=1 
          RPT     DETEMP
          SFR
          OR      CAPTURE_VALUE              
          SACL    CAPTURE_VALUE         
          SPLK    #01H,DECODE_FLAG            
          B       FLAG1OUT
PULSE112: LACL    #0C000H                  ;WPULSE=2 
          RPT     DETEMP
          SFR
          OR      CAPTURE_VALUE
          SACL    CAPTURE_VALUE  
          SPLK    #01H,DECODE_FLAG            
          B       FLAG1OUT    
DEFLAG11: SPLK    #00H,DECODE_FLAG         ;DECODE_FLAG=1
FLAG1OUT: B       CODENOUT                 ;*************************
DECONDEN2:SUB   #01H        							
          BCND  DECONDEN3,NEQ
          NOP                             ;FLAG=2  
          LDP     #5                  
          LACL    DECODE_FLAG
          BCND    DEFLAG20,EQ
          LACL    DENUMBER                ; DECODE_FLAG=1   
          SUB     #01H
          SACL    DETEMP 
          LACL    WPULSE               
          SUB     #01H
          BCND    PULSE22,NEQ
          LACL    #8000H                  ;WPULSE=1 
          RPT     DETEMP
          SFR
          OR      CAPTURE_VALUE              
          SACL    CAPTURE_VALUE         
          SPLK    #00H,DECODE_FLAG            
          B       FLAG2OUT
PULSE22:  LACL    #0C000H                 ;WPULSE=2 
          RPT     DETEMP
          SFR
          OR      CAPTURE_VALUE  
          SACL    CAPTURE_VALUE  
          SPLK    #00H,DECODE_FLAG           
          B       FLAG2OUT                          
DEFLAG20: SPLK    #01H,DECODE_FLAG        ; DECODE_FLAG=0
FLAG2OUT: B       CODENOUT                ;**************************
DECONDEN3:LACL    DENUMBER                ;FLAG=3  
          SUB     #01H
          SACL    DETEMP 
          LACL    DECODE_FLAG
          BCND    DEFLAG31,EQ
          LACL    WPULSE                   ;DECODE_FLAG=1
          SUB     #01H
          BCND    PULSE32,NEQ
          LACL    #8000H                  ;WPULSE=1 
          RPT     DETEMP
          SFR
          OR      CAPTURE_VALUE              

⌨️ 快捷键说明

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