📄 my_nrf905.h
字号:
//nrf905 control IO define;
sbit CSN = P1^3;
sbit MOSI = P1^5;
sbit MISO = P1^6;
sbit SCK = P1^7;
sbit DR = P3^2;
sbit AM = P3^3;
sbit CD = P3^4;
sbit PWR_UP = P3^5;
sbit TRX_CE = P3^6;
sbit TX_EN = P3^7;
sbit RERFOK = P0^3;
/*******标志位设置************/
bit AMflag;
bit delay_flag;
bit rec_ok; //串口单个字节接收是否完成的标志位
bit err_flag; //串口接收数据一次性大于的256个的错误标志位
bit write_flag; //是否正在读取的标志位
bit RFrec_flag; //RF接收数据分组标志位
bit RFrec0_flag; //RF接收数据组1是否有数据的标志位
bit RFrec1_flag; //RF接收数据组1是否有数据的标志位
bit deal0_flag; //处理串口数组0的标志位
bit deal1_flag; //处理串口数组1的标志位
bit rec_flag1; //串口接收数组分组标志位
bit recv0_flag; //串口接收数组1有是否有数据的标志位
bit recv1_flag; //串口接收数组1有是否有数据的标志位
/*******全局变量设置************/
unsigned char count_s;
unsigned char display;
unsigned char count_p;
unsigned char count_r;
unsigned char RFrec_num; //RF接收到的字节个数
/*****串发接收所用的数据***********/
unsigned char recv0_num; //串口接收数组0的字节数
unsigned char recv1_num; //串口接收数组1的字节数
unsigned char recv0_data; //串口接收数组0的单个字节
unsigned char recv1_data; //串口接收数组1的单个字节
unsigned char RFrec0_num; //RF接收数组0的字节个数。
unsigned char RFrec1_num; //RF接收数组1的字节个数。
unsigned char frequency; //串口接收字节
unsigned char Spi_recdata; //SPI接收的字节数
unsigned char spirecnum; //SPI接收数据字节个数
unsigned char SPIrecchecksum; //SPI接收数据字节的校验位
unsigned char xdata send_buf[127]; //串口要发送数据的缓存器
unsigned char xdata recv0_buf[127]; //串口要接收数组0的缓存器
unsigned char xdata recv1_buf[127]; //串口要接收数组1的缓存器
unsigned char xdata rxpack0_buf[128]; //RF接收数组0的数据缓存器
unsigned char xdata rxpack1_buf[128]; //RF接收数组0的数据缓存器
unsigned char data configbuf[10];
unsigned char xdata SPIsend_buf[128]; //RF要发送的缓存器
#define True 1
#define False 0
#define ON 1
#define OFF 0
/******常量*****/
#define timer0h 0xff //TH0初值 ,25MS=0xCF2C,15MS=0XE2B4 (5ms--22M DC31H)
#define timer0l 0xb6 //TL0初值 0.05uS = 0xFFA3, 22.1184M
/*---------------------------------------------------------------------------------------
nrf905配置寄存器宏定义
nrf905配置寄存器(10Byte)
工作频率f=(422.4+CH_NO/10)*(1+HFREQ_PLL)MHz
----------------------------------------------------------------------------------------*/
//the SPI Instruction Set
#define WC 0x00
#define RC 0x10
#define WTP 0x20
#define RTP 0x21
#define WTA 0x22
#define RTA 0x23
#define RRP 0x24
#define CC 0x80
#define RX_ADDRESS 0x00000000 //接收有效地址(本方)
#define TX_ADDRESS 0x02345678 //发送有效地址(对方)
#define CH_NO_FREQ_422_4MHz 0x000 //工作频率422.4MHz(433MHz频段最低频率)
#define CH_NO_FREQ_422_5MHz 0x001 //工作频率422.5MHz
#define CH_NO_FREQ_425_0MHz 0x01a //工作频率425.0MHz
#define CH_NO_FREQ_427_5MHz 0x033 //工作频率427.5MHz
#define CH_NO_FREQ_430_0MHz 0x04c //工作频率430.0MHz
#define CH_NO_FREQ_433_0MHz 0x06a //工作频率433.0MHz(433MHz频段基准频率)
#define CH_NO_FREQ_433_1MHz 0x06b //工作频率433.1MHz
#define CH_NO_FREQ_433_2MHz 0x06c //工作频率433.2MHz
#define CH_NO_FREQ_434_7MHz 0x07b //工作频率434.7MHz
#define CH_NO_FREQ_473_5MHz 0x1ff //工作频率473.5MHz(433MHz频段最高频率)
#define CH_NO_FREQ_844_8MHz 0x000 //工作频率844.8MHz(868MHz频段最低频率)
#define CH_NO_FREQ_862_0MHz 0x056 //工作频率862.0MHz
#define CH_NO_FREQ_868_0MHz 0x074 //工作频率868.0MHz(868MHz频段基准频率)
#define CH_NO_FREQ_868_2MHz 0x075 //工作频率868.2MHz
#define CH_NO_FREQ_868_4MHz 0x076 //工作频率868.4MHz
#define CH_NO_FREQ_869_8MHz 0x07d //工作频率869.8MHz
#define CH_NO_FREQ_895_8MHz 0x0ff //工作频率895.8MHz
#define CH_NO_FREQ_896_0MHz 0x100 //工作频率896.0MHz
#define CH_NO_FREQ_900_0MHz 0x114 //工作频率900.0MHz
#define CH_NO_FREQ_902_2MHz 0x11f //工作频率902.2MHz
#define CH_NO_FREQ_902_4MHz 0x120 //工作频率902.4MHz
#define CH_NO_FREQ_915_0MHz 0x15f //工作频率915.0MHz(915MHz频段基准频率)
#define CH_NO_FREQ_927_8MHz 0x19f //工作频率927.8MHz
#define CH_NO_FREQ_947_0MHz 0x1ff //工作频率947.0MHz(915MHz频段最高频率)
#define CH_NO_FREQ CH_NO_FREQ_430_0MHz //工作频率433.0MHz
#define CH_NO_BYTE CH_NO_FREQ & 0xff //工作频率低8位 Byte0 01101100
#define AUTO_RETRAN 0x20 //重发数据包 Byte1.5 0
#define RX_RED_PWR 0x10 //接收低功耗模式 Byte1.4 0
#define PA_PWR_10dBm 0x0c //输出功率+10dBm Byte1.3~2 11
#define PA_PWR_6dBm 0x08 //输出功率+6dBm Byte1.3~2 10
#define PA_PWR_2dBm 0x04 //输出功率+2dBm Byte1.3~2 01
#define PA_PWR__10dBm 0x00 //输出功率-10dBm Byte1.3~2 00
#define HFREQ_PLL_868MHz 0x02 //工作在868MHz频段 Byte1.1 1
#define HFREQ_PLL_915MHz 0x02 //工作在915MHz频段 Byte1.1 1
#define HFREQ_PLL_433MHz 0x00 //工作在433MHz频段 Byte1.1 0
#define CH_NO_BIT8 CH_NO_FREQ >> 8 //工作频率第9位 Byte1.0 0
#define TX_AFW_1BYTE 1 * 16 //发送地址宽度1字节 Byte2.7~4
#define TX_AFW_2BYTE 2 * 16 //发送地址宽度2字节 Byte2.7~4
#define TX_AFW_3BYTE 3 * 16 //发送地址宽度3字节 Byte2.7~4
#define TX_AFW_4BYTE 4 * 16 //发送地址宽度4字节 Byte2.7~4 100
#define RX_AFW_1BYTE 1 //接收地址宽度1字节 Byte2.3~0
#define RX_AFW_2BYTE 2 //接收地址宽度2字节 Byte2.3~0
#define RX_AFW_3BYTE 3 //接收地址宽度3字节 Byte2.3~0
#define RX_AFW_4BYTE 4 //接收地址宽度4字节 Byte2.3~0 100
#define RX_PW_1BYTE 1 //接收数据宽度1字节 Byte3.5~0
#define RX_PW_32BYTE 32 //接收数据宽度32字节 Byte3.5~0 00100000
#define TX_PW_1BYTE 1 //发送数据宽度1字节 Byte4.5~0
#define TX_PW_32BYTE 32 //发送数据宽度32字节 Byte4.5~0 00100000
#define RX_ADDRESS_0 RX_ADDRESS >> 24 //接收有效地址第1字节 Byte5 11100111
#define RX_ADDRESS_1 (RX_ADDRESS >> 16) & 0xff //接收有效地址第2字节 Byte6 11100111
#define RX_ADDRESS_2 (RX_ADDRESS >> 8) & 0xff //接收有效地址第3字节 Byte7 11100111
#define RX_ADDRESS_3 RX_ADDRESS & 0xff //接收有效地址第4字节 Byte8 11100111
#define CRC_MODE_16BIT 0x80 //CRC16模式 Byte9.7 1
#define CRC_MODE_8BIT 0x00 //CRC8模式 Byte9.7
#define CRC_EN 0x40 //CRC使能 Byte9.6 1
#define CRC16_EN 0xc0 //CRC16模式使能 Byte9.7~6 11
#define CRC8_EN 0x40 //CRC8模式使能 Byte9.7~6
#define XOF_20MHz 0x20 //晶体振荡器频率20MHz Byte9.5~3
#define XOF_16MHz 0x18 //晶体振荡器频率16MHz Byte9.5~3 100
#define XOF_12MHz 0x10 //晶体振荡器频率12MHz Byte9.5~3
#define XOF_8MHz 0x08 //晶体振荡器频率8MHz Byte9.5~3
#define XOF_4MHz 0x00 //晶体振荡器频率4MHz Byte9.5~3
#define UP_CLK_EN 0x40 //输出时钟使能 Byte9.2 1
#define UP_CLK_FREQ_500kHz 0x03 //输出时钟频率500kHz Byte9.1~0 11
#define UP_CLK_FREQ_1MHz 0x02 //输出时钟频率1MHz Byte9.1~0
#define UP_CLK_FREQ_2MHz 0x01 //输出时钟频率2MHz Byte9.1~0
#define UP_CLK_FREQ_4MHz 0x00 //输出时钟频率4MHz Byte9.1~0
#define UP_CLK_EN_500kHz 0x43 //输出时钟频率500kHz Byte9.2~0 111
#define UP_CLK_EN_1MHz 0x42 //输出时钟频率1MHz Byte9.2~0
#define UP_CLK_EN_2MHz 0x41 //输出时钟频率2MHz Byte9.2~0
#define UP_CLK_EN_4MHz 0x40 //输出时钟频率4MHz Byte9.2~0
#define TX_ADDRESS_0 0x02// TX_ADDRESS >> 24 //发送有效地址第1字节
#define TX_ADDRESS_1 0x34// (TX_ADDRESS >> 16) & 0xff //发送有效地址第2字节
#define TX_ADDRESS_2 0x56// (TX_ADDRESS >> 8) & 0xff //发送有效地址第3字节
#define TX_ADDRESS_3 0x78// TX_ADDRESS & 0xff //发送有效地址第4字节
unsigned char code config_tab[]=
{
/*0x00,0x0e,0x44,0x08,0x08, 0x29,0x88,0x0c,0x0c, 0x58,0xff */
0x00,0x0e,0x44,0x20,0x20, 0x29,0x88,0x0c,0x0c, 0x58,0xff
// 0x00, //0b01001100, //CH_NO[7:0]=76,RF
//freq=422.4+76/10=430MHZ
// 0x0e, //0b00001100, //bit[7:6]:not
//used/bit5:AUTO_RETRAN=’0’
//bit4:RX_RED_PWR=’0’/bit[3:2]:PA_PWR=’11’+10dBm
//bit1:HFREQ_PLL=0, PLL=433MHZ/bit0:CH_NO[8]=’0’
// 0x44, //0b01000100, //bit7:not used/bit[6:4]:TX_AFW=’100’4Bytes
//bit3:not used/bit[2:0]:RX_AFW=’100’4Bytes
// 0x20, //0b00100000, //bit[7:6]:not use/bit[5:0]:RX_PW=’100000'32Bytes
// 0x20, //0b00100000, //bit[7:6]not use/bit[5:0]TX_PW=’100000’32Bytes
// 0xa5, //0b10100101, //RX_ADDRESS_BYTE0=TX_ADDRESS_BYTE0
// 0xb5, //0b10110101, //RX_ADDRESS_BYTE1=TX_ADDRESS_BYTE1
// 0xc5, //0b11000101, //RX_ADDRESS_BYTE2=TX_ADDRESS_BYTE2
// 0xd5, //0b11010101, //RX_ADDRESS_BYTE3=TX_ADDRESS_BYTE3
// 0x58 //0b11011011, //bit7:CRC_MODE=’1’
//CRC16/bit6:CRC_EN=’1’ CRC Enable
//bit[5:3]:XOF=’011’
//16MHZ/bit[2]UP_CLK_EN=’0’ Disable
//bit[1:0]:UP_CLK_FRE=’11’ 500KHZ
};
unsigned char code FreqBill[]=
{
0x01,0x22,0x44,0x66,0x88,0xAA,0xCC,0xEE,
0x10,0x32,0x54,0x76,0x98,0xBA,0xDC,0xFF
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -