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

📄 rf_cc1000.asm

📁 一种多自由度智能机器人的设计全部资料上传!
💻 ASM
📖 第 1 页 / 共 2 页
字号:


;**********************************************
; CONSTANT DEFINE


CC1000_MAIN		EQU	0X00
CC1000_FREQ_2A		EQU	0X01
CC1000_FREQ_1A		EQU	0X02
CC1000_FREQ_0A		EQU	0X03
CC1000_FREQ_2B		EQU	0X04
CC1000_FREQ_1B		EQU	0X05
CC1000_FREQ_0B		EQU	0X06
CC1000_FSEP1		EQU	0X07
CC1000_FSEP0		EQU	0X08
CC1000_CURRENT		EQU	0X09
CC1000_FRONT_END	EQU	0X0A
CC1000_PA_POW		EQU	0X0B
CC1000_PLL		EQU	0X0C
CC1000_LOCK		EQU	0X0D
CC1000_CAL		EQU	0X0E
CC1000_MODEM2		EQU	0X0F
CC1000_MODEM1		EQU	0X10
CC1000_MODEM0		EQU	0X11
CC1000_MATCH		EQU	0X12
CC1000_FSCTRL		EQU	0X13
CC1000_FSHAPE7		EQU	0X14
CC1000_FSHAPE6		EQU	0X15
CC1000_FSHAPE5		EQU	0X16
CC1000_FSHAPE4		EQU	0X17
CC1000_FSHAPE3		EQU	0X18
CC1000_FSHAPE2		EQU	0X19
CC1000_FSHAPE1		EQU	0X1A
CC1000_FSDELAY		EQU	0X1B
CC1000_PRESCALER	EQU	0X1C
  

CC1000_TEST6		EQU	0X40
CC1000_TEST5		EQU	0X41
CC1000_TEST4		EQU	0X42
CC1000_TEST3		EQU	0X43
CC1000_TEST2		EQU	0X44
CC1000_TEST1		EQU	0X45
CC1000_TEST0		EQU	0X46

LOCK_NOK		EQU	0X00
LOCK_OK			EQU	0X01
LOCK_RECAL_OK		EQU	0X02

RXCURRENT		EQU	0X44
TXCURRENT		EQU	0X81
RXPLL			EQU	0X60
TXPLL			EQU	0X48
PA_VALUE		EQU	0Xff

;--------------------------------  
;============================================================
;===================================================

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
        BRA        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
	BRA        TABLE_1X
	BRA        TABLE_0X
TABLE_0X:
        BTFSS       CSR5,1
	BRA        TABLE_00
	BRA        TABLE_01

TABLE_1X:
        BTFSS       CSR5,1
	BRA        TABLE_10
	BRA        TABLE_11

TABLE_00:
        MOVLW       02EH
        BRA        TABLE_END
TABLE_01:
        MOVLW       074H
        BRA        TABLE_END
TABLE_10:
        MOVLW       05CH
        BRA        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
	BRA        DECRYPT_OUTER1
	CALL	WORK_1
	BANK_3
	DECFSZ      ENCODE_CNT0,1
	BRA        DECRYPT_OUTER
	RETLW       0
;===================================================
;========================================================================
RF_SET:
	RETURN
;---------------------------------------接收校准操作。
;----------------------------------------

;--------------------------------------

;----------------------------------------
; ************************************************
; PWM -> 64BIT
; TE=400US
; "PREAMBLE" HLHLHLHLHLHLHLHLHLHLHLH=23TE
; "SYNC" L=10TE
; ************************************************
DET_DCLK_0:	;BCF	SPEAK_ON	;MAX 880US
		CLRWDT
		CALL	WORK_1
		BANK_3
		CLRF	KEYREG0;A
DET_DCLK_0B:				;FOR 8M CLOCK  3.5US
		BTFSC	RF_DCLK
		RETURN
		BTFSC	RF_DCLK
		RETURN

		;CLRWDT
		DECFSZ	KEYREG0
		BRA	DET_DCLK_0B
		RETURN
;--------------------------------------
TXSIGNAL:	BTFSS	STATUS,C
		BCF	RF_DIO
		BTFSC	STATUS,C;FC
		BSF	RF_DIO
		
		
		
		RCALL	DET_DCLK_0
;------------------------------------
DET_DCLK_1:
		CALL	WORK_1
		BANK_3
		CLRF	KEYREG0;A
DET_DCLK_1B:				;FOR 8M CLOCK  3.5US
		BTFSS	RF_DCLK
		RETURN
		BTFSS	RF_DCLK
		RETURN
		
		DECFSZ	KEYREG0
		BRA	DET_DCLK_1B
		
		RETURN
;--------------------------------------
ROTARYDATA:	RRCF	CSR9
		RRCF	CSR8
		RRCF	CSR7
		RRCF	CSR6
		RRCF	CSR5
		RRCF	CSR4
		RRCF	CSR3
		RRCF	CSR2
		BSF	CSR9,7
		BTFSS	STATUS,C
		BCF	CSR9,7
		RETURN

CHECKHIGHBIT:	BCF	RF_DIO
		RCALL	DET_DCLK_0
		RCALL	DET_DCLK_1
TX_BIT_HIGH		
		BSF	RF_DIO
		RCALL	DET_DCLK_0
		BRA	DET_DCLK_1

;****************************
;****************************
;****************************
TRANSMIT:
	RCALL	SET_CC1000_TX

						

    	MOVLW	100		;130MM
     	MOVWF	TX_TIMES

TX_FRAME:

TXPREAMBLE:;
	CALL	CHECKHIGHBIT		
	CALL	CHECKHIGHBIT	
				;发101用于修正数据
	
   	MOVLW      10
   	MOVWF	KEYREG1;A
TXPREAMBLE_:
   	BCF	STATUS,C
   	RCALL	TXSIGNAL
    	DECFSZ	KEYREG1
    	BRA	TXPREAMBLE_


   	MOVLW	64
    	MOVWF	KEYREG1
TXCODE:
    	RCALL    WORK_1
    	BANK_3
        MOVF	KEYREG1,W
     	ANDLW	00000111B
    	BTFSC	STATUS,Z
     	RCALL 	CHECKHIGHBIT
     	RCALL 	ROTARYDATA
     	RCALL 	TXSIGNAL
     	DECFSZ	KEYREG1
     	BRA	TXCODE
     	RCALL 	CHECKHIGHBIT

     	;RCALL 	ROTARYDATA
	;
    	BSF	STATUS,C
    	BTFSS	LBAT_F
    	BCF	STATUS,C
   	RCALL 	TXSIGNAL
	;
   	BCF	STATUS,C	;??????????0??
  	RCALL 	TXSIGNAL
  	
  	
  	
	;
   	
   	MOVF	TX_TIMES,W
    	ADDLW	254-100+3

    	BC	TX_CODE4
    	
    	;return
    	
    	BTFSS	KEY_PRESS_FG
    	BRA	TX_EXIT
TX_CODE4:
   	DECFSZ	TX_TIMES
    	BRA	TXPREAMBLE
TX_EXIT:
  	BCF	RF_DIO
   	BRA 	SETUPCC1000PD
 
    	
;***************************************************
;**************************************************
;***************************************************
GET_RF_DCLK_HIGH:
	CALL    WORK_1
	BANK_3	
	CLRF    CSR4
	INCF	CSR4
GET_RF_DCLK_HIGH2	;4US	
	BTFSS	RF_DCLK
	RETURN
	BTFSS	RF_DCLK
	RETURN		
	
	CLRWDT
	INCF	CSR4
	BNZ	GET_RF_DCLK_HIGH2
	RETURN
	
GET_RF_DCLK_LOW:
	CALL    WORK_1
	BANK_3	

	CLRF    CSR4
	INCF	CSR4
GET_RF_DCLK_LOW2	;4US	
	BTFSC	RF_DCLK
	RETURN
	BTFSC	RF_DCLK
	RETURN		
	
	CLRWDT
	INCF	CSR4
	BNZ	GET_RF_DCLK_LOW2
	
	RETURN	
;***************************************************
;为了可靠接收,主程序,每次至少连续调用RECEIVE 120MS
;**************************************************
REC_120MS:
	MOVLW	30; 8-12MS
	MOVWF	RX_TIME
	BCF     RX_OVER_FG
	BCF     RX_OK_FG	
REC_120MS2:	
	
	RCALL	RECEIVE
	BTFSC     RX_OK_FG
	RETURN
	BTFSS	RX_OVER_FG	
	BRA	REC_120MS2
	RETURN
	
;*****************************
RF_BIT_MIN	EQU 	256-50
RF_BIT_SHORT	EQU 	256-125


RECEIVE:
	CALL    WORK_1
	BANK_3		
CHECK_START_BIT:
	BTFSS	RF_DCLK
RECEIVE_END:	
	RETURN		
;***BIT1 END HALF BIT=1	
	RCALL	GET_RF_DCLK_HIGH	
	BZ	RECEIVE_END	;>1024US ERROR
;------------------------	
	CLRF	CSR3
CHECK_PREAMBER:

	RCALL	GET_RF_DCLK_LOW	
	BZ	RECEIVE_END	;>1024US ERROR
	MOVLW	RF_BIT_MIN		;MUST >100 US
	ADDWF	CSR4,W
	BNC	RECEIVE_END
	MOVLW	RF_BIT_SHORT	;MUST <500 US
	ADDWF	CSR4,W
	BC	RECEIVE_END		
		
	INCF	CSR3
	BTFSC	CSR3,4
	BRA	RECEIVE_END

	RCALL	GET_RF_DCLK_HIGH	
	BZ	RECEIVE_END	;>1024US ERROR
	MOVLW	RF_BIT_MIN		;MUST >200 US
	ADDWF	CSR4,W
	BNC	RECEIVE_END
		
	MOVLW	RF_BIT_SHORT		;MUST <500 US
	ADDWF	CSR4,W
	BNC	CHECK_PREAMBER		
	
	MOVLW	256-9	
	ADDWF	CSR3,W
	BNC	RECEIVE_END
;________________________
;________________________
;*******************************
	MOVLW	1
	MOVWF	CSR2
	MOVWF	CSR3	
;******************

REC_RF_DCLK_LOW:
	CALL    WORK_1
	BANK_3
	
	RCALL	GET_RF_DCLK_LOW 
	BZ	END_REC_RF	;>1024US ERROR
	MOVLW	RF_BIT_MIN		;MUST >100 US
	ADDWF	CSR4,W
	BNC	END_REC_RF

	MOVLW	RF_BIT_SHORT		;>500 LONG 
	ADDWF	CSR4,W
	BTFSS	STATUS,C
	BRA	REC_RF_DCLK_LOW2	
	
	RCALL	REC_RF_HALF_LOW
	ANDLW	0XFF
	BZ	END_REC_RF
	
	MOVF	CSR3,W
	XORLW	46*2
	BZ	REC_END		
REC_RF_DCLK_LOW2:
	RCALL	REC_RF_HALF_LOW	
	ANDLW	0XFF
	BZ	END_REC_RF


	MOVF	CSR3,W
	XORLW	46*2
	BZ	REC_END

	RCALL	GET_RF_DCLK_HIGH 
	BZ	END_REC_RF	;>1024US ERROR
	MOVLW	RF_BIT_MIN		;MUST >200 US
	ADDWF	CSR4,W
	BNC	END_REC_RF

	MOVLW	RF_BIT_SHORT		;>500 LONG 
	ADDWF	CSR4,W
	BTFSS	STATUS,C

				
	BRA	REC_RF_DCLK_HIGH2	
	
	RCALL	REC_RF_HALF_HIGH
	ANDLW	0XFF
	BZ	END_REC_RF
	MOVF	CSR3,W
	XORLW	46*2
	BZ	REC_END	
REC_RF_DCLK_HIGH2:
	RCALL	REC_RF_HALF_HIGH	
	ANDLW	0XFF
	BZ	END_REC_RF	
	
	MOVF	CSR3,W
	XORLW	46*2
	BNZ	REC_RF_DCLK_LOW

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
     	BRA 	SHUT_DOWN_CC1000
FORMAT_ERROR:
END_REC_RF:
	RETURN	
;****************************		
REC_RF_HALF_HIGH:
	BSF	STATUS,C
	BRA	REC_RF_HALF_LOW2	
REC_RF_HALF_LOW:
	BCF	STATUS,C	
REC_RF_HALF_LOW2:
	RLCF	CSR2			

	MOVF	CSR3,W
	XORLW	46*2
	
	BZ	REC_RF_HALF_LOW_OK;46BIT返回
			
;******************************
	INCF	CSR3	
	BTFSC	CSR3,0
	RETLW	1;BRA	REC_RF_HALF_LOW_OK	;	半位返回
;******************************CHECK BIT
						
		
	movlw	3
	andwf	CSR2
	BZ	REC_RF_HALF_LOW_ERROR	;00 ERROR
	MOVF	CSR2,W
	XORLW	3
	BZ	REC_RF_HALF_LOW_ERROR	;11 ERROR
	
	
		;BTFSC	CSR3,4
			
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -