XN297L汇编驱动代码.docx
- 文档编号:2570918
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:53
- 大小:27.48KB
XN297L汇编驱动代码.docx
《XN297L汇编驱动代码.docx》由会员分享,可在线阅读,更多相关《XN297L汇编驱动代码.docx(53页珍藏版)》请在冰点文库上搜索。
XN297L汇编驱动代码
;**************************************************************************
;ProjectName:
;FileName:
TX&RX
;Author:
;Time:
2016.10.20
;Vesion:
v1.0
;格式有些不对,可以把代码拷贝到TXT文档里查看
;****************************************
#INCLUDEXXXX.H
;/********************XN297LdBmdefine:
updatewithpanchip********************/
#defineRF13dBm0x3F;;13dBm
#defineRF12dBm0x1F;;12dBm
#defineRF10dBm0X17;;10dBm
#defineRF8dBm0x15;;8dbm
#defineRF6dBm0x0D;;6dbm
#defineRF5dBm0x2c;;5dbm
#defineRF4dBm0x1C;;4dbm
#defineRF2dBm0x13;;2dbm
#defineRF0dBm0X0B;;0dBm
#defineRF_2dBm0x3A;;-3dBmOR-2dBm
#defineRF_6dBm0x0A;;-6dBm
#defineRF_10dBm0x21;;-10dBm
#defineRF_14dBm0x09;;-14dBm
#defineRF_18dBm0x01;;-18dBm
#defineRF_21dBm0x38;;-21dBm
#defineRF_24dBm0x10;;-24dBm
#defineRF_26dBm0x10;;-27dBm
#defineRF_30dBm0x00;;-30dBm
;/********************XN297LSPICOMMAND********************/
#defineR_REGISTER0x00;;SPIreadRFdata
#defineW_REGISTER0x20;;SPIwriteRFdata
#defineR_RX_PAYLOAD0x61;;ReadRXPayload
#defineW_TX_PAYLOAD0xA0;;WriteTXPayload
#defineFLUSH_TX0xE1;;FlushRXFIFO
#defineFLUSH_RX0xE2;;FlushTXFIFO
#defineREUSE_TX_PL0xE3;;ReuseTXPayload
#defineACTIVATE0x50;;ACTIVATE
#defineDEACTIVATE0x50;;DEACTIVATE
#defineR_RX_PL_WID0x60;;ReadwidthofRXdata
#defineW_ACK_PAYLOAD0xA8;;DatawithACK
#defineW_TX_PAYLOAD_NOACK0xB0;;TXPayloadnoACKRequest
#defineCE_FSPI_ON0xFD;;CEHIGH
#defineCE_FSPI_OFF0xFC;;CELOW
#defineRST_FSPI0x53;;RESET
#defineNOP_N0xFF
;/******************XN297LSPICONTROLREGISTER*******************/
#defineCONFIG0x00
#defineEN_AA0x01
#defineEN_RXADDR0x02
#defineSETUP_AW0x03
#defineSETUP_RETR0x04
#defineRF_CH0x05
#defineRF_SETUP0x06
#defineRF_STATUS0x07
#defineOBSERVE_TX0x08
#defineRPD0x09
#defineRX_ADDR_P00x0A
#defineRX_ADDR_P10x0B
#defineRX_ADDR_P20x0C
#defineRX_ADDR_P30x0D
#defineRX_ADDR_P40x0E
#defineRX_ADDR_P50x0F
#defineTX_ADDR0x10
#defineRX_PW_P00x11
#defineRX_PW_P10x12
#defineRX_PW_P20x13
#defineRX_PW_P30x14
#defineRX_PW_P40x15
#defineRX_PW_P50x16
#defineFIFO_STATUS0x17
#defineDEM_CAL0x19
#defineRF_CAL20x1A
#defineDEM_CAL20x1B
#defineDYNPD0x1C
#defineFEATURE0x1D
#defineRF_CAL0x1E
#defineBB_CAL0x1F
;/*************************XN297LBUST&ENHANCEDEFINE****************************************/
#defineTRANS_ENHANCE_MODE1;传输类型增强型
#defineTRANS_BURST_MODE0;传输类型普通型
;/*************************XN297LRATEDEFINE****************************************/
#defineDR_1M0X00;;通信速率1Mbps
#defineDR_2M0X40;;通信速率2Mbps
#defineDR_250K0XC0;;通信速率2Mbps
;/*************************XN297LDEFAULTVALUE****************************************/
#defineDEFAULT_CHANNEL78;公共频率:
MHz
#definePAYLOAD_WIDTH8;收发数据长度8bytes
#defineTRANSMIT_TYPETRANS_BURST_MODE;使用无应答普通模式
#defineRFdbmRF0dBm;TX发射功率dBm
;#defineRF_RATE_250K;选择通讯速率
#ifdefRF_RATE_250K
#defineDATA_RATEDR_250K;通信速率2MbpsDR_2MDR_1M
#else
#defineDATA_RATEDR_1M;通信速率2MbpsDR_2MDR_1M
#endif
#defineEN_PIPE_NUM0x01;Enablepipe0
#defineADD_WIDTH0x03;02---4byte03--5byteAddressNbytes
#defineSETUP_RETR_DELAY0X00;RETR0次ANDDelay0us
#defineEN_AA_PIPE_NUM0X00;NOACK00H
#defineDYNPD_DATA00H;disable动态长度PIPEN
#defineFEATURE_DATA20H;[5]:
CEBYCOMMAND;[4-3]:
64/32BYTES;[2]:
ENABLEDYNPD;[1]:
ENABLEACKPLD
;*************************DEFAULTADDRESS*********************************************
#defineADD_R00xCC
#defineADD_R10xCC
#defineADD_R20xCC
#defineADD_R30xCC
#defineADD_R40xCC
;;************************USERIODEFINED*********************************************/
;SEND
KEY_FEQUP0,6
KEY_BEQUP0,7
KEY_REQUP0,1
KEY_LEQUP0,0
KEY_SEQUP0,2
KEY_FUNEQUP0,3
;RECEIVE
F_PWMEQUP0,6
B_PWMEQUP0,7
MR1EQUP0,3
MLEQUP0,2
DETECEQUP1,5;S1
T_FEQUP0,0
T_BEQUP0,1
KEY_UPEQUP1,5
KEY_DWEQUP2,0
;*************************FCCSETDEFINED*********************************************
FCC_H1EQUP0,3;FCC高频模式
FCC_MEQUP0,7;FCC中频模式
FCC_LEQUP0,6;FCC低频模式
FCC_SEQUP0,2;FCC单载波模式
;*************************LEDIODEFINED*********************************************
;SEND
LED_COMEQUP1,5
TEST_PINEQUP1,4
;*************************2.4GSPI接口定义DEFINED***********************************
MOSI_OUTMACRO
SETBP1CL,3
CLRBP1CL,2
ENDM
MOSI_INMACRO
CLRBP1CL,3
CLRBP1CL,2
ENDM
CSNEQUP1,3
SCKEQUP1,2
MOSIEQUP1,1
MISOEQUP1,0
CEEQUP1,4
IRQEQUP2,2
;*************************FCC_MODESELECTPINDEFINED********************************
FCC_MODE_SELCETEQUP0,4
TX_RX_SELCETEQUP2,1
;*************************KSCANDATADEF*************************************
c_rkeycDEF.6;检测按键放开消抖次数6
c_keycDEF.5;检测按键按下消抖次数5
;;*************************用户全局变量******************************************
TCOUNTEQU?
;定时,主函数延时用
IRQ_WAIT_NUMEQU?
;IRQ循环计数
HOP_FREEQU?
;频点
CHINDEXEQU?
;下一个频点
;*********************SPI参数***********************
W_BUF0EQU?
W_BUF1EQU?
W_BUF2EQU?
W_BUF3EQU?
W_BUF4EQU?
W_BUF5EQU?
W_BUF6EQU?
W_BUF7EQU?
W_BUF8EQU?
W_BUF9EQU?
W_BUF10EQU?
W_BUF11EQU?
R_BUF0EQU?
R_BUF1EQU?
R_BUF2EQU?
R_BUF3EQU?
R_BUF4EQU?
R_BUF5EQU?
R_BUF6EQU?
R_BUF7EQU?
R_BUF8EQU?
R_BUF9EQU?
R_BUF10EQU?
R_BUF11EQU?
W_DATAEQU?
;;*************************用户临时变量******************************************
FLAGS_BAKEQU?
;08H;?
;中断保存FLAGS值用,临时
ACC_BAKEQU?
;0EH;?
;中断保存ACC值用,临时
DELAY_TEMP0EQU?
;0FH;?
;延时函数需要,临时
DELAY_TEMP1EQU?
;25H;?
;延时函数需要,临时
COUNTEQU?
;26H;?
;临时变量
TEMPEQU?
;27H;?
;临时变量
TEMPDATAEQU?
;2AH;?
;临时变量
TR_STATUSEQU?
;2BH;?
;RF状态变量;临时
;**************************标志位定义********************************************
;TX相关标志位
WORKEQU?
RECEIVE_FLAGEQUWORK,0;;接收到数据标志
BIND_BITEQUWORK,1
SEND_INGEQUWORK,2;;上一帧数据正在发送标志
RXTX_MODEEQUWORK,3;1为RX模式,0:
TX模式
FCC_MODE_SINGLEEQUWORK,4
FCC_SEND_DATAEQUWORK,5
HOLD_CHANNEL_CURRENTEQUWORK,6
ENTER_SEND_56EQUWORK,7
SEND_STB_FLAGEQU?
;发射对码过程标志
SEND_STB1_FEQUSEND_STB_FLAG,0
STEP_4_FLAGEQUSEND_STB_FLAG,1
ACK_SEND_OKEQUSEND_STB_FLAG,2
STB1EQUSEND_STB_FLAG,3;;发射对码的状态控制
STB2EQUSEND_STB_FLAG,4;
STB3EQUSEND_STB_FLAG,5;
FIRST_YS_FLAGEQUSEND_STB_FLAG,6;
CHECKDATA_OKEQUSEND_STB_FLAG,7;校验标志
;RX相关标志位
RX_RECE_FEQU?
;RX用到的标志
RXID_EQUEQURX_RECE_F,0
FACID_EQUEQURX_RECE_F,1
RX_ACK_FLAGEQURX_RECE_F,2
TXID_EQUEQURX_RECE_F,3
RX_ACKA1_FLAGEQURX_RECE_F,4
RX_ACKA0_FLAGEQURX_RECE_F,5
RX_HAVE50HEQURX_RECE_F,6
RX_HAVE51HEQURX_RECE_F,7
MOTOR_FEQU?
FRONT_FLAGEQUMOTOR_F,0
BACK_FLAGEQUMOTOR_F,1
RF_DATA_REC_AVILADEQUMOTOR_F,2;接收数据有效标志
SEN_REC_FLAGEQUMOTOR_F,3
BS_STATUS_FLAGEQUMOTOR_F,4;变身状态保持标志0为下降,1为上升
BS_STOP_MOVE_FLAGEQUMOTOR_F,5;变身状态停止
PWM_START_FEQUMOTOR_F,6
FOUT_FEQUMOTOR_F,7
SAVE_RAM1EQU?
SAVE_RAM2EQU?
SAVE_RAM3EQU?
;------------START----------------------
;****************************************
;****************************************
ORG07FFH
JPSTART
ORG0000H
JPSTART
ORG0001H
INT_SERVICE:
LDACC_BAK,A;中断现场保护
SWAPRACC_BAK
SWAPAFLAGS
LDFLAGS_BAK,A
INT_TMR2:
SNZBINT_EN,EN_T2;TMR2IE;;判断中断类型
JPINT_EXIT
SNZBINT_FLAG,F_T2;TMR2IF
JPINT_EXIT
CLRBINT_FLAG,F_T2
JPTIMER_2
;---------------------定时中断---------------------
TIMER_2:
INCRTCOUNT;;定时器0中断
LDIA.249
LDT2DATA,A;设置TMR2目标值
JPINT_EXIT
;---------------------ADC中断---------------------
;--------------------------------------------
;--------------------------------------------------
INT_EXIT:
SWAPAFLAGS_BAK;中断返回
LDFLAGS,A
SWAPAACC_BAK
RETI
;************************************************************
;************************************************************
;*******************系统初始化,I/O初始化,延时,清RAM,初始化RAM等**************
START:
NOP
NOP
START_NEXT:
CLRWDT
;-----------初始化系统寄存器-----------------
;关闭总中断,外设中断,清中断标志
CLRSYS_GEN;INTCON中断使能控制寄存器
CLRINT_EN;中断控制寄存器INT_EXT暂时没使用
;SETBWDTCON,0
;LDIA04H
;OPTIONTIMER0应用
;-----------初始化I/O------------------------
LDIAB'00000000';设置P0口各位P0.3,P0.2,P0.1,P0.0输入输出方式00:
上拉输入01:
输入10:
推挽输出11:
AN/EKY
LDP0CL,A;P03:
KEY_FUNP02:
KEY_SP01:
KEY_BP00:
KEY_F
LDIAB'00001000';P07:
KEY_RP06:
KEY_LP05:
NCP04:
FCC_MODE
LDP0CH,A
LDIAB'10101000';设置P13:
CSP12:
SCKP11:
MOSIP10:
MISO口各位输入输出方式
LDP1CL,A
LDIAB'10010010';P6XXXP5XXXLED_COMP4:
CEXX
LDP1CH,A
LDIAB'00000010';设置P22:
IRQX输入P21XXXTX/RXP20XXX口各位输入输出方式
LDP2C,A
CLRP0
CLRP1
CLRP2
;-----------延时250MS等待稳定(256*(4*256+5)+10)~250ms--------------
;---------------------------------------------------------------------
START_DELAY:
CLRDELAY_TEMP0
CLRDELAY_TEMP1
START_DELAY_LOOP:
CLRWDT
SZDECRDELAY_TEMP0
JPSTART_DELAY_LOOP
SZDECRDELAY_TEMP1
JPSTART_DELAY_LOOP
;-----------------------------------------------
;上电清所有通用RAM。
RAM通过STATUS.IRP位分2页
;地址范围:
00~2F30-7F
;--------------------------------------------
;-----------清通用寄存器BANK0--------------------------
CLR_RAM:
;FLAGS,4=0BANK0间接寻址清掉所有RAM
LDIA0FH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XN297L 汇编 驱动 代码