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

📄 rf_cc100.asm.bak

📁 六脚十二自由度机器人全部资料
💻 BAK
📖 第 1 页 / 共 2 页
字号:


;============================================================
;===================================================

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 + -