;--------------------------------------------------------- ENCODER_STEP_1 BCF STATUS,RP0 ;Bank 2 BSF STATUS,RP1 MOVLW .2 ;STEP 1 MOVWF CRCON ;Load the 64-bit decryption key into the KEELOQ ;peripheral¡¦s Key register. MOVLW 0XEF MOVWF CRDAT0 MOVLW 0XCD MOVWF CRDAT1 MOVLW 0XAB MOVWF CRDAT2 MOVLW 0X89 MOVWF CRDAT3 MOVLW .3 MOVWF CRCON MOVLW 0X67 MOVWF CRDAT0 MOVLW 0X45 MOVWF CRDAT1 MOVLW 0X23 MOVWF CRDAT2 MOVLW 0X01 MOVWF CRDAT3 ENCODER_STEP_2 MOVLW .0 ;STEP 2 MOVWF CRCON ;Load the predefined variables into the 32-bit ;Code Shift Register (CSR). ;MOVFW CSR0 MOVLW 0X00 ;Sync. counter 8-bit LSB MOVWF CRDAT0 ;MOVFW CSR1 MOVLW 0X00 ;Sync. counter 8-bit MSB MOVWF CRDAT1 ;MOVFW CSR2 MOVLW b'00000011' ;ÃѧO½X(Discrimination) 8-bit MOVWF CRDAT2 ;MOVFW CSR3 MOVLW b'00000100' ;overflow 2-bit + function 4-bit + 2-bit ÃѧO½X(Discrimination) MOVWF CRDAT3 ENCODER_STEP_3 MOVLW .1 ;STEP 3 MOVWF CRCON ;Load the Iteration Counter Register (ICR) with ;42h(.66) to generate KEELOQ compatible hopping codes. MOVLW .66 ;Exec 66*8 iterations MOVWF CRDAT0 ENCODER_STEP_4 ;STEP 4 BSF CRCON,ENC_DEC ;Set the ENC/DEC bit in the Cryptographical ;Control (CRCON) register ENCODER_STEP_5 BSF CRCON, GO ;Start encryption BTFSC CRCON,GO ;wait for the completion GOTO $-1 MOVLW .0 ;completion OK MOVWF CRCON MOVFW CRDAT0 ;give value MOVWF CRDAT0Temp MOVFW CRDAT1 MOVWF CRDAT1Temp MOVFW CRDAT2 MOVWF CRDAT2Temp MOVFW CRDAT3 MOVWF CRDAT3Temp BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 return ;---------------------------------------------------------