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

📄 main.c

📁 菜鸟,详细NRF24E1运用,程序,电路
💻 C
字号:
/***********************************
/源代码部分
***********************************/
#include "reg24le1.h"
/**********************************/
#define true    1
#define false   0
#define Senser	P00	  /*连接传感器*/
#define BUZZER  P01	  /*连接蜂鸣器*/
#define LED     P02	  /*连接LED灯 */
#define Disableint do{EA=0;}while(0)
#define Enableint  do{EA=1;}while(0)
typedef unsigned int uint;
typedef unsigned char uchar;
/***********************************
/延时函数
************************************/
void Delay(uint x)
{
uchar l;
 for(;x>0;x--)
  for(l=120;l>0;l--)
    {}
}
/***********************************
/nRF24LE1工作时钟设置
************************************/
void SetWorkClk()
{
  CLKCTRL=0X28;
  CLKLFCTRL = 0x01; 
}
/***********************************
/串口波特率初始化为9600,8-n-1方式
************************************/
void Uartinit(uint baud)
{
	P0DIR &= 0xF7;		/* P0.3 (TxD)输出*/
  	P0DIR |= 0x10;     	/* P0.4 (RxD)输入*/	
	S0CON = 0x50;  
   	PCON |= 0x80; 		/* 波特率倍增	  */
  	WDCON |= 0x80;   	/* 选定内部波特率发生器*/
	if(baud==38400) 	
    {
	S0RELL = 0xF3;      /* 波特率38400 */
  	S0RELH = 0x03;	
	}
	else if(baud==9600)
	{
	S0RELL = 0xCC;      /* 波特率9600*/
  	S0RELH = 0x03;	
	}
}
/***********************************
/nRF24LE1的I/O口初始化
************************************/
void Ioinit()
{
P0DIR|=BIT_0;
Senser=0;
BUZZER=0;
}
/***********************************
/红外初始化函数
************************************/
bit Polling()
{
  bit flag=0;
      if(Senser)
	  {
	     Delay(20);
		 if(Senser)
	     {flag=1; }
	  }
	  return flag;
}
/**********************************
/定时器0初始化
***********************************/
void Timer0init()
{
 TMOD=0X01;
 TH0=(65536-1000)/256;
 TL0=(65536-1000)%256;
 ET0=1;
}
/**********************************
/定时器中断服务函数
**********************************/
void TIMERISR() interrupt INTERRUPT_TF0
{
 TR0=0;
 TH0=(65536-1000)/256;
 TL0=(65536-1000)%256;
 BUZZER=!BUZZER;
 TR0=1;
}
/***********************************
/主函数
************************************/
void main()
{
 Disableint;
 SetWorkClk();
 Uartinit(9600);
 Ioinit();
 Timer0init();
 Enableint;
 while(1)
 {
  if(Polling())
  TR0=1;
  else
  TR0=0;
 }

}
/********************************
/        程序到此结束            /
*********************************/

⌨️ 快捷键说明

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