RSS

滚动码解码源程序

来源:网络 作者:未知 时间:2007-01-05 Tag: 点击:

;------------------------------------------------------------------------------
;
; FUNCTION      : ROT_SHIFT()          
;
; DESCRIPTION   : RIGHT ROTATE 64 BIT RECEIVE SHIFT REGISTER
;
; NOTE  : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------

ROT_SHIFT
        RRF     CSR7,F
        RRF     CSR6,F
        RRF     CSR5,F                    
        RRF     CSR4,F                    
        RRF     CSR3,F                    
        RRF     CSR2,F                    
        RRF     CSR1,F;            
        RRF     CSR0,F                   
 RETLW 0

;------------------------------------------------------------------------------
;
; FUNCTION      : TX_LOOKUP ()          
;
; DESCRIPTION   : TRANSMITTER ADDRESS CALCULATION
;
; NOTE  : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------

TX_LOOKUP
 MOVF TXNUM,W   ; USE TRANSMITTER NUMBER TO CALCULATE
 MOVWF ADDRESS   ; ADDRESS OF TRANSMITER BLOCK
 CLRC    ; MULTIPLY BY 4
 RLF ADDRESS,F
 RLF ADDRESS,F
 MOVLW 04H   ; AND ADD 4
 ADDWF ADDRESS,F
 RETLW 0   ; RETURN

;------------------------------------------------------------------------------
;
; FUNCTION      : TST_RTCC ()          
;
; DESCRIPTION   : UPDATE RTCC COUNTER
;
; NOTE  : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------
TST_RTCC
 CLRWDT    ; RESET WATCHDOG TIMER
 MOVLW TRISA   ; UPDATE TRI-STATE REGISTER FOR PORTA
 TRIS PORTA

 BTFSS RTCC,7   ; TEST FOR 32MS TIMEOUT ON RTCC MSB
 RETLW 0   ; ... DO QUICK RETURN TO RECEIVE ROUTINE

; **** INCREASE 16 BIT CLOCK TIMER *******

 BCF RTCC,7   ; CLEAR MSB OF RTCC
 INCF CNT_LW,F  ; INCREASE 16 COUNTER
 SKPNZ    ; INCREASE UPPER BYTE IF ZERO ( OVERFLOW )
 INCF CNT_HI,F
 RETLW 0

;------------------------------------------------------------------------------
;
; FUNCTION      : TST_TIMER()          
;
; DESCRIPTION   : TEST 32MS TIMER AND UPDATE OUTPUTS IF REQUIRED
;
; NOTE  : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------

TST_TIMER
; ***** TEST FOR 500 MS TIMEMOUT ON OUTPUTS **********
 BTFSS CNT_LW,4  ; TEST FOR 500 MS TIMEOUT
 GOTO TST_30   ; ... IF NOT TEST 30S TIMEOUT

 MOVLW 0F0H
 ANDWF PORTB,F; DOWN ALL PULSE OUTPUTS

 ; ********* TEST FOR 30 S LEARN TIMEOUT *************
TST_30 BTFSS FLAGS,LRNF
 GOTO TST_END
 
 BTFSC CNT_HI,2  ; TEST FOR LEARN TIMEOUT
 GOTO RESET   ; ... IF LEARN TIMEMOUT FORCE SOFT RESET

TST_END 
 RETLW 0H

;------------------------------------------------------------------------------
;
; FUNCTION      : SENDC ()          
;
; DESCRIPTION   : SEND EEPROM COMMAND
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
教程下载