📄 rf_cc100.asm.bak
字号:
;============================================================
;===================================================
ENCODE
BANK_3
MOVF COUNT_L,W ;HI MANUFACTURE KEY
MOVWF CSR2
MOVF COUNT_H,W ;HI MANUFACTURE KEY
MOVWF CSR3
MOVF CSR6,W
MOVWF CSR4
MOVF CSR9,W
MOVWF CSR5
MOVLW 012H ;HI MANUFACTURE KEY
MOVWF KEYREG1 ;
MOVLW 034H ;
MOVWF KEYREG0 ;
MOVLW 056H ;
MOVWF KEYREG7 ;
MOVLW 078H ;
MOVWF KEYREG6 ;
MOVLW 090H ;
MOVWF KEYREG5 ;
MOVLW 012H ;
MOVWF KEYREG4 ;
MOVLW 034H ;
MOVWF KEYREG3 ;
MOVLW 056H ;
MOVWF KEYREG2
;
MOVLW D'11' ;
MOVWF ENCODE_CNT0 ;
;
DECRYPT_OUTER ;
MOVLW D'48' ;
MOVWF ENCODE_CNT1
DECRYPT_OUTER1
RRCF KEYREG7,1
RRCF KEYREG6,1
RRCF KEYREG5,1
RRCF KEYREG4,1
RRCF KEYREG3,1
RRCF KEYREG2,1
RRCF KEYREG1,1
RRCF KEYREG0,1
BSF KEYREG7,7
BTFSS STATUS,C
BCF KEYREG7,7
RRCF CSR5,1
RRCF CSR4,1
RRCF CSR3,1
RRCF CSR2,1
BSF CSR5,7 ;;;
BTFSS STATUS,C
BCF CSR5,7 ;;;
BCF STATUS,C
MOVLW 1 ;
BTFSC CSR4,3 ;
MOVLW 10000B
MOVWF MASK
BTFSS CSR3,0
GOTO PASS
RLCF MASK,1
RLCF MASK,1
PASS
BTFSC CSR2,0
RLCF MASK,1
; MOVLW 0
; BTFSC CSR5,1
; IORLW 2
; BTFSC CSR5,6
; IORLW 4
; ADDWF PC,1
;TABLE
BTFSC CSR5,6
GOTO TABLE_1X
GOTO TABLE_0X
TABLE_0X:
BTFSS CSR5,1
GOTO TABLE_00
GOTO TABLE_01
TABLE_1X:
BTFSS CSR5,1
GOTO TABLE_10
GOTO TABLE_11
TABLE_00:
MOVLW 02EH
GOTO TABLE_END
TABLE_01:
MOVLW 074H
GOTO TABLE_END
TABLE_10:
MOVLW 05CH
GOTO TABLE_END
TABLE_11:
MOVLW 03AH
TABLE_END
CLRWDT
ANDWF MASK,1
MOVLW 0
BTFSS STATUS,Z;SKPZ
MOVLW 10000000B
XORWF CSR3,W
XORWF CSR5,W
XORWF KEYREG1,W
MOVWF MASK
BSF CSR5,7 ;;;
BTFSS MASK,7 ;;;
BCF CSR5,7 ;;;
DECFSZ ENCODE_CNT1,1
GOTO DECRYPT_OUTER1
DECFSZ ENCODE_CNT0,1
GOTO DECRYPT_OUTER
RETLW 0
;===================================================
;========================================================================
RF_SET:
RETURN
;---------------------------------------接收校准操作。
;----------------------------------------
DELAY34MS:
MOVLW 170
GOTO DELAY_A
DELAY_2MS:
MOVLW 10
GOTO DELAY_A
DELAY500C
DELAY400US:
DELAY300C
DELAY100C
DELAY150C
MOVLW 2
GOTO DELAY_A
DELAY_A:
BANK_3
MOVWF DELAY_RAM1
DELAY_LP1:
MOVLW 200
MOVWF DELAY_RAM
DELAY_LP:
CLRWDT
nop
nop
nop
nop
DECFSZ DELAY_RAM,1
GOTO DELAY_LP ;200US
CALL WORK_1
BANK_3
DECFSZ DELAY_RAM1,1
GOTO DELAY_LP1
RETURN
DELAY_8US:
BANK_3
MOVLW 15
MOVWF DELAY_RAM
GOTO DELAY2_LP
DELAY_2US:
BANK_3
MOVLW 2
MOVWF DELAY_RAM
DELAY2_LP:
nop
DECFSZ DELAY_RAM,1
GOTO DELAY2_LP
RETURN
;--------------------------------------
;----------------------------------------
; ************************************************
; PWM -> 64BIT
; TE=400US
; "PREAMBLE" HLHLHLHLHLHLHLHLHLHLHLH=23TE
; "SYNC" L=10TE
; ************************************************
DET_DCLK_0: ;BCF SPEAK_ON ;MAX 880US
CLRF CNT_LB;A
DET_DCLK_0B: ;FOR 4M MIPS 3.5US
BTFSC RF_DCLK
RETURN
BTFSC RF_DCLK
RETURN
BTFSC RF_DCLK
RETURN
BTFSC RF_DCLK
RETURN
BTFSC RF_DCLK
RETURN
CLRWDT
DECFSZ CNT_LB
BRA DET_DCLK_0B
RETURN
;--------------------------------------
TXSIGNAL: BTFSS STATUS,C
BCF RF_DIO
BTFSC STATUS,C;FC
BSF RF_DIO
CALL DET_DCLK_0
;------------------------------------
DET_DCLK_1:
CLRF CNT_LB;A
DET_DCLK_1B: ;FOR 4M MIPS 3.5US
BTFSS RF_DCLK
RETURN
BTFSS RF_DCLK
RETURN
BTFSS RF_DCLK
RETURN
BTFSS RF_DCLK
RETURN
BTFSS RF_DCLK
RETURN
CLRWDT
DECFSZ CNT_LB
BRA DET_DCLK_1B
RETURN
;--------------------------------------
ROTARYDATA: RRCF CSR9
RRCF CSR8
RRCF CSR7
RRCF CSR6
RRCF CSR5
RRCF CSR4
RRCF CSR3
RRCF CSR2
RETURN
CHECKHIGHBIT: BCF RF_DIO
CALL DET_DCLK_0
CALL DET_DCLK_1
BSF RF_DIO
CALL DET_DCLK_0
BRA DET_DCLK_1
;****************************
;****************************
;****************************
TRANSMIT:
MOVLW 150
MOVWF TX_TIMES
TX_FRAME:
TXPREAMBLE:;
MOVLW 0X12
MOVWF TRXBIT;A
TXPREAMBLE_:
BCF STATUS,C
CALL TXSIGNAL
DECFSZ TRXBIT
BRA TXPREAMBLE_
MOVLW 64
MOVWF TRXBIT
TXCODE:
CALL WORK_1
BANK_3
MOVF TRXBIT,W
ANDLW 00000111B
BTFSC STATUS,Z
CALL CHECKHIGHBIT
CALL ROTARYDATA
CALL TXSIGNAL
DECFSZ TRXBIT
BRA TXCODE
CALL CHECKHIGHBIT
CALL ROTARYDATA
;
BSF STATUS,C
BTFSS LBAT_F
BCF STATUS,C
CALL TXSIGNAL
;
BCF STATUS,C ;??????????0??
CALL TXSIGNAL
;
MOVF TX_TIMES,W
ADDLW 256-150+4
BC TX_CODE4
BTFSS KEY_PRESS_FG
BRA TX_EXIT
TX_CODE4:
DECFSZ TX_TIMES
BRA TXPREAMBLE
TX_EXIT:
CALL SETUPCC1000PD
BCF RF_DIO
RETURN
;***************************************************
;**************************************************
;***************************************************
;***************************************************
RECEIVE:
CHECK_START_BIT:
CALL WORK_1
BANK_3
CLRF RF_CNT0
WAIT_START_L: ;8NOP/8M = 4US
CLRWDT
NOP
NOP
BTFSC RF_DCLK
GOTO END_REC_RF
DECFSZ RF_CNT0,1
GOTO WAIT_START_L
GOTO END_REC_RF ;1024us >2 TE
CNT_START_H: ;LOOP 4US
CLRWDT
NOP
NOP
BTFSS RF_DCLK
GOTO CHK_START_BIT_H
INCFSZ RF_CNT0,1
GOTO CNT_START_H
GOTO END_REC_RF ;1024us >2 TE
CHK_START_BIT_H:
MOVLW D'154'
SUBWF RF_CNT0,W
BTFSS STATUS,C
GOTO END_REC_RF ;620us < 1.5 TE
START_BIT_OK:
BSF HALF_BIT_FG
BCF H_LONG_FG
BCF L_LONG_FG
BCF REC_40B_FG
BCF REC_FAIL_FG
CLRF RX_BYTE_CNT
MOVLW D'40'
MOVWF RX_BITS_CNT
REC_H:
CALL WORK_1
BANK_3
CLRF RF_CNT0
BTFSC REC_FAIL_FG
GOTO END_REC_RF ;CHECK BIT ERROR
BTFSC REC_40B_FG
GOTO REC_END
REC_H_LP: ;8NOP = 4US
;CALL DELAY27NOP
CLRWDT
NOP
NOP
BTFSs RF_DCLK
GOTO Calculat_H
INCFSZ RF_CNT0,1
GOTO REC_H_LP
GOTO END_REC_RF ;1024us >2 TE
Calculat_H:
MOVLW D'50'
SUBWF RF_CNT0,W
BTFSS STATUS,C
GOTO END_REC_RF ;200us < 0.5 TE
MOVLW D'150'
SUBWF RF_CNT0,W
BTFSS STATUS,C
GOTO HALF_BIT_H
H_2_HALF_BIT:
BTFSC H_LONG_FG
GOTO FORMAT_ERROR
BSF H_LONG_FG
BCF L_LONG_FG
BSF HALF_BIT_FG
CALL RORATE_BIT0 ;上升沿为0
GOTO REC_L
HALF_BIT_H:
BTFSC HALF_BIT_FG
GOTO HALF_BIT_H1
BSF HALF_BIT_FG
GOTO REC_L
HALF_BIT_H1:
BCF HALF_BIT_FG
CALL RORATE_BIT0 ;上升沿为0
GOTO REC_L
REC_L:
CALL WORK_1
BANK_3
CLRF RF_CNT0
BTFSC REC_FAIL_FG
GOTO END_REC_RF ;CHECK BIT ERROR
BTFSC REC_40B_FG
GOTO REC_END
REC_L_LP: ;8NOP = 4US
;CALL DELAY27NOP
CLRWDT
NOP
NOP
BTFSC RF_DCLK
GOTO Calculat_L
INCFSZ RF_CNT0,1
GOTO REC_L_LP
GOTO END_REC_RF ;1024us >2 TE
Calculat_L:
MOVLW D'50'
SUBWF RF_CNT0,W
BTFSS STATUS,C
GOTO END_REC_RF ;200us < 0.5 TE
MOVLW D'150'
SUBWF RF_CNT0,W
BTFSS STATUS,C
GOTO HALF_BIT_L
L_2_HALF_BIT:
BTFSC L_LONG_FG
GOTO FORMAT_ERROR
BSF L_LONG_FG
BCF H_LONG_FG
BSF HALF_BIT_FG
CALL RORATE_BIT1 ;下降沿为1
GOTO REC_H
HALF_BIT_L:
BTFSC HALF_BIT_FG
GOTO HALF_BIT_L1
BSF HALF_BIT_FG
GOTO REC_H
HALF_BIT_L1:
BCF HALF_BIT_FG
CALL RORATE_BIT1 ;下降沿为1
GOTO REC_H
REC_END:
MOVF CSR9,W
ADDLW 55H
ADDWF CSR8,W
ADDWF CSR7,W
ADDWF CSR6,W
XORWF CSR5,W
BNZ END_REC_RF
CALL READ_SN0
XORWF CSR6,W
BNZ END_REC_RF
CALL READ_SN1
XORWF CSR7,W
BNZ END_REC_RF
CALL READ_SN2
XORWF CSR8,W
BNZ END_REC_RF
BSF RX_OK_FG
CALL SHUT_DOWN_CC1000
FORMAT_ERROR:
END_REC_RF:
RETURN
RORATE_BIT1:
BSF RX_BIT_VALUE
GOTO RORATE_BIT
RORATE_BIT0:
BCF RX_BIT_VALUE
RORATE_BIT:
INCF RX_BYTE_CNT,1
MOVLW 0X01 ;CHECK BIT=1
XORWF RX_BYTE_CNT,W
BTFSC STATUS,Z
GOTO CHECK_BIT_OP
MOVLW 0X09
XORWF RX_BYTE_CNT,W
BTFSC STATUS,C
CLRF RX_BYTE_CNT
BCF STATUS,C
BTFSC RX_BIT_VALUE
BSF STATUS,C
RRCF CSR9,1
RRCF CSR8,1
RRCF CSR7,1
RRCF CSR6,1
RRCF CSR5,1
DECFSZ RX_BITS_CNT,1
RETURN
BSF REC_40B_FG
RETURN
CHECK_BIT_OP:
BTFSS RX_BIT_VALUE
BSF REC_FAIL_FG
RETURN ; CHECK BIT=1,IT IS OK
;***************************************************
;***************************************************
HALF_BIT_OP:
BTFSC HALF_BIT_FG
GOTO HALF_DET_
BSF HALF_BIT_FG
RETURN
HALF_DET_:
BCF HALF_BIT_FG
INCF RX_BYTE_CNT,1
RETURN
;***************************************************
REC_10MS:
CALL SET_CC1000_RX
MOVLW 3; 8-12MS
MOVWF RX_TIME
BCF Manchester_ok_fg
BCF RX_OVER_FG
DETECT_RF_CODE:
BCF HALF_BIT_FG
BCF H_LONG_FG
BCF L_LONG_FG
CLRF RX_BYTE_CNT
BTFSC RX_OVER_FG
GOTO DET_FAIL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -