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

📄 main.c

📁 菜鸟,详细NRF24E1运用,程序,电路
💻 C
字号:
/******************************************************
/程序部分开始                           
******************************************************/
# include "reg24le1.h"
# include "intrins.h"
/*****************************************************/
#define ad9850_w_clk     P00
#define ad9850_fq_up     P01
#define ad9850_rest      P02  
#define ad9850_bit_data  P03
#define LED              P04
#define Enableint        do{EA=1;}while(0)
#define Disableint       do{EA=0;}while(0)
#define EnableAD9850     do{ad9850_fq_up=0;\
                            ad9850_fq_up=1; }while(0)
/*****************************************************
/重定义数据类型
*****************************************************/
typedef unsigned char uchar;
typedef unsigned int  uint ;  
/*****************************************************
/
/AD9850复位(并口模式)
/
*****************************************************/								 
void ad9850_reset()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
/* rest信号 */
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
}
/*****************************************************
/
/AD9850复位(串口模式)                 
/
******************************************************/

void ad9850_reset_serial()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
/*rest信号	 */
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
/*w_clk信号	 */
ad9850_w_clk=0;
ad9850_w_clk=1;
ad9850_w_clk=0;
/*fq_up信号	 */
ad9850_fq_up=0;
ad9850_fq_up=1;
ad9850_fq_up=0;
}
/*****************************************************
/
/往AD9850移入一个字节(串口模式)
/
******************************************************/
void Write_Byte_S(uchar Dat)
{
 uchar i;
  for(i=0;i<8;i++)
  {
  ad9850_bit_data=(Dat>>i)&0x01;
  ad9850_w_clk=1;
  ad9850_w_clk=0;
  }
}

/*****************************************************
/
/往AD9850移入一个字节(并口模式,设并口连接P0口)
/
******************************************************/
void Write_Byte_P(uchar Dat)
{
 P0=Dat;     
 ad9850_w_clk=1;
 ad9850_w_clk=0;
}
/****************************************************
/                       
/向ad9850中写命令与数据(并口)
/
*****************************************************/
void ad9850_wr_parrel(uchar w0,double frequence)
{
uchar    w;
long int y;
double   x;
x=4294962957/125;
frequence=frequence*x/1000000;
y=frequence;
w=w0;   
Write_Byte_P(w);/*写w0数据	*/
w=(y>>24);
Write_Byte_P(w);/*写w1数据	*/
w=(y>>16);
Write_Byte_P(w);/*写w2数据  */
w=(y>>8);
Write_Byte_P(w);/*写w3数据	*/
w=(y>>=0);
Write_Byte_P(w);/*写w4数据	*/
EnableAD9850;   /*移入使能  */
}
/*****************************************************
/
/串口方式写AD9850的控制字
/
******************************************************/
void ad9850_wr_serial(uchar w0,double frequence)
{
uchar    w;
long int y;
double   x;
x=4294967295/125;
frequence=frequence*x/1000000;
y=frequence;
w=(y>>=0);
Write_Byte_S(w);/*写w4数据  */
w=(y>>8);
Write_Byte_S(w);/*写w3数据  */
w=(y>>16);
Write_Byte_S(w);/*写w2数据  */
w=(y>>24);
Write_Byte_S(w);/*写w1数据  */
w=w0;   
Write_Byte_S(w);/*写w0数据  */
EnableAD9850;   /*移入使能  */
}
/****************************************************	  
/
/nRF24LE1工作时钟设置
/
****************************************************/
void WorkClkSet()
{
CLKCTRL = 0x28;			  	
CLKLFCTRL = 0x01;
}
/****************************************************
/
/nRF24LE1的I/O口配置函数,P0口配置成输出,初始为低电平
/
*****************************************************/
void IO_CNFG()
{
P0DIR=0X00;
P0=0X00;
}
/****************************************************
/
/Delay延时函数
/
****************************************************/
void Delay(uint x)
{
uint dl;
  for(;x>0;x--)
    for(dl=120;dl>0;dl--)
	  {
	  _nop_();
	  }
}
/****************************************************
/
/LED灯的闪烁函数
/
*****************************************************/
void Light_LED()
{
LED=!LED;
Delay(1000);
}
/****************************************************
/
/主函数部分
/
*****************************************************/
main()
{
 Disableint;
 WorkClkSet();
 IO_CNFG();
 ad9850_reset_serial();             /*复位芯片 AD9850*/
 Delay(100);
 ad9850_wr_serial(0x00,10000000);		   /*串行写入 AD9850*/
 Delay(100);
 Enableint;
 while(1)
  {
  Light_LED();	        /*LED指示灯进行芯片状态显示*/
  }
}
/****************************************************
*                  程序到此结束                     *
****************************************************/

⌨️ 快捷键说明

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