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

📄 rf_cc1000.asm

📁 一种多自由度智能机器人的设计全部资料上传!
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;******************************REC BIT		
	MOVLW	2*1			;START BIT
	XORWF	CSR3,W
	BZ	CHECK_BIT_HIGH
	
	MOVLW	2*10			;BYTE 2 HEAD
	XORWF	CSR3,W
	BZ	CHECK_BIT_HIGH				
			
	MOVLW	2*19			;BYTE 3 HEAD
	XORWF	CSR3,W
	BZ	CHECK_BIT_HIGH					
			
	MOVLW	2*28			;BYTE 4 HEAD
	XORWF	CSR3,W
	BZ	CHECK_BIT_HIGH				
			
	MOVLW	2*37			;BYTE 5 HEAD
	XORWF	CSR3,W
	BZ	CHECK_BIT_HIGH	
	
	MOVLW	2*46			;BYTE 5 HEAD
	XORWF	CSR3,W
	BZ	CHECK_BIT_HIGH		
				
;*************************
	RRCF	CSR2
	BTG	STATUS,C				
									
    	RRCF	CSR9,1
    	RRCF	CSR8,1
    	RRCF	CSR7,1
    	RRCF	CSR6,1
    	RRCF	CSR5,1	    			
;***************************************				
REC_RF_HALF_LOW_OK:
	RETLW	1		
CHECK_BIT_HIGH:		;BIT MUST 1
	MOVLW	00000010B
	XORWF	CSR2,W
	BZ	REC_RF_HALF_LOW_OK
REC_RF_HALF_LOW_ERROR:
	RETLW	0
;***************************************************
;***************************************************
;CHECK MANCHESTER FROM POWER DOWN
;****************************************************
REC_10MS:
     	RCALL	SET_CC1000_RX
	MOVLW	3; 8-12MS
	MOVWF	RX_TIME
	BCF     Manchester_ok_fg
	BCF     RX_OVER_FG
REC_10MS1	
	CLRF	CSR3
REC_10MS2:
	MOVLW	256-16		;>8 BIT 
	ADDWF	CSR3,W
	BC	DET_OK
	
	BTFSC	RX_OVER_FG
	BRA	DET_FAIL	;TIMER OVER


	BTFSC	RF_DCLK
	BRA	REC_10MS_RF_HIGH

	RCALL	GET_RF_DCLK_LOW	
	BZ	REC_10MS1	;>1024US ERROR	
	BRA	REC_10MS_RF_HIGH2

REC_10MS_RF_HIGH:	
	RCALL	GET_RF_DCLK_HIGH	
	BZ	REC_10MS1	;>1024US ERROR				
REC_10MS_RF_HIGH2:	
	MOVLW	RF_BIT_MIN		;MUST >100 US
	ADDWF	CSR4,W
	BNC	REC_10MS1
	MOVLW	RF_BIT_SHORT		;
	ADDWF	CSR4,W

	MOVLW	1
	BTFSC	STATUS,C
	MOVLW	2
	ADDWF	CSR3		
	BRA	REC_10MS2				
DET_OK:
	BSF     Manchester_ok_fg
	RETURN
DET_FAIL:
    	RCALL	SHUT_DOWN_CC1000
	RETURN
;************************************
;************************************
;***********************
; **************************************************
;	CC1000 WRITE TO A SINGLE CC1000 REGISTER
; **************************************************
;**********WRITE CC1000_DATA CC1000_ADR
;**********MODIFY BY LZY 2007OCT23
RESETCC1000:
		MOVLW      0X3A
		RCALL	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	KEYREG7
		RLCF	KEYREG7
		BCF	PALE
		RCALL 	WRITE_CC1000_8BIT1
		BSF	PALE
		MOVF	CC1000_DATA,W
;------------------------------------
WRITE_CC1000_8BIT:
	MOVWF	KEYREG7
WRITE_CC1000_8BIT1:
	MOVLW	8
	MOVWF	KEYREG6
WRITE_CC1000_8BIT2:
	BSF	PCLK

	BTFSS	KEYREG7,7
	BCF	PDATA
	BTFSC	KEYREG7,7
	BSF	PDATA

	RLNCF	KEYREG7
	BCF	PCLK

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

		MOVWF	KEYREG7
		RLCF	KEYREG7
		BCF	PALE
		RCALL 	WRITE_CC1000_8BIT1
		BSF	PALE
		clrwdt
		BSF	IOC_PDATA
READ_CC1000_8BIT:
	CLRF	CC1000_DATA
READ_CC1000_8BIT1:
	MOVLW	8
	MOVWF	KEYREG6
READ_CC1000_8BIT2:
	BCF	PCLK

	RLNCF	CC1000_DATA
	BTFSC	PDATA_R
	BSF	CC1000_DATA,0

	BSF	PCLK

	DECFSZ	KEYREG6
	BRA	READ_CC1000_8BIT2
	BCF	IOC_PDATA
	MOVF	CC1000_DATA,W
	RETURN

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


		MOVLW	192
		MOVWF	KEYREG0
CALIBRATECC10002:
		CALL	DELAY150C

		MOVLW      CC1000_CAL
		RCALL 	READTOREGISTER

		BTFSC	CC1000_DATA,3;@YZ.3
		BRA	CALIBRATECC10004


		DECFSZ	KEYREG0
		BRA	CALIBRATECC10002
	;/* END CALIBRATION			*/
CALIBRATECC10004:
		MOVLW      0X26
		RCALL	 	WRT_CC1000_CAL
				
		CALL	DELAY150C
		
		
		
		MOVLW   LOW   CC1000_LOCK
		RCALL 	READTOREGISTER
		
		BSF	CC1000LOCK_F
		andlw	0x01
		XORLW	0X01			;LOCK OK DATA
CALIBRATECC10004_ERROR:
		BTFSS	STATUS,Z
		BCF	CC1000LOCK_F	
		RETURN
		

	
; **************************************************
;
; **************************************************
SETUPCC1000PD:
	BANK_3
		MOVLW      0X3F
		RCALL	WRT_CC1000_MAIN
		
		BRA	WRT_CC1000_PA_POW00
SHUT_DOWN_CC1000:
		BCF	IOC_RF_DCLK
		CLRWDT
		BCF	RF_DCLK
		CLRWDT
		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
	BANK_3
   	BSF	CC1000TRX_F		;RX=0
   	BRA	POWER_ON_CC1000
 ;  	BSF	TE_C
;	RETURN
SET_CC1000_RX:
 ;  	BCF	TE_C
 	BANK_3

	BCF     RX_OVER_FG
	BCF     RX_OK_FG
   	BCF	CC1000TRX_F		;RX=0
   	;BRA	POWER_ON_CC1000
  ; 	BSF	RE_C

	;RETURN
;***********************************
POWER_ON_CC1000:
		BANK_3
		
		
							;BSF	MCU_OUT
		
		
		BSF	IOC_RF_DCLK
		CLRWDT
		BSF	RF_DCLK		
		CLRWDT
		
		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

		RCALL 	PURTOCC1000

		MOVLW      0X17
		BTFSC	CC1000TRX_F
		RCALL 	WRT_CC1000_MODEM0

			
		BRA	SETUPCC1000TRX


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

		CALL	DELAY_2MS
	;/* TURN ON BIAS GENERATOR */
		MOVLW      0X39
		BTFSC	CC1000TRX_F
		MOVLW      0X0F9
		RCALL 	WRT_CC1000_MAIN
	;/* WAIT FOR 200US */
		CALL 	DELAY300C
	;/* TURN ON PA FOR TX */
		BTFSS	CC1000TRX_F
		BRA	WAKEUPCC1000TOTRX2
		MOVLW      PA_VALUE
		RCALL 	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
		RCALL 	WRT_CC1000_PA_POW00
	;/* SWITCH INTO TX/RX */
SETUPCC1000TRX2:
		MOVLW      0X11
		BTFSC	CC1000TRX_F
		MOVLW      0X0E1
		RCALL 	WRT_CC1000_MAIN
	;/* USE TX/RX REFDIV SETTING */
		MOVLW      RXPLL
		BTFSC	CC1000TRX_F
		MOVLW      TXPLL
		RCALL 	WRT_CC1000_PLL
	;/* PROGRAM VCO CURRENT FOR TX/RX */
		MOVLW      RXCURRENT
		BTFSC	CC1000TRX_F
		MOVLW      TXCURRENT
		RCALL 	WRT_CC1000_CURRENT
	;/* WAIT 250US BEFORE MONITORING LOCK */
		CALL 	DELAY300C

				
				
		RCALL 	CALIBRATECC1000	
				;BCF	MCU_OUT
		;BTFSC	CC1000LOCK_F
		BZ	SETUPCC1000TRX14
		
		RCALL 	CALIBRATECC1000	
		;XORLW	LOCK_OK
		BZ	SETUPCC1000TRX14		
	
		RCALL 	CALIBRATECC1000	
SETUPCC1000TRX14:

					


		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
		RCALL 	WRT_CC1000_MAIN
		CALL 	DELAY500C
		MOVLW	0X3B
		RCALL 	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
		RCALL 	WRITETOREGISTER

		INCF	CC1000_ADR
		MOVF	CC1000_ADR,W
		XORLW	0X14
		BNZ	PURTOCC1000_B

		MOVLW      0X25
		RCALL 	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 + -