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

📄 rfcode40old.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
            NOP          
            MAR     *,AR4
            BANZ    DELAY8      
            NOP
            RET               
;*********************发送数据帧头部信号**1/256****(clk:40M)********************			     
SOF:		LDP     #DP_PF2
            LACL	PEDATDIR
            AND 	#0FF9FH                       ;IOPE5,6输出为0,9.44us(17AH)
            SACL    PEDATDIR        
            LDP     #0                            ;2
            SPLK    #016FH,COUNTER                 ;2
            RPT     COUNTER                       ;1
            NOP                
;*****************                                ;2
            LDP     #DP_PF2                       ;1
            LACL	PEDATDIR                      ;1
       	    OR  	#0060H                        ;IOPE5,6输出为1,56.64us(8DAH)
            SACL    PEDATDIR                   
            LDP     #0
            SPLK    #08CFH,COUNTER        
            RPT     COUNTER
            NOP        
;*****************      
            LDP     #DP_PF2
            LACL	PEDATDIR
            AND 	#0FF9FH                       ;IOPE5,6输出为0,9.44us(17AH)
            SACL    PEDATDIR         
            LDP     #0
            SPLK    #016FH,COUNTER        
            RPT     COUNTER       
            NOP                  
**********************
            LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H                        ;IOPE5,6输出为1
            SACL    PEDATDIR               
            RET		
;*********************发送数据帧头部信号**1/4******(20M)******************			     
SOFQ:       LDP     #DP_PF2
            LACL	PEDATDIR
            AND 	#0FF9FH                       ;IOPE5,6输出为0,9.44us(17AH)
            SACL    PEDATDIR 
            LDP     #0
            SPLK    #016EH,COUNTER        
            RPT     COUNTER
            NOP                
;*****************      
            LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H                 ;IOPE5,6输出为1,37.76us(5E6)
            SACL    PEDATDIR                   
            LDP     #0
            SPLK    #05DAH,COUNTER        
            RPT     COUNTER
            NOP        
;*****************      
            LDP     #DP_PF2
            LACL	PEDATDIR
            AND 	#0FF9FH                ;IOPE5,6输出为0,9.44us(17AH)
            SACL    PEDATDIR         
            LDP     #0
            SPLK    #016EH,COUNTER        
            RPT     COUNTER       
            NOP    
**********************
            LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H                 ;IOPE5,6输出为1,18.88us(2F3)
            SACL    PEDATDIR   
            LDP     #0
            SPLK    #02EAH,COUNTER        
            RPT     COUNTER       
            NOP                
            RET		                                      	
;*********************发送数据帧结束信号******(40M)********************			     
;"ENDF"调用前有30个指令周期
ENDF:       LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H                        ;IOPE5,6输出为1,18.88us(2F3H)
            SACL    PEDATDIR                   
            LDP     #0                            ;2C1=2F3-1E-14
            SPLK    #02C1H,COUNTER        
            RPT     COUNTER
            NOP        
;*****************      
            LDP     #DP_PF2
            LACL	PEDATDIR
            AND 	#0FF9FH                       ;IOPE5,6输出为0,9.44us(17AH)
            SACL    PEDATDIR         
            LDP     #0
            SPLK    #016FH,COUNTER        
            RPT     COUNTER       
            NOP     
;****************                  
            LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H                        ;IOPE5,6输出为1,9.44us(17AH)
            SACL    PEDATDIR                   
            LDP     #0
            SPLK    #016FH,COUNTER        
            RPT     COUNTER
            NOP       
            RET			             
*************写指令时的附加结束信号************************
WENDF:      LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H                        ;IOPE5,60输出为1,18.88us(2F3H)
            SACL    PEDATDIR                   
            LDP     #0                            ;2DF=2F3-14
            SPLK    #02DFH,COUNTER        
            RPT     COUNTER
            NOP        
;*****************      
            LDP     #DP_PF2
            LACL	PEDATDIR
            AND 	#0FF9FH                       ;IOPE5,6输出为0,9.44us(17AH)
            SACL    PEDATDIR         
            LDP     #0
            SPLK    #016FH,COUNTER        
            RPT     COUNTER       
            NOP     
;****************                  
            LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H                        ;IOPE5,6输出为1,9.44us(17AH)
            SACL    PEDATDIR                   
            LDP     #0
            SPLK    #016FH,COUNTER        
            RPT     COUNTER
            NOP       
            RET			                             
;**************************** 位置脉冲************(40M)*********************
;"PULSE"调用前有34个指令周期
PULSE:      LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H            ;IOPE5,6输出为1,9.44us(17AH)
            SACL    PEDATDIR                   
            LDP     #0                            ;142= 17A-22-16
            SPLK    #142H,COUNTER        
            RPT     COUNTER
            NOP   
;**********************************                        
            LDP     #DP_PF2
            LACL	PEDATDIR
            AND 	#0FF9FH                       ;IOPB0输出为0,9.44us(17AH)
            SACL    PEDATDIR         
            LDP     #0
            SPLK    #016FH,COUNTER        
            RPT     COUNTER       
            NOP     
************************************
            LDP     #DP_PF2
            LACL	PEDATDIR
            OR 	    #060H                       ;IOPB0输出为1
            SACL    PEDATDIR                      
            RET       
;****************************18.88us的高电平*******(40M)*****************8*  
;"HIGH1"调用前有34个指令周期
HIGH1:      LDP     #DP_PF2   ;2
            LACL	PEDATDIR  ;1
       	    OR  	#0060H    ;2         ;IOPE5,6输出为1,18.88us(2F3)
            SACL    PEDATDIR                   
            LDP     #0         
            LACL    #02B5H                ;2B8=2F3-22-19
         ;   SUB     MODIFY   
            ADD     MODIFY
            SACL    COUNTER              
            RPT     COUNTER
            NOP           
            LDP     #0
            SPLK    #0,MODIFY    
            RET                   
;****************************18.88us的高电平*******(40M)*****************8*  
;"HIGH2"调用前有24个指令周期
HIGH2:      LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H    ;IOPE5,6输出为1,18.88us(2F3)
            SACL    PEDATDIR       
            LDP     #0            
            LACL    #02BFH            ;2C2=2F3-18-19   
           ; SUB     MODIFY 
            ADD     MODIFY
            SACL    COUNTER  
            RPT     COUNTER
            NOP          
            LDP     #0
            SPLK    #0,MODIFY   
            RET    
;**************************** 位置脉冲************(40M)*********************
;"QPULSE"调用前有50个指令周期
QPULSE:      LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H                        ;IOPE5,6输出为1,9.44us(17AH)
            SACL    PEDATDIR                   
            LDP     #0                            ;132= 17A-32-16
            SPLK    #132H,COUNTER        
            RPT     COUNTER
            NOP   
;**********************************                        
            LDP     #DP_PF2
            LACL	PEDATDIR
            AND 	#0FF9FH                       ;IOPE5,6输出为0,9.44us(17AH)
            SACL    PEDATDIR         
            LDP     #0
            SPLK    #016EH,COUNTER        
            RPT     COUNTER       
            NOP     
************************************
            LDP     #DP_PF2
            LACL	PEDATDIR
            OR 	    #060H                       ;IOPE5,6输出为1
            SACL    PEDATDIR                      
            RET                      
;**1/4**************************18.88us的高电平*****(40M)*******************8*  
;"QHIGH1"调用前有50个指令周期
QHIGH1:     LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H            ;IOPE5,6输出为1,18.88us(2F3)
            SACL    PEDATDIR          ;2AD=2F3-32-14         
            LDP     #0
            SPLK    #02ADH,COUNTER        
            RPT     COUNTER
            NOP             
            RET       
;**1/4**************************18.88us的高电平*****(20M)*******************8*  
;"QHIGH2"调用前有14个指令周期
QHIGH2:     LDP     #DP_PF2
            LACL	PEDATDIR
       	    OR  	#0060H            ;IOPE5,6输出为1,18.88us(2F3)
            SACL    PEDATDIR          ;2D1=2F3-E-14         
            LDP     #0
            SPLK    #02D1H,COUNTER        
            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   ; 

⌨️ 快捷键说明

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