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

📄 main.c

📁 无线模块nrf2401的收和发C51程序
💻 C
字号:
#include <string.h>
#include <reg52.h>
#include <intrins.h>

#define 	INT8U		unsigned char 
#define 	INT16U		unsigned int

#define		FOSC		11059200	
#define		BAUD		9600
#define		TIMER1		0XFD	//256-(110592/(12*32*96))
#define		TIMER0H		(65535-3*FOSC/12/1000)/256
#define		TIMER0L		(65535-3*FOSC/12/1000)%256			//定时3MSVR
//----------------------------------------------------------------------------------------------------------
//内部寄存器定义
//----------------------------------------------------------------------------------------------------------
sfr	P4		=	0xc0;	
sfr 	ADC_CONTR 	= 	0xC5;
sfr 	AUXR 		= 	0x8E;
sfr 	ADC_DATA 	= 	0xC6;
sfr 	P1_ADC_EN 	= 	0x97;
//定义I/O口
sbit	POW_UP	=	P3^5;
sbit	CE	=	P3^4;
sbit	DR2	=	P3^3;
sbit	SCK2	=	P3^2;
sbit	MOSI	=	P4^3;
sbit	MISO	=	P1^7;
sbit	SCK	=	P1^6;
sbit	DOUT2	=	P1^5;
sbit	CS	=	P1^4;
sbit	DR1	=	P4^2;
sbit	LED1	=	P4^1;
sbit	LED2	=	P4^0;





/********************* I/O define end*****************************************************/


#define   	FRESELE		0x28		//频道选择
#define 	DATANUM		4		//有效数据位数

#define time0h (65535-3000)/256
#define time0l (65535-3000)%256			//定时3MS




code INT8U CofigBuf[15]=
		{
		0x00,				//接收频道二有效数据长度
		
		40,				//接收频道一有效数据长度
		
		0x00,0x00,0x00,0x00,0x00,	//接收频道二地址
		
		0x00,0xcd,0xef,0x12,0xaa,	//接收频道一地址
		
		0x83,				//32位地址,16位CRC,使能CRC
						//bit7~2:ADDR_W,最大40位
						
						//bit1:CRC_L
						//Logic 0: 8 bit CRC    
						//Logic 1: 16 bit CRC
						
						
						//BIT0:CRC_EN
						//Logic 0: On-chip CRC generation/checking disabled
						//Logic 1: On-chip CRC generation/checking enabled
						
						
		0x4f,				//ShockBurst模式,250 kbps,16M晶振,0dBm最大功率
		
						//Bit 15:RX2_EN
						//Logic 0: One channel receive
						//Logic 1: Two channels receive
						
						//Bit 14:
						//Communication Mode:
						//Logic 0: nRF2401 operates in direct mode.
						//Logic 1: nRF2401 operates in ShockBurst. mode

						//Bit 13:
						//RF Data Rate:
						//Logic 0: 250 kbps
						//Logic 1: 1 Mbps
						
						//Bit 12-10:Selects the nRF2401 crystal frequency to be used:
						//	D12 	D11 	D10 	Crystal Frequency [MHz]
						//	0   	0 	0 		4
						//	0 	0 	1 		8
						//	0 	1 	0 		12
						//	0 	1 	1 		16
						//	1 	0 	0 		20
						
						//Bit 9-8:RF_PWR: Sets nRF2401 RF output power in transmit mode:
						//	D9 	D8 	P [dBm]
						//	0 	0 	-20
						//	0	1 	-10
						//	1 	0 	-5
						//	1 	1 	0
						
						
						
		0x50			//2400+4*1=2404MHZ=2.404G,发送模式
		
						//Bit 7 – 1:RF_CH#: Sets the frequency channel the nRF2401 operates on.
						//Channelrf = 2400MHZ + RF_CH# * 1.0MHZ
						
						//Bit 0:Set active mode:
						//Logic 0: transmit mode
						//Logic 1: receive mode
		};
		
		
INT8U AddrCofig[4]={0xcd, 0xef, 0x12, 0xaa};				//地址
INT8U TxBuf[8]={0x40, 0x22, 0x66, 0x88, 0x40, 0x00, 0x00, 0x00};	//发送绶冲区
INT8U RxBuf[8]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};	//接收绶冲区							
INT16U timer[2];								//超时计数器


		
/*****************************************************************************************
//函数名:void Delay100us(INT8U s)
//输入:时间
//输出:无
//功能描述:廷时
/*****************************************************************************************/
void Delay100us(INT8U n)
{
	INT8U i;
	while(n--)
	{
		for(i=0; i<35; i++);
	}
}
/*****************************************************************************************
//函数名:delay(unsigned int s)
//输入:时间
//输出:无
//功能描述:普通廷时
/*****************************************************************************************/		
delay(unsigned int s)
{
	unsigned int i;
	for(i=0; i<s; i++);
	for(i=0; i<s; i++);
}
/*****************************************************************************************
//函数名

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -