📄 rf_oper-basic routine.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 + -