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

📄 ev1527-1.asm

📁 PIC10F200对ev1527的解码程序
💻 ASM
字号:
; 本程序由深圳超通和龙科技有限公司提供,若需要eV1527,请与本公司联系
; 电话:0755 - 82908963  82948499  传真:0755-82941332

RECEIVE:
	 BTFSS     RFIN                ; 输入低电平?
	     GOTO      RMT_0           ; 是,接收错误

	 MOVLW     10                  ; 10mS计时
	 MOVWF     CNT1
RCV0:
	 MOVLW     200
 	 MOVWF     CNT0
RCV1:
	 BTFSS     RFIN                ; 输入高?
	     GOTO      RCV2            ; 否,退出循环
	 DECFSZ    CNT0,F              ; 是, 10mS倒计时
	     GOTO      RCV1            
	 DECFSZ    CNT1,F              
	     GOTO      RCV0		
RCV2:
	 CLRF      CNT0                ; 清计时器
	 CLRF      CNT1                 

; *************************************************************************
; 开始对同步头计时
; *************************************************************************

RCV3
	 BTFSC     RFIN                ; 输入高电平?
	     GOTO      RCV6            ; [0][0] YES--END CALIBRATION
	 INCF	   CNT0,1              ; 16位计数器加1	
	 SKPNZ	      	               ; 无进位,跳过
	     INCF      CNT1,1          ; 高位加1
	 CLRWDT		               ; 清看门狗
	 NOP				           
         GOTO      $+1
         GOTO      $+1
         GOTO      $+1
         BTFSS	   CNT1,3		
	     GOTO      RCV3  		
	 GOTO	   RMT_0 	       ; 计时指令 Total = 16
RCV6:
	 CLRC			       ; CNT1:CNT0 / 16  --> 1/2LCK
	 RRF       CNT1,F			    
	 RRF       CNT0,F			    
	 CLRC				           
	 RRF       CNT1,F			    
	 RRF       CNT0,F			    
	 CLRC				            
	 RRF       CNT1,F			    
	 RRF       CNT0,F               
	 CLRC				            
	 RRF       CNT1,F			    
	 RRF       CNT0,F               
					
	 MOVLW     MIN/256	       ; 判断同步头合法性(MIN为同步头最小时间)
	 SUBWF     CNT0,W	
	 BTFSS     STATUS,C	       
	     GOTO    RMT_0             ; 小于MIN, 错误


; *************** 有效同步头接收 *********************
RCV7:
	 MOVLW     NBITS               ; 位接收计数器
	 MOVWF     CNT1			       
	 MOVF      CNT0,W			
	 MOVWF     CNT2                ; CNT2 = CNT0
	 MOVLW     6H			 
	 SUBWF     CNT2,F			  
	 GOTO      DL1                 ; 补偿第一位

RCV8:					
	 MOVLW	   4H	               ; 最大等待4个LCK
	 MOVWF	   TMP_CNT	       
RCV10A:
	 MOVF	   CNT0,W              
	 MOVWF     CNT2		       
RCV10B:
	 BTFSC     RFIN                ; 等待高电平?
	     GOTO      RCV11           
	 DECFSZ    CNT2,1              
	     GOTO      RCV10B          
	 DECFSZ	   TMP_CNT,1	       
	     GOTO      RCV10A          
	 GOTO      RMT01               ; 时间溢出,错误
RCV11
	 MOVLW	   3H	               ; 补偿时间
	 SUBWF	   CNT0,W
	 MOVWF	   CNT2	

DL1:
	 CLRWDT                        ; 清看门狗
	 DECFSZ    CNT2,1               
	     GOTO      DL1             ; CNT0 * 4 us
SAMPLE1:
	 BTFSS     RFIN                ; 2LCK处为高电平?                                   
	     GOTO      RMT01           ; 否,错误数据                                
	 MOVF      CNT0,W              ; 调整时间
	 MOVWF     CNT2                ; 
	 DECF      CNT2,F		
	 GOTO	   $+1			
	 NOP				
DL2:
	 CLRWDT                        ; 清看门狗
	 GOTO	   $+1		       ; 消耗2uS
	 GOTO	   $+1		       ; 消耗2uS
	 GOTO	   $+1		       ; 消耗2uS
	 GOTO	   $+1		       ; 消耗2uS
	 DECFSZ    CNT2,1
	     GOTO      DL2             ; CNT0 * 12
SAMPLE2:
	 BCF       FLAGS,BITIN         ; 读入数据(8LCK处)                                
	 BTFSC     RFIN                ; 
	     BSF       FLAGS,BITIN     ; 
         RLF       CSR0,F              ; 左移                                     
         RLF       CSR1,F
         RLF       CSR2,F
	 BCF	   CSR0,0			   
	 BTFSC     FLAGS,BITIN		   
	     BSF       CSR0,0

	 MOVF      CNT0,W              ; 调整时间
	 MOVWF     CNT2                
	 MOVLW	   3			
	 SUBWF	   CNT2,1		
	 NOP				

DL3:
         GOTO	   $+1		       ; 消耗2uS
	 GOTO	   $+1		       ; 消耗2uS
	 GOTO	   $+1		       ; 消耗2uS
	 GOTO	   $+1		       ; 消耗2uS
	 CLRWDT                        ; 清除看门狗
	 DECFSZ    CNT2,1               
	     GOTO      DL3             ; CNT0 * 12 us 
SAMPLE3:
	 BTFSC     RFIN                ; 14LCK输入低电平? <<6>> 
	     GOTO      RMT0            ; [0] NO--RECEIVE ERROR
	 CALL      TST_RTCC            ; [11] CHECK RTCC

	 DECFSZ    CNT1,F              ; 最后一位?
	     GOTO      RCV8            ; 否,继续
RMT1:	
         BSF       LED                 ; 表示有效数据
         CLRC			       
 	 RETLW     0                   ; RETURN 

RMT_0:
RMT0:	
RMT01:
	 BSF	   STATUS,C	       ; 非法数据
	 RETLW	   1		       ; RETURN

⌨️ 快捷键说明

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