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

📄 rf_cc100.asm.bak

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

	BTFSS	RF_DCLK
	GOTO    DET_L
	GOTO    DET_H

DET_H:
	CALL    WORK_1
	BANK_3
        CLRF    RF_CNT0
DET_H_LP:       ;8NOP = 4US
	CLRWDT
	NOP
	NOP
	BTFSs	RF_DCLK
	GOTO    Calculat_DET_H
	INCFSZ	RF_CNT0,1
	GOTO    DET_H_LP
	GOTO    DETECT_RF_CODE
Calculat_DET_H:
	MOVLW   D'70'
	SUBWF   RF_CNT0,W
	BTFSS   STATUS,C
	GOTO    DETECT_RF_CODE
	MOVLW   D'150'
	SUBWF   RF_CNT0,W
	BTFSS   STATUS,C
	GOTO    HALF_DET_H

	BTFSC   H_LONG_FG
	GOTO    DETECT_RF_CODE
	BSF     H_LONG_FG
	BCF     L_LONG_FG
	BSF     HALF_BIT_FG
	INCF    RX_BYTE_CNT,1
	GOTO    DET_L
HALF_DET_H:
	CALL    HALF_BIT_OP
	GOTO    DET_L

DET_L:
	MOVLW   5
	SUBWF   RX_BYTE_CNT,W
	BTFSC   STATUS,C
	GOTO    DET_OK

	CALL    WORK_1
	BANK_3
        CLRF    RF_CNT0
DET_L_LP:       ;8NOP/8M = 4US
	;CALL    DELAY27NOP
	CLRWDT
	NOP
	NOP
	BTFSC	RF_DCLK
	GOTO    Calculat_DET_L
	INCFSZ	RF_CNT0,1
	GOTO    DET_L_LP
	GOTO    DETECT_RF_CODE
Calculat_DET_L:
	MOVLW   D'70'
	SUBWF   RF_CNT0,W
	BTFSS   STATUS,C
	GOTO    DETECT_RF_CODE
	MOVLW   D'150'
	SUBWF   RF_CNT0,W
	BTFSS   STATUS,C
	GOTO    HALF_DET_L

	BTFSC   L_LONG_FG
	GOTO    DETECT_RF_CODE
	BSF     L_LONG_FG
	BCF     H_LONG_FG
	BSF     HALF_BIT_FG
	INCF    RX_BYTE_CNT,1
	GOTO    DET_L
HALF_DET_L:
	CALL    HALF_BIT_OP
	GOTO    DET_H


DET_OK:
	BSF     Manchester_ok_fg
	GOTO    END_DET_CODE
DET_FAIL:
    	CALL	SHUT_DOWN_CC1000
END_DET_CODE:
	RETURN
;************************************
;************************************
;***********************

; **************************************************
;	CC1000 WRITE TO A SINGLE CC1000 REGISTER
; **************************************************
;**********WRITE CC1000_DATA CC1000_ADR
;**********MODIFY BY LZY 2007OCT23

RESETCC1000:
		MOVLW      0X3A
		CALL	WRT_CC1000_MAIN
		MOVLW      0X3B
		;BRA	WRT_CC1000_MAIN
WRT_CC1000_MAIN:
		MOVWF	CC1000_DATA
		MOVLW   LOW CC1000_MAIN
WRITETOREGISTER:
		BSF	PALE
		BSF	STATUS,C
		BSF	PCLK

		MOVWF	COUNT_H
		RLCF	COUNT_H
		BCF	PALE
		CALL 	WRITE_CC1000_8BIT1
		BSF	PALE
		MOVF	CC1000_DATA,W
;------------------------------------
WRITE_CC1000_8BIT:
	MOVWF	COUNT_H
WRITE_CC1000_8BIT1:
	MOVLW	8
	MOVWF	COUNT_L
WRITE_CC1000_8BIT2:
	BSF	PCLK

	BTFSS	COUNT_H,7
	BCF	PDATA
	BTFSC	COUNT_H,7
	BSF	PDATA

	RLNCF	COUNT_H
	BCF	PCLK

	DECFSZ	COUNT_L
	BRA	WRITE_CC1000_8BIT2
	BSF	PCLK
	RETURN
;************************************
;**************************************************
;**************************************************
READTOREGISTER:
		BSF	PALE
		BCF	STATUS,C
		BSF	PCLK

		MOVWF	COUNT_H
		RLCF	COUNT_H
		BCF	PALE
		CALL 	WRITE_CC1000_8BIT1
		BSF	PALE
		BSF	IOC_PDATA
READ_CC1000_8BIT:
	CLRF	CC1000_DATA
READ_CC1000_8BIT1:
	MOVLW	8
	MOVWF	COUNT_L
READ_CC1000_8BIT2:
	BCF	PCLK

	RLNCF	CC1000_DATA
	BTFSC	PDATA
	BSF	CC1000_DATA,0

	BSF	PCLK

	DECFSZ	COUNT_L
	BRA	READ_CC1000_8BIT2
	BCF	IOC_PDATA
	RETURN

; **************************************************
; **************************************************
; **************************************************
; **************************************************
CALIBRATECC1000:
	;/* TURN OFF PA TO AVOID SUPRS DURING
;	   CALIBRATION IN TX MODE 		*/
		CALL 	WRT_CC1000_PA_POW00
		;
		MOVLW      RXPLL
		BTFSC	CC1000TRX_F
		MOVLW      TXPLL
		CALL 	WRT_CC1000_PLL
	; PROGRAM VCO CURRENT FOR TX/RX
		MOVLW      RXCURRENT
		BTFSC	CC1000TRX_F
		MOVLW      TXCURRENT
		CALL 	WRT_CC1000_CURRENT
	;/* START CALIBRATION			*/
		MOVLW      0X0A6
		CALL 	WRT_CC1000_CAL
	;/* WAIT FOR CALIBRATION COMPLETE	*/

		CLRF	CNT_LB
CALIBRATECC10002:
		CALL	DELAY150C

		MOVLW      CC1000_CAL
		CALL 	READTOREGISTER

		BTFSC	CC1000_DATA,3;@YZ.3
		BRA	CALIBRATECC10004


		DECFSZ	CNT_LB
		BRA	CALIBRATECC10002
	;/* END CALIBRATION			*/
CALIBRATECC10004:
		MOVLW      0X26
		CALL 	WRT_CC1000_CAL





	;/* RESTORE PA SETTING			*/
		MOVF	PA_VALUE
		CALL 	WRT_CC1000_PA_POW
	;/* WAIT FOR LOCK			*/
		CLRF	CNT_LB
CALIBRATECC10006:
		CALL	DELAY100C
		MOVLW   LOW CC1000_LOCK
		CALL 	READTOREGISTER

		BTFSC	CC1000_DATA,0
		RETURN
		DECFSZ	CNT_LB
		BRA	CALIBRATECC10006
		RETURN
; **************************************************
;
; **************************************************
SETUPCC1000PD:
	BANK_3
		MOVLW      0X3F
		CALL	WRT_CC1000_MAIN
		
		BRA	WRT_CC1000_PA_POW0
SHUT_DOWN_CC1000:
		BCF	RF_POWER
		CLRWDT
		BCF	RF_DIO
		CLRWDT
		BCF	RE_C
		CLRWDT
		BCF	PALE
		CLRWDT
		BCF	TE_C
		CLRWDT
		BCF	PDATA
		CLRWDT
		BCF	PCLK
		RETURN
;***********************************
;***********************************
SET_CC1000_TX:
   	BCF	RE_C
   	BSF	CC1000TRX_F		;RX=0
   	CALL	POWER_ON_CC1000
   	BSF	TE_C
	RETURN
SET_CC1000_RX:
   	BCF	TE_C
   	BCF	CC1000TRX_F		;RX=0
   	CALL	POWER_ON_CC1000
   	BSF	RE_C
	BCF     RX_OVER_FG
	BCF     RX_OK_FG
	RETURN
;***********************************
POWER_ON_CC1000:
		BANK_3
		BSF	RF_POWER
		CLRWDT
		BSF	PALE
		CLRWDT
		BSF	PCLK
		CLRWDT
		BSF	PDATA
		CLRWDT
		BCF	RF_DIO
		CALL	DELAY_2MS

		BTFSC	CC1000TRX_F
		BRA	POWER_ON_CC1000B

		BSF	RE_C
		CLRWDT
		BCF	TE_C
		CLRWDT
		;BSF	RX_VCC
		BRA	POWER_ON_CC1000D
POWER_ON_CC1000B:
		BCF	RE_C
		CLRWDT
		BSF	TE_C
		CLRWDT
		;BCF	RX_VCC
POWER_ON_CC1000D:
		CALL 	DELAY300C

		CALL 	PURTOCC1000

		MOVLW      0X17
		BTFSC	CC1000TRX_F
		CALL 	WRT_CC1000_MODEM0

		BRA	SETUPCC1000TRX


; **************************************************
; **************************************************
WAKEUPCC1000TOTRX:
	;/* TURN ON XIAL OSCILATOR */
		MOVLW      0X3B			;// FORM RX
		BTFSC	CC1000TRX_F
		MOVLW      0X0FB		;// FORM TX
		CALL	WRT_CC1000_MAIN
	;/* PROGRAM VCO CURRENT */
		MOVLW      RXCURRENT		;// FORM RX
		BTFSC	CC1000TRX_F
		MOVLW      TXCURRENT		;// FORM TX
		CALL	WRT_CC1000_CURRENT
	;/* USE TRX REDIV SETTING */
		MOVLW      RXPLL		;// FORM RX
		BTFSC	CC1000TRX_F
		MOVLW      TXPLL		;// FORM TX
		CALL	WRT_CC1000_PLL
	;/* INSERT WAIT ROUTINE HERE, MUST WAIT
;           FOR XIAL OSCILLATOR TO STABILISE.
	  ; TYPICALL Y TAKES 2MS */

		CALL	DELAY_2MS
	;/* TURN ON BIAS GENERATOR */
		MOVLW      0X39
		BTFSC	CC1000TRX_F
		MOVLW      0X0F9
		CALL 	WRT_CC1000_MAIN
	;/* WAIT FOR 200US */
		CALL 	DELAY300C
	;/* TURN ON PA FOR TX */
		BTFSS	CC1000TRX_F
		BRA	WAKEUPCC1000TOTRX2
		MOVLW      PA_VALUE
		CALL 	WRT_CC1000_PA_POW
	;/* TURN ON FREQUENCY SYNTHESISTER *
WAKEUPCC1000TOTRX2:
		MOVLW      0X31
		BTFSC	CC1000TRX_F
		MOVLW      0X0F1
		BRA	WRT_CC1000_MAIN

; ********************************************************
; RX MODE=REG. A
; TX MODE=REG. B
; ********************************************************
SETUPCC1000TRX:
	;/* TURN OFF PA TO AVOID FREQUENCY SPLATTER */
		BTFSS	CC1000TRX_F
		BRA	SETUPCC1000TRX2
		CALL 	WRT_CC1000_PA_POW00
	;/* SWITCH INTO TX/RX */
SETUPCC1000TRX2:
		MOVLW      0X11
		BTFSC	CC1000TRX_F
		MOVLW      0X0E1
		CALL 	WRT_CC1000_MAIN
	;/* USE TX/RX REFDIV SETTING */
		MOVLW      RXPLL
		BTFSC	CC1000TRX_F
		MOVLW      TXPLL
		CALL 	WRT_CC1000_PLL
	;/* PROGRAM VCO CURRENT FOR TX/RX */
		MOVLW      RXCURRENT
		BTFSC	CC1000TRX_F
		MOVLW      TXCURRENT
		CALL 	WRT_CC1000_CURRENT
	;/* WAIT 250US BEFORE MONITORING LOCK */
		CALL 	DELAY300C

	;/* WAIT FOR LOCK */
		MOVLW      0X07F
		MOVWF	CNT_LB;A
		MOVLW      0X02
		MOVWF	CNT_HB;A

SETUPCC1000TRX3:
		MOVLW   LOW   CC1000_LOCK
		CALL 	READTOREGISTER

		BTFSC	CC1000_DATA,0
		BRA	SETUPCC1000TRX4

		DECFSZ	CNT_LB
		BRA	SETUPCC1000TRX3
		DECFSZ	CNT_HB
		BRA	SETUPCC1000TRX3
	;/* IF PLL IN LOCK  */
SETUPCC1000TRX4:
		MOVF	CC1000_DATA,W
		XORLW	01H

		BNZ	SETUPCC1000TRX6
		MOVLW      LOCK_OK
		BRA	SETUPCC1000TRX14
	;/* IF RECALIBRATION OK *
SETUPCC1000TRX6:
		CALL 	CALIBRATECC1000
		BNZ	SETUPCC1000TRX8

		MOVLW   LOCK_RECAL_OK
		BRA	SETUPCC1000TRX14
	;/* RECALIBRATION FAILED */
SETUPCC1000TRX8:
		CALL 	RESETFREQSYNTH
		MOVLW      LOCK_NOK
SETUPCC1000TRX14:
		MOVWF	CC1000_FG;A
	;
		BTFSS	CC1000TRX_F
		RETURN
		MOVLW	PA_VALUE;		MOVLW      0XPA_VALUE
		BRA	WRT_CC1000_PA_POW

; ******************************************************
; ******************************************************
RESETFREQSYNTH:
		RETURN
; ******************************************************
; RX
; ******************************************************
CC1000RXTABLE:	DW	02058H, 04200H, 09C14H, 08002H
		DW	01044H, 0600FH, 02610H, 0698BH		; DEVIATION = 32K(8BH)
		DW	0F02BH, 00001H, 00000H
;14.7456
;CC1000RXTABLE:	DW	00F42H, 042FCH, 09814H, 08002H
;		DW	01044H, 048FFH, 02610H, 06F8DH
;		DW	0F03BH, 00001H, 00000H		;//7038H

;CC1000TXTABLE:	DW	02058H, 04200H, 09C14H, 08002H
;		DW	01081H, 048FFH, 02610H, 0698DH
;		DW	0F037H, 00001H, 00000H
;14.7456
;CC1000TXTABLE:	DW	00F42H, 042FCH, 09814H, 08002H
;		DW	01081H, 048FFH, 02610H, 06F8DH
;		DW	0F017H, 00001H, 00000H		;//7037H

;PUR_TXLOAD:	B0MOV	H, #01H
;		B0MOV	L, #CC1000_FREQ_2A$L
;		B0MOV	X, #CC1000TXTABLE$H
;		B0MOV	Y, #CC1000TXTABLE$M
;		B0MOV	Z, #CC1000TXTABLE$L
;		BRA	@F
; *************************************************
;WRITE PRESET DATA TO CC1000
; *************************************************
PURTOCC1000:
		MOVLW      0X3A
		CALL 	WRT_CC1000_MAIN
		CALL 	DELAY500C
		MOVLW	0X3B
		CALL 	WRT_CC1000_MAIN
		CALL 	DELAY300C
		;

		MOVLW	1
		MOVWF	CC1000_ADR

		MOVLW	UPPER CC1000RXTABLE
		MOVWF	TBLPTRU
		MOVLW	HIGH CC1000RXTABLE
		MOVWF	TBLPTRH
		MOVLW	LOW CC1000RXTABLE
		MOVWF	TBLPTRL
PURTOCC1000_B:
		TBLRD*+
		MOVF	TABLAT,W
		MOVWF	CC1000_DATA

		MOVF	CC1000_ADR,W
		CALL 	WRITETOREGISTER

		INCF	CC1000_ADR
		MOVF	CC1000_ADR,W
		XORLW	0X14
		BNZ	PURTOCC1000_B

		MOVLW      0X25
		CALL 	WRT_CC1000_TEST4

WRT_CC1000_PRESCALER00:
		CLRF	CC1000_DATA
		MOVLW   LOW CC1000_PRESCALER
		BRA	WRITETOREGISTER

		;BRA	SETUPCC1000PD
; *****************************************************
;
; *****************************************************
WRT_CC1000_PA_POW00:
		CLRF	CC1000_DATA
		MOVLW   LOW CC1000_PA_POW
		BRA	WRITETOREGISTER
WRT_CC1000_PA_POW:
		MOVWF	CC1000_DATA
		MOVLW   LOW CC1000_PA_POW
		BRA	WRITETOREGISTER

WRT_CC1000_MODEM0:
		MOVWF	CC1000_DATA
		MOVLW   LOW CC1000_MODEM0
		BRA	WRITETOREGISTER
WRT_CC1000_MODEM1:
		MOVWF	CC1000_DATA
		MOVLW   LOW CC1000_MODEM1
		BRA	WRITETOREGISTER
WRT_CC1000_CURRENT:
		MOVWF	CC1000_DATA
		MOVLW   LOW CC1000_CURRENT
		BRA	WRITETOREGISTER
WRT_CC1000_TEST4:
		MOVWF	CC1000_DATA
		MOVLW   LOW CC1000_TEST4
		BRA	WRITETOREGISTER



WRT_CC1000_CAL:
		MOVWF	CC1000_DATA
		MOVLW   LOW CC1000_CAL
		BRA	WRITETOREGISTER

WRT_CC1000_PLL:
		MOVWF	CC1000_DATA
		MOVLW   LOW CC1000_PLL
		BRA	WRITETOREGISTER
; **************************************************
;----------------------------------------
;=========================================

⌨️ 快捷键说明

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