📄 rf_oper.asm
字号:
INCLUDE REG_DEF.INC
PUBLIC INIT_RF
PUBLIC RF_CHANGE_TO_TX
PUBLIC RF_CHANGE_TO_RX
PUBLIC RF_REFILL_DATA
PUBLIC RF_REG_WRITE
PUBLIC RF_REG_READ
PUBLIC RF_FIFO_WRITE
PUBLIC RF_FIFO_READ
PUBLIC WAIT_FSP
PUBLIC CHECK_FSP
PUBLIC DELAY_120MS
PUBLIC TEST_RF
REOPER_CODE .SECTION 'CODE'
TEST_RF:
;================CONTINUES RF READ IN TEST===============
; MOV A, 8
; MOV RF_DATALNG, A
;
; RUN_AGAIN:
; SET TRRDY
;
; WAIT:
; SNZ TRINT
; JMP WAIT
;
; CLR TRRDY
; CALL RF_FIFO_READ
; JMP RUN_AGAIN
;
;==================END HERE=============================
;==============CONTINUES RF WRITE OUT TEST==============
;
; RUN_AGAIN:
; MOV A, RF_OUTBUFF
; MOV MP0, A
;
; MOV A, 8
; MOV RF_DATALNG, A
; MOV RF_LCOUNT0, A
;
; FILLLOOP:
; MOV A, RF_LCOUNT0
; MOV ID0, A
;
; INC MP0
;
; SDZ RF_LCOUNT0
; JMP FILLLOOP
;
; CALL RF_FIFO_WRITE
; WAIT:
; SNZ TRINT
; JMP WAIT
;
; JMP RUN_AGAIN
;==============================END HERE==================
RET
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
MOV A, 002H
MOV RF_CHANNEL, A
MOV A, 00AH
MOV RF_DATALNG, A
CLR NEXT_1_CHANNEL
CLR NEXT_2_CHANNEL
CLR NEXT_3_CHANNEL
CLR NEXT_4_CHANNEL
CLR NEXT_5_CHANNEL
; THE RANGE OD THE SERIAL NUMBER OF THE DATA PACKET IS 1~255
MOV A, 1
MOV RF_MSERIAL, A
RET
WAIT_FSP:
SZ POWER_MODE.2
JMP WAIT
SNZ POWER_MODE.0
SET TRRDY
WAIT:
SZ TRINT
JMP WFSP_GOT_FSP
MOV A, 80
XOR A, TIMER_COUNT
SZ ACC
JMP WAIT
MOV A, RF_INBUFF
MOV MP0, A
CLR ID0
JMP LOST_FSP
JMP WAIT
LOST_FSP:
WFSP_GOT_FSP:
CLR TRRDY
CLR TIMER_ENABLE
CLR TIMER_COUNT
MOV A, 105
MOV TMR, A
SET TIMER_ENABLE
CALL RF_FIFO_READ
RET
CHECK_FSP:
MOV A, RF_INBUFF
MOV MP0, A
MOV A, 0F0H
XOR A, ID0
SZ ACC
JMP NOT_VALID_FSP
SET VALID_FSP
INC MP0
MOV A, ID0
MOV RF_FSP_COUNT, A
INC MP0
CLR RESEND_DATA_REQUIRED
MOV A, ID0
AND A, 003H
XOR A, 003H
SZ ACC
JMP MAYBE_RESEND_CHECK
JMP NO_RESEND_CHECK
MAYBE_RESEND_CHECK:
MOV A, 1
XOR A, RESEND_COUNT
SZ ACC
JMP RESEND_CHECK
CLR RESEND_COUNT
JMP NO_RESEND_CHECK
RESEND_CHECK:
SET RESEND_DATA_REQUIRED
INC RESEND_COUNT
NO_RESEND_CHECK :
INC MP0
MOV A, ID0
MOV NEXT_1_CHANNEL, A
INC MP0
MOV A, ID0
MOV NEXT_2_CHANNEL, A
INC MP0
MOV A, ID0
MOV NEXT_3_CHANNEL, A
INC MP0
MOV A, ID0
MOV NEXT_4_CHANNEL, A
INC MP0
MOV A, ID0
MOV NEXT_5_CHANNEL, A
SET DONGLE_LINKED
JMP EXIT_CHECK_FSP
NOT_VALID_FSP:
CLR VALID_FSP
EXIT_CHECK_FSP:
RET
RF_CHANGE_TO_RX:
MOV A, RF_CHANNEL
MOV RF_REG_DATA, A
CLR RF_REG_ADDRESS
CALL RF_REG_WRITE
RET
RF_CHANGE_TO_TX:
MOV A, RF_CHANNEL
OR A, 080H
MOV RF_REG_DATA, A
CLR RF_REG_ADDRESS
CALL RF_REG_WRITE
RET
RF_REFILL_DATA:
SNZ VALID_FSP
JMP NOT_INC_MSERIAL
SZ RESEND_DATA_REQUIRED
JMP NOT_INC_MSERIAL
INC RF_MSERIAL
SZ RF_MSERIAL
JMP NOT_INC_AGAIN
INC RF_MSERIAL
NOT_INC_AGAIN:
NOT_INC_MSERIAL:
MOV A, RF_OUTBUFF
MOV MP0, A
MOV A, 0E1H
MOV ID0, A
INC MP0
MOV A, RF_MSERIAL
MOV ID0, A
INC MP0
MOV A, RF_FSP_COUNT
MOV ID0, A
INC MP0
MOV A, KEY_STATUS ;FOR BUTTONS
MOV ID0, A
INC MP0
MOV A, MONTION_X
MOV ID0, A
INC MP0
MOV A, MONTION_Y
MOV ID0, A
INC MP0
MOV A, Z_WHEEL ;FOR Z-WHEEL
MOV ID0, A
INC MP0
SNZ VALID_FSP
JMP NOT_CLR_Z
SZ RESEND_DATA_REQUIRED
JMP NOT_CLR_Z
CLR Z_WHEEL
NOT_CLR_Z:
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:
SZ ID0.7
SET TRSDAT
SET TRSCLK
CLR TRSCLK
CLR TRSDAT
SZ ID0.6
SET TRSDAT
SET TRSCLK
CLR TRSCLK
CLR TRSDAT
SZ ID0.5
SET TRSDAT
SET TRSCLK
CLR TRSCLK
CLR TRSDAT
SZ ID0.4
SET TRSDAT
SET TRSCLK
CLR TRSCLK
CLR TRSDAT
SZ ID0.3
SET TRSDAT
SET TRSCLK
CLR TRSCLK
CLR TRSDAT
SZ ID0.2
SET TRSDAT
SET TRSCLK
CLR TRSCLK
CLR TRSDAT
SZ ID0.1
SET TRSDAT
SET TRSCLK
CLR TRSCLK
CLR TRSDAT
SZ ID0.0
SET TRSDAT
SET TRSCLK
CLR TRSCLK
CLR TRSDAT
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
SZ TRSDAT
SET ID0.7
SET TRSCLK
CLR TRSCLK
SZ TRSDAT
SET ID0.6
SET TRSCLK
CLR TRSCLK
SZ TRSDAT
SET ID0.5
SET TRSCLK
CLR TRSCLK
SZ TRSDAT
SET ID0.4
SET TRSCLK
CLR TRSCLK
SZ TRSDAT
SET ID0.3
SET TRSCLK
CLR TRSCLK
SZ TRSDAT
SET ID0.2
SET TRSCLK
CLR TRSCLK
SZ TRSDAT
SET ID0.1
SET TRSCLK
CLR TRSCLK
SZ TRSDAT
SET ID0.0
SET TRSCLK
CLR TRSCLK
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, 8
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
MOV A, 018H
XOR A, RF_REG_ADDRESS
SZ ACC
JMP INIT_RF_REG_LOOP
CLR RF_REG_ADDRESS
RET
RF_REG_TABLE:
; 0 1 2 3 4 5 6 7
DC 002H, 01BH, 068H, 007H, 000H, 009H, 030H, 023H ;0
DC 003H, 054H, 00FH, 00FH, 000H, 000H, 0ABH, 044H ;8
DC 044H, 000H, 000H, 000H, 006H, 0B4H, 000H, 022H ;16
;-------------------------------------------------------------------------------
DC 004H, 039H, 003H, 000H, 000H, 000H, 000H, 000H ;24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -