RSS

滚动码解码源程序

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


        XORWF   KEY1,W  ; ONLY INTERESTED IN BIT KEYREG1,7

        MOVWF   MASK            ; STORE W TEMPORARILY (WE NEED BIT 7)
        RLF     MASK,F          ; LEFT ROTATE MASK TO GET BIT 7 INTO THE CARRY

        RLF     HOP1,F          ; SHIFT IN THE NEW BIT
        RLF     HOP2,F
        RLF     HOP3,F
        RLF     HOP4,F

ROTATE_KEY

        CLRC   ; CLEAR CARRY
        BTFSC   KEY7,7        ; SET CARRY IF LEFTMOST BIT SET
        SETC                    ; SET CARRY IF LEFTMOST BIT SET

        RLF     KEY0,F          ; LEFT-ROTATE THE 64-BIT KEY
        RLF     KEY1,F
        RLF     KEY2,F
        RLF     KEY3,F
        RLF     KEY4,F
        RLF     KEY5,F
        RLF     KEY6,F
        RLF     KEY7,F        

        DECFSZ  CNT0,F          ; INNER LOOP 48 TIMES
        GOTO    DECRYPT_INNER   ; INNER LOOP 48 TIMES

        DECFSZ  CNT1,F          ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE

KEY)
        GOTO    DECRYPT_OUTER   ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)

        RETLW   0               ; RETURN

;------------------------------------------------------------------------------
;
; FUNCTION      : LOAD_CNT_VALS()          
;
; DESCRIPTION   : LOAD COUNTERS INTO WRITE BUFFERS
;
; NOTE  : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------

LOAD_CNT_VALS
 MOVFW CNTR_HI   ; LOAD MSB OF COUNTER
 MOVWF TMP1
 MOVFW CNTR_LW   ; LOAD LSB OF COUNTER
 MOVWF TMP2
 RETLW 0

;------------------------------------------------------------------------------
;
; FUNCTION      : RECEIVE()          
;
; DESCRIPTION   : RECEPTION ROUTINE FOR PWM TRANSMISSIONS
;
; NOTE  : THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------

RECEIVE

;******** WAIT FOR HEADER AND CALIBRATE *******************

 BTFSS   PORTA,RFIN              ; INPUT LOW?
 GOTO    RMT_0                   ; YES; RECEIVE ERROR

 MOVLW   10                      ; 10 ms TIMER
 MOVWF   CNT1
RCV0
 MOVLW   200
 MOVWF   CNT0
RCV1
 BTFSS   PORTA,RFIN              ; INPUT HIGH?
 GOTO    RCV2                    ; [0] NO, JUMP OUT OF LOOP
 DECFSZ  CNT0,1                  ; YES, CONTINUE WITH TIMING LOOP
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


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