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

📄 rfcode40old.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                                    ;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              
          SACL    CAPTURE_VALUE         
          SPLK    #00H,DECODE_FLAG           
          B       FLAG0OUT
PULSE32:  LACL    #0C000H                 ;WPULSE=2 
          RPT     DETEMP
          SFR
          OR      CAPTURE_VALUE
          SACL    CAPTURE_VALUE  
          SPLK    #00H,DECODE_FLAG           
          B       FLAG0OUT  
DEFLAG31: SPLK    #01H,DECODE_FLAG        ;DECODE_FLAG=0
FLAG3OUT: B       CODENOUT                ;************************
CODENOUT: LDP     #5
          LACL    DENUMBER
          ADD     WPULSE
          SACL    DENUMBER   
          SUB     #16                     ;*******************23456********************8888
          BCND    GONEXT5,LT  
          LDP     #5
          LACL    RXD_BYTES
          ADD     #01H
          SACL    RXD_BYTES              ;字节数加1 
          SUB     #0B0H
          BCND    SERROR,GT
          NOP
          NOP                            ;保存CAPTURE_VALUE  
          LAR     AR4,#07H                           ;
          LDP     #5                                  ;
          SPLK    #0C000H,MCH_TEMP1                    ;
          SPLK    #8000H,MCH_TEMP2                      ;
          SPLK    #01H,MCH_TEMP3                        ;
          SPLK    #0,MCHVALUE_TEMP                        ;
MCHCYCLE: LDP     #5                                       ;
          LACL    CAPTURE_VALUE                             ;
          AND     MCH_TEMP1                                 ;
          SUB     MCH_TEMP2                                 ;
          BCND    DEMCH1,NEQ  
          NOP                                               ;
          B       MECHNEXT                                  ;
DEMCH1:   LACL    MCHVALUE_TEMP                             ;
          OR      MCH_TEMP3                                 ;
          SACL    MCHVALUE_TEMP  
MECHNEXT: LACL    MCH_TEMP1                                 ;
          SFR                                               ;
          SFR                                               ;  
          SACL    MCH_TEMP1
          LACL    MCH_TEMP2                                 ;
          SFR                                               ;
          SFR                                              ;  
          SACL    MCH_TEMP2
          LACL    MCH_TEMP3                               ;
          SFL                                            ; 
          SACL    MCH_TEMP3
          MAR     *,AR4                                 ;  
          BANZ    MCHCYCLE                             ;
          LDP     #5                                  ;
          LACL    MCHVALUE_TEMP                      ;
          MAR     *,AR3                             ;
          SACL    *+                    ;*****************************8
          LDP    #5     
          LACL   DENUMBER
          SUB    #16
          BCND   INTBYTE,EQ  
          NOP                            ;DENUMBER=17  
          LDP    #5
          LACL   FLAG
          BCND   FLAGD1,NEQ   
          LACL   DECODE_FLAG              ;原FLAG=0  
          BCND   DEFLAGD01,NEQ
          SPLK   #0,FLAG                 ;新FLAG=0   
          SPLK   #0,CAPTURE_VALUE
          SPLK   #01H,DENUMBER           
          B      CODENOUT2     
DEFLAGD01:SPLK   #03H,FLAG               ;新FLAG=3  
          SPLK   #8000H,CAPTURE_VALUE
          SPLK   #01H,DENUMBER              
          B      CODENOUT2               ;**************************
FLAGD1:   SUB    #01H
          BCND   FLAGD2,NEQ
          LACL   DECODE_FLAG             ;原FLAG=1  
          BCND   DEFLAGD11,NEQ
          SPLK   #0,FLAG                 ;新FLAG=0   
          SPLK   #0,CAPTURE_VALUE
          SPLK   #01H,DENUMBER             
          B      CODENOUT2     
DEFLAGD11:SPLK   #03H,FLAG               ;新FLAG=3 
          SPLK   #8000H,CAPTURE_VALUE
          SPLK   #01H,DENUMBER           
          B      CODENOUT2               ;*************************
FLAGD2:   SUB    #01H
          BCND   FLAGD3,NEQ
          LACL   DECODE_FLAG              ;原FLAG=2  
          BCND   DEFLAGD21,NEQ     
          SPLK   #03H,FLAG               ;新FLAG=3 
          SPLK   #8000H,CAPTURE_VALUE
          SPLK   #01H,DENUMBER           
          B      CODENOUT2
DEFLAGD21:SPLK   #00H,FLAG               ;新FLAG=0  
          SPLK   #0,CAPTURE_VALUE
          SPLK   #01H,DENUMBER            
          B      CODENOUT2               ;*************************          
FLAGD3:   LACL   DECODE_FLAG             ;原FLAG=3
          BCND   DEFLAGD31,NEQ
          SPLK   #03H,FLAG               ;新FLAG=3  
          SPLK   #8000H,CAPTURE_VALUE
          SPLK   #01H,DENUMBER             
          B      CODENOUT2
DEFLAGD31:SPLK   #00H,FLAG               ;新FLAG=0   
          SPLK   #0,CAPTURE_VALUE
          SPLK   #01H,DENUMBER             
          B      CODENOUT2               ;**************************************8 
INTBYTE:  NOP                            ;DENUMBER=16 
          LDP    #5                      
          SPLK   #0,CAPTURE_VALUE        ;初始CAPTURE_VALUE=0
          SPLK   #00H,DENUMBER           ;初始DENUMBER=0
          LACL   FLAG
          BCND   FLAGD21,NEQ
          LACL   DECODE_FLAG             ;原FLAG=0  
          BCND   DEFLAGD201,NEQ
          SPLK   #01H,FLAG               ;新FLAG=1           
          B      CODENOUT2     
DEFLAGD201:SPLK   #02H,FLAG              ;新FLAG=2  
          B      CODENOUT2               ;**************************
FLAGD21:  SUB    #01H
          BCND   FLAGD22,NEQ             
          LACL   DECODE_FLAG             ;原FLAG=1  
          BCND   DEFLAGD211,NEQ
          SPLK   #01H,FLAG               ;新FLAG=1            
          B      CODENOUT2               
DEFLAGD211:SPLK   #02H,FLAG              ;新FLAG=2  
          B      CODENOUT2               ;*************************
FLAGD22:  SUB    #01H
          BCND   FLAGD23,NEQ
          LACL   DECODE_FLAG             ;原FLAG=2  
          BCND   DEFLAGD221,NEQ
          SPLK   #02H,FLAG               ;新FLAG=2           
          B      CODENOUT2
DEFLAGD221:SPLK   #01H,FLAG              ;新FLAG=1  
          B      CODENOUT2               ;*************************          
FLAGD23:  LACL   DECODE_FLAG             ;原FLAG=3
          B

⌨️ 快捷键说明

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