📄 main.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 + -