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

📄 rf_oper-basic routine.asm

📁 holtek mouse .asm firewave
💻 ASM
字号:



INIT_RF:
		CLR		TRSDAT_CTRL
		SET		TRINT_CTRL
		CLR		SPIEN_CTRL
		CLR		SPIEN
		CLR		TRRDY_CTRL
		CLR		TRRDY
		CLR		TRSDAT_CTRL
		CLR		TRSDAT
		CLR		TRSCLK_CTRL
		CLR		TRSCLK
		CLR		PSB_CTRL
		SET		PSB

		CALL	RF_RESET

		CALL	INIT_RF_REG


		RET


RF_RESET:
		CLR		PSB
		SET		TRRDY
		
		CALL	DELAY_120MS

		CLR		TRRDY
		CALL	DELAY_20US
		SET		PSB

		CALL	DELAY_120MS
		RET	

RF_REG_WRITE:
		SET		SPIEN
		CALL	DELAY_20US

		;WRITE R/W BIT, 1
		SET		TRSDAT
		SET		TRSCLK
		CLR		TRSCLK
		CLR		TRSDAT

		;ADDRESS PHASE
		MOV		A, 7
		MOV		RF_LCOUNT0, A
	WREGAP:
		SZ		RF_REG_ADDRESS.6
		SET		TRSDAT
		SET		TRSCLK
		CLR		TRSCLK
		CLR		TRSDAT
		RL		RF_REG_ADDRESS
		SDZ		RF_LCOUNT0
		JMP		WREGAP

		RL		RF_REG_ADDRESS

		;DATA PHASE
		MOV		A, 8
		MOV		RF_LCOUNT0, A
	WREGDP:
		SZ		RF_REG_DATA.7
		SET		TRSDAT
		SET		TRSCLK
		CLR		TRSCLK
		CLR		TRSDAT
		RL		RF_REG_DATA
		SDZ		RF_LCOUNT0
		JMP		WREGDP

		CLR		SPIEN

		RET


RF_REG_READ:
		SET		SPIEN
		CALL	DELAY_20US

		;WRITE R/W BIT, 1
		CLR		TRSDAT
		SET		TRSCLK
		CLR		TRSCLK

		;ADDRESS PHASE
		MOV		A, 7
		MOV		RF_LCOUNT0, A
	RREGAP:
		SZ		RF_REG_ADDRESS.6
		SET		TRSDAT
		SET		TRSCLK
		CLR		TRSCLK
		CLR		TRSDAT
		RL		RF_REG_ADDRESS
		SDZ		RF_LCOUNT0
		JMP		RREGAP

		RL		RF_REG_ADDRESS

		;DATA PHASE
		CLR		RF_REG_DATA
		MOV		A, 8
		MOV		RF_LCOUNT0, A
		
		;TURNCATE DATA PIN FROM OUTPUT TO INPUT
		SET		TRSDAT_CTRL
		
	RREGDP:
		RL		RF_REG_DATA
		SZ		TRSDAT
		SET		RF_REG_DATA.0
		SET		TRSCLK
		CLR		TRSCLK
		SDZ		RF_LCOUNT0
		JMP		RREGDP

		CLR		SPIEN

		CLR		TRSDAT_CTRL


		RET

RF_FIFO_WRITE:
		MOV		A, RF_DATALNG
		MOV		RF_LCOUNT1, A
		MOV		A, RF_OUTBUFF
		MOV		MP0, A

		CLR		TRSDAT
		CLR		TRSCLK

		SET		TRRDY
		CALL 	DELAY_20US

		;DATA PHASE
	WFIFOOLP:
		MOV		A, 8
		MOV		RF_LCOUNT0, A
	WFIFOILP:
		SZ		ID0.7
		SET		TRSDAT
		SET		TRSCLK
		CLR		TRSCLK
		CLR		TRSDAT
		RL		ID0
		SDZ		RF_LCOUNT0
		JMP		WFIFOILP
		INC		MP0
		SDZ		RF_LCOUNT1
		JMP		WFIFOOLP		
		
		;DUMMY CYCLE : 3-BIT
		CLR		TRSDAT
		SET		TRSCLK
		CLR		TRSCLK
		SET		TRSCLK
		CLR		TRSCLK
		SET		TRSCLK
		CLR		TRSCLK
		
		CLR		TRRDY		

	RFWFIFOWTRINT:
		SNZ		TRINT
		JMP		RFWFIFOWTRINT
		
		RET


RF_FIFO_READ:
		MOV		A, RF_DATALNG
		MOV		RF_LCOUNT1, A
		MOV		A, RF_INBUFF
		MOV		MP0, A

		;TURNCATE TRSDAT AS INPUT
		SET		TRSDAT_CTRL
		
		;PRE-DUMMY CYCLE : 2-BIT
		SET		TRSCLK
		CLR		TRSCLK
		SET		TRSCLK
		CLR		TRSCLK		

		;DATA PHASE
	RFIFOOLP:
		CLR		ID0
		MOV		A, 8
		MOV		RF_LCOUNT0, A
	RFIFOILP:
		RL		ID0
		SZ		TRSDAT
		SET		ID0.0
		SET		TRSCLK
		CLR		TRSCLK
		SDZ		RF_LCOUNT0
		JMP		RFIFOILP
		INC		MP0
		SDZ		RF_LCOUNT1
		JMP		RFIFOOLP		
		
		;DUMMY CYCLE : 3-BIT
		CLR		TRSDAT
		SET		TRSCLK
		CLR		TRSCLK
		SET		TRSCLK
		CLR		TRSCLK
		SET		TRSCLK
		CLR		TRSCLK
		
		CLR		TRSDAT_CTRL		
		
		RET

;DELAY ABOUT 20US
DELAY_20US:
		MOV		A, 30
		
	DELAY_LOOP:
		SDZ		ACC
		JMP		DELAY_LOOP	
	
		RET

DELAY_120MS:
		MOV		A, 4
		MOV		RF_LCOUNT0, A

	DELAY_120MS_OLP:
		MOV		A, 10
		MOV		RF_LCOUNT1, A
		
	DELAY_120MS_OUTLOOP:
		SET		RF_LCOUNT2

	DELAY_120MS_INLOOP:
		SDZ		RF_LCOUNT2
		JMP		DELAY_120MS_INLOOP

		SDZ		RF_LCOUNT1
		JMP		DELAY_120MS_OUTLOOP

		SDZ		RF_LCOUNT0
		JMP		DELAY_120MS_OLP

		RET


RF_REG_VALUE .SECTION AT 0100H 'CODE'

INIT_RF_REG:
		MOV		A, RF_REG_TABLE
		MOV		TBLP, A

		CLR		RF_REG_ADDRESS

	INIT_RF_REG_LOOP:
		TABRDC	RF_REG_DATA
		CALL	RF_REG_WRITE
		INC		TBLP
		INC		RF_REG_ADDRESS
		SNZ		RF_REG_ADDRESS.7
		JMP		INIT_RF_REG_LOOP

		CLR		RF_REG_ADDRESS

		RET


RF_REG_TABLE:
;D2						078h
;		0		1		2		3		4		5		6		7
DC		02AH,	01BH,	068H,	007H,	000H,	007H,	030H,	023H	;0
DC		003H,	096H,	00FH,	00FH,	000H,	000H,	033H,	044H	;8
DC		044H,	000H,	000H,	000H,	000H,	0B4H,	000H,	022H	;16
;-------------------------------------------------------------------------------
DC		004H,	03FH,	003H,	000H,	000H,	000H,	000H,	000H	;24
DC		03FH,	000H,	000H,	000H,	000H,	002H,	02FH,	01FH	;32
DC		00DH,	00FH,	007H,	001H,	019H,	000H,	000H,	000H	;40
DC		0BFH,	080H,	0B7H,	0F4H,	024H,	000H,	00BH,	05CH	;48
DC		042H,	0ABH,	015H,	002H,	01BH,	001H,	01BH,	001H	;56
DC		013H,	001H,	031H,	073H,	00AH,	001H,	000H,	000H	;64
DC		08CH,	066H,	0F0H,	0BFH,	018H,	046H,	01DH,	026H	;72
DC		04CH,	0A8H,	014H,	006H,	01AH,	007H,	09AH,	025H	;80
DC		030H,	02FH,	00AH,	017H,	0F0H,	0FEH,	0FEH,	0FFH	;88
DC		000H,	022H,	014H,	00FH,	014H,	055H,	0BBH,	0B9H	;96
DC		088H,	087H,	057H,	000H,	000H,	000H,	000H,	000H	;104
DC		000H,	000H,	000H,	000H,	000H,	000H,	000H,	07CH	;112
DC		002H,	03FH,	004H,	000H,	030H,	000H,	002H,	058H	;120


⌨️ 快捷键说明

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