⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_nrf905.h

📁 这是我自己写的nRF905射频IC收发于一起的程序。
💻 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 + -