📄 rf收发汇编参考代码.asm
字号:
*******************************************************************************/
;---------------------------------------------------------------------
#include "usb_define.ash"
#include "user_reg.ash"
;---------------------------------------------------------------------
;---------------------------------------------------------------------
#include "U83-KB+Mouse.asm"
extern Delay_100us_RAM1
;---------------------------------------------------------------------
;---------------------------------------------------------------------
#include "USB_Report.asm"
extern ID_TABLE
;---------------------------------------------------------------------
;---------------------------------------------------------------------
ORG 0X0500 //PAGE1
;---------------------------------------------------------------------
FRAME_TABLE: // other Register the default value equal recommended value
ADDAR PCL, R
RETIA 020H // Reg32
RETIA 0F0H
RETIA 000H // 32 Byte Sync Word// NRZ,no FEC
RETIA 021H // Reg33
RETIA 03FH
RETIA 0C7H // Configures packet sequencing
RETIA 022H // Reg34
RETIA 020H
RETIA 000H // Configures packet sequencing
RETIA 023H // Reg35
RETIA 003H
RETIA 020H // AutoACK max TX retries = 3 ,MISO is tri-state when SPI_SS = 1
RETIA 024H // Reg36
RETIA 003H
RETIA 080H // Sync Word
RETIA 025H // Reg37
RETIA 003H
RETIA 080H // Sync Word
RETIA 026H // Reg38
RETIA 05AH
RETIA 05AH // Sync Word
RETIA 027H // Reg39
RETIA 003H
RETIA 080H // Sync Word
RETIA 028H // Reg40
RETIA 044H
RETIA 002H // Configure FIFO flag,sync threshold
RETIA 029H // Reg41
RETIA 0E0H
RETIA 000H // CRC on,SCRAMBLE off,1st byte is packet length
/*
RETIA 02AH // Reg42
RETIA 0FDH
RETIA 06BH //
RETIA 02BH // Reg43
RETIA 000H
RETIA 00FH // Configure scan RSSI
RETIA 032H // Reg50
RETIA 000H
RETIA 000H
;---------------------------------------------------------------------
RETIA 000H // Reg0
RETIA 06FH
RETIA 0E0H //
RETIA 001H // Reg1
RETIA 056H
RETIA 081H
*/
RETIA 002H // Reg2
RETIA 066H
RETIA 017H
RETIA 004H // Reg4
RETIA 09CH
RETIA 0C9H
RETIA 005H // Reg5
RETIA 066H
RETIA 037H
RETIA 007H // Reg7
RETIA 000H
RETIA 04CH // Use for setting RF freqency
RETIA 008H // Reg8
RETIA 06CH
RETIA 090H
RETIA 009H // Reg9
RETIA 018H
RETIA 000H // Sets TX power level
/*
RETIA 00AH // Reg10
RETIA 07FH
RETIA 0FDH // Crystal osc. enable
*/
RETIA 00BH // Reg11
RETIA 000H
RETIA 008H // RSSI enable
/*
RETIA 00CH // Reg12
RETIA 000H
RETIA 000H
*/
RETIA 00DH // Reg13
RETIA 048H
RETIA 0BDH
RETIA 016H // Reg22
RETIA 000H
RETIA 0FFH
/*
RETIA 017H // Reg23
RETIA 080H
RETIA 005H
*/
RETIA 018H // Reg24
RETIA 000H
RETIA 067H
/*
RETIA 019H // Reg25
RETIA 016H
RETIA 059H
*/
RETIA 01AH // Reg26
RETIA 019H
RETIA 0E0H
RETIA 01BH // Reg27
RETIA 010H
RETIA 0C0H // NO crystal trim
/*
RETIA 01CH // Reg28
RETIA 018H
RETIA 000H
*/
RETIA 0FFH
;---------------------------------------------------------------------
Mouse_Normal_Channle_Table:
ADDAR PCL, R
RETIA 002 // freq:2402 ;@0X02
RETIA 030 // freq:2428 ;@0X1E
RETIA 068 // freq:2456 ;@0X44
RETIA 008 // freq:2406 ;@0X08
RETIA 033 // freq:2433 ;@0X21
RETIA 072 // freq:2461 ;@0X48
RETIA 015 // freq:2410 ;@0X0F
RETIA 040 // freq:2438 ;@0X28
RETIA 077 // freq:2466 ;@0X4D
Key_Normal_Channle_Table:
ADDAR PCL, R
RETIA 003 // freq:2402 ;@0X03
RETIA 032 // freq:2428 ;@0X20
RETIA 065 // freq:2456 ;@0X41
RETIA 010 // freq:2406 ;@0X0A
RETIA 035 // freq:2433 ;@0X23
RETIA 070 // freq:2461 ;@0X46
RETIA 018 // freq:2410 ;@0X12
RETIA 044 // freq:2438 ;@0X28
RETIA 075 // freq:2466 ;@0X4B
Mouse_Code_Channle_Table:
ADDAR PCL, R
RETIA 004 // freq:2406 ;@0X04
RETIA 037 // freq:2438 ;@0X25
RETIA 074 // freq:2478 ;@0X4A
Key_Code_Channle_Table:
ADDAR PCL, R
RETIA 005 // freq:2406 ;@0X05
RETIA 038 // freq:2438 ;@0X26
RETIA 076 // freq:2478 ;@0X4C
/*********************************************************************
* Function: Write SPI Register
* Input: SPI_Addr, SPI_Data_High, SPI_Data_Low
* Output: None
*********************************************************************/
Write_SPI_Reg:
; BCR RF_CSn // /SS =0
;{
MOVIA BCR_RF_CSn
ANDAR PORTA, R
;}
MOVR SPI_Addr, A
CALL WriteSPI
NOP
MOVR SPI_Data_High, A
CALL WriteSPI
NOP
MOVR SPI_Data_Low, A
CALL WriteSPI
NOP
; BSR RF_CSn // /SS =1
;{
MOVIA BSR_RF_CSn
IORAR PORTA, R
;}
RETURN
/*********************************************************************
* Function: Read SPI Register
* Input: SPI_Addr
* Output: SPI_Data_High,SPI_Data_Low
*********************************************************************/
Read_SPI_Reg:
; BCR RF_CSn // /SS =0
;{
MOVIA BCR_RF_CSn
ANDAR PORTA, R
;}
MOVR SPI_Addr, A
IORIA 080H
CALL WriteSPI
NOP
CALL ReadSPI
MOVAR SPI_Data_High
NOP
CALL ReadSPI
MOVAR SPI_Data_Low
NOP
; BSR RF_CSn // /SS =1
;{
MOVIA BSR_RF_CSn
IORAR PORTA, R
;}
RETURN
/*********************************************************************
* Function: Write SPI communication subroutine Falling edge
* Input: ACC
* Output: None
* I/O Software SPI (PA7:SCK PA6:SDO PA5:SDI)
*********************************************************************/
WriteSPI:
MOVAR SPI_BUF
MOVIA 008H
MOVAR CYC_CNT
WRITE_SPI_1:
; BSR RF_SCK
;{
MOVIA BSR_RF_SCK
IORAR PORTA, R
;}
RLR SPI_BUF,R
BTRSC STATUS,C_B
GOTO SET_SPI_MOSI
; BCR RF_MOSI
;{
MOVIA BCR_RF_MOSI
ANDAR PORTA, R
;}
GOTO WRITE_SPI_COUNT_DEC
SET_SPI_MOSI:
; BSR RF_MOSI
;{
MOVIA BSR_RF_MOSI
IORAR PORTA, R
;}
NOP
WRITE_SPI_COUNT_DEC: // FIRST HIGT BIT
; BCR RF_SCK
;{
MOVIA BCR_RF_SCK
ANDAR PORTA, R
;}
NOP
DECRSZ CYC_CNT,R
GOTO WRITE_SPI_1
NOP
; BCR RF_MOSI
;{
MOVIA BCR_RF_MOSI
ANDAR PORTA, R
;}
RETURN
/*********************************************************************
* Function: Read SPI communication subroutine Falling edge
* Input: None
* Output: SPI Data
* I/O Software SPI (PA7:SCK PA6:SDO PA5:SDI)
*********************************************************************/
ReadSPI:
CLRR SPI_BUF
MOVIA 008H
MOVAR CYC_CNT
READ_SPI_1:
; BSR RF_SCK
;{
MOVIA BSR_RF_SCK
IORAR PORTA, R
;}
NOP
NOP
NOP
NOP
NOP
; BCR RF_SCK
;{
MOVIA BCR_RF_SCK
ANDAR PORTA, R
;}
; BSR RF_MISO
;{
MOVIA BSR_RF_MISO
IORAR PORTA, R
;}
BTRSS RF_MISO
GOTO CLR_STATUS_C
BSR STATUS,C_B
GOTO READ_SPI_MISO
CLR_STATUS_C:
BCR STATUS,C_B
READ_SPI_MISO:
RLR SPI_BUF,R
DECRSZ CYC_CNT,R
GOTO READ_SPI_1
MOVR SPI_BUF,A
RETURN
;---------------------------------------------------------------------
;---------------------------------------------------------------------
RF_Module_Reset:
; BCR RF_RST //Reset = 0
;{
MOVIA BCR_RF_RST
ANDAR PORTA, R
;}
MOVIA 020D
CALL Delay_100us_RAM1
; BSR RF_RST // RESET=1
;{
MOVIA BSR_RF_RST
IORAR PORTA, R
;}
MOVIA 010D
CALL Delay_100us_RAM1
RETURN
/*********************************************************************
* Function: RF Initialize SubRoutine
* Input: None
* Output: None
*********************************************************************/
Init_RF_Module:
CALL RF_Module_Reset
CALL RF_Module_Reset
CALL RF_Module_Reset
BCR Test_Error_B
CALL Init_FrameReg // load FRAMER TABLE send
MOVIA 001D
CALL Delay_100us_RAM1
CALL TEST_Initial_RF
BTRSC Test_Error_B
GOTO Init_RF_Module
CALL RF_Enter_Idle_State
BSR RF_Init_OK_B
CALL RF_Set_Commun_SyncWord
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -