📄 a60_mf6210.asm
字号:
;***************************************************************************
;<<<<<<<<<<<<<<<<<<<<2.4GRF_MF6210模块驱动子程序>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;***************************************************************************
;===========================================================================
;所用项目: 2.4G_TX
;包含函数:
; 1.MMF6210_Initial ;MF6210模块初始化
; 2.MMF6210_DATA_TX ;MF6210发送输数据
; 3.MMF6210_COMM_SEND ;从SPI口发送3字节的数据,并接收3字节的数据
; 4.MMF6210_WR_DATA ;从MF6210口读写一个字节的数据
; 5.MMF6210_DELAY_1MS ;延时1MS
; 6.TAB_MF6210_RFIC_REG ;MF6210RFIC寄存器,初始化表
; 7.TAB_MF6210_FRAMER_REG ;MF6210FRAMER寄存器,初始化表
;===========================================================================
;修改日期:2008/02/26
;程序员:Wangbo
;===========================================================================
;1. MF6210模块初始化
MMF6210_Initial:
MACRO_MF6210_MOSI_RESET_L
JSR MMF6210_DELAY_1MS
MACRO_MF6210_MOSI_RESET_H
JSR MMF6210_DELAY_1MS
JSR MMF6210_DELAY_1MS
JSR MMF6210_DELAY_1MS ;等待晶振稳定
JSR MMF6210_DELAY_1MS
JSR MMF6210_DELAY_1MS
;---------------------------------------------
LDX #0
SMF6210_Initial_FRAME_REG:
LDA TAB_MF6210_FRAMER_REG,X
STA gMF6210_Send_DATA
INX
LDA TAB_MF6210_FRAMER_REG,X
STA gMF6210_Send_DATA+1 ;初始化Frame reg
INX
LDA TAB_MF6210_FRAMER_REG,X
STA gMF6210_Send_DATA+2
JSR MMF6210_COMM_SEND
INX
;------------------------------
CPX #33
BCC SMF6210_Initial_FRAME_REG
;---------------------------------------------
JSR MMF6210_DELAY_1MS ;等待RFIC自动校正
JSR MMF6210_DELAY_1MS
;---------------------------------------------
LDX #0
SMF6210_Initial_REIC_REG:
LDA TAB_MF6210_RFIC_REG,X
STA gMF6210_Send_DATA
INX
LDA TAB_MF6210_RFIC_REG,X
STA gMF6210_Send_DATA+1 ;初始化RFIC reg
INX
LDA TAB_MF6210_RFIC_REG,X
STA gMF6210_Send_DATA+2
JSR MMF6210_COMM_SEND
INX
JSR MMF6210_DELAY_5US
;------------------------------
CPX #72
BCC SMF6210_Initial_REIC_REG
;---------------------------------------------
SMF6210_Initial_RTS:
STZ gMF6210_Send_DATA
RTS
;===========================================================================
;4. 从SPI口发送3字节的数据,并接收3字节的数据
; gMF6210_Send_BUFF(将发送的数据)发送数据,
; 并接收状态数据,存于gMF6210_Receive_State
MMF6210_COMM_SEND:
PHX
;-------------
MACRO_MF6310_Initial_State
MACRO_MF6210_SS_L
LDX #0
SMF6210_COMM_SEND_LP:
LDA gMF6210_Send_DATA,X
STA gMF6210_Send_BUFF
JSR MMF6210_WR_DATA
;---------------------------
LDA gMF6210_Receive_BUFF
STA gMF6210_Receive_State,X
;---------------------------------------------------
INX
CPX #3
BCC SMF6210_COMM_SEND_LP
MACRO_MF6210_SS_H
;-------------
PLX
RTS
;===========================================================================
;4. 从MF6210口读写一个字节的数据
; MF6210_SS已拉低
; 发送的数据存于gMF6210_Send_BUFF中
; 接收到的数据存于gMF6210_Receive_BUFF中
;--------------------------------------------------------
MMF6210_WR_DATA:
LDA #80H
STA gMF6210_TRAN_NUM
STZ gMF6210_Receive_BUFF
SMF6210_WR_DATA_LOOP:
MACRO_MF6210_SCLK_L
;-------------------------------------------一个周期
LDA gMF6210_Send_BUFF
BIT gMF6210_TRAN_NUM
BNE SMF6210_WR_DATA_LOOP_SEND
;---------------------------------------------------
MACRO_MF6210_MOSI_L ;写入MOSI
BRA SMF6210_WR_DATA_LOOP_RECE
SMF6210_WR_DATA_LOOP_SEND:
MACRO_MF6210_MOSI_H
;---------------------------------------------------
SMF6210_WR_DATA_LOOP_RECE:
MACRO_MF6210_SCLK_H
;---------------------------------------------------
ASL gMF6210_Receive_BUFF
LDA !Mac_MF6210_PORT
BIT #Mac_MF6210_MISO ;读取MISO
BEQ SMF6210_WR_DATA_LOOP_CMP
LDA #01H
TSB gMF6210_Receive_BUFF
;---------------------------------------------------
SMF6210_WR_DATA_LOOP_CMP:
;---------------------------------------------------
LSR gMF6210_TRAN_NUM
BCC SMF6210_WR_DATA_LOOP
;---------------------------------------------------
MACRO_MF6210_SCLK_L
JSR MMF6210_DELAY_5US
RTS
;===========================================================================
;5.延时1MS
MMF6210_DELAY_1MS:
LDA #01H
STA !WDTC
LDA #200
SMF6210_DELAY_1MS_LP:
NOP ;0.5uS
NOP ;0.5uS
;--------
NOP
NOP
;--------
NOP
NOP
;--------
NOP
NOP
;--------
NOP
NOP
;--------
DEC A
BNE SMF6210_DELAY_1MS_LP
RTS
;====================================================================
;13.延时5US
MMF6210_DELAY_5US:
LDA #01H
STA !WDTC
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RTS
;===========================================================================
;6. MF6210RFIC寄存器,初始化表
TAB_MF6210_RFIC_REG:
DB 09H, 21H, 82H ;REG9 0
DB 00H, 35H, 4DH ;REG0 1
DB 02H, 1EH, 01H ;REG2 2
DB 04H, BCH, F0H ;REG4 3
DB 05H, 00H, A1H ;REG5 4
DB 07H, 12H, 4CH ;REG7 5
DB 08H, 80H, 00H ;REG8 6
DB 0AH, 00H, 04H ;REG10 7
DB 0BH, 40H, 41H ;REG11 8
DB 0CH, 80H, 00H ;REG12 9
DB 0DH, 00H, 00H ;REG13 10
DB 0EH, 16H, 9BH ;REG14 11
DB 0FH, 0DH, EDH ;REG15 12
DB 10H, B0H, 00H ;REG16 13
DB 12H, E0H, 00H ;REG18 14
DB 13H, A1H, 14H ;REG19 15
DB 14H, 81H, 95H ;REG20 16
DB 15H, 69H, 62H ;REG21 17
DB 16H, 00H, 02H ;REG22 18
DB 17H, 00H, 02H ;REG23 19
DB 18H, B1H, 40H ;REG24 20
DB 19H, A8H, 0FH ;REG25 21
DB 1AH, 3EH, 07H ;REG26 22
DB 1CH, 58H, 00H ;REG28 23
;===========================================================================
;7. MF6210FRAMER寄存器,初始化表
TAB_MF6210_FRAMER_REG:
DB 30H, 98H, 00H ;REG48 1
DB 31H, FFH, 8FH ;REG49 2
DB 32H, 80H, 18H ;REG50 3
DB 33H, 80H, 56H ;REG51 4
DB 34H, 4EH, F6H ;REG52 5
DB 35H, F6H, F5H ;REG53 6
DB 36H, 18H, 5CH ;REG54 7
DB 37H, D6H, 51H ;REG55 8
DB 38H, 44H, 44H ;REG56 9
DB 39H, E0H, 00H ;REG57 10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -