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

📄 nrf2401_receive.c

📁 用Keil写的NRF2401接受程序,重要的模块文件是nRF2401_Personal.h,源码中的注释我写的已经非常清楚,非常适合新手学习
💻 C
字号:
#include "nRF2401_Personal.h"

#define    LED           P2_0		  //P2.0接LED灯,测试对接收数据的校验
#define    Signal_A  	 P2_2
#define    Signal_B  	 P2_4
#define    L_Key         P2_5
#define    M_Key         P2_6
#define    R_Key         P2_7
#define    XLay_L        P3_4
#define    XLay_R        P3_5
#define    YLay_U        P3_6
#define    YLay_D        P3_7

volatile bit Ready_Idle=0;       //准备处理位

//void TestLED(uchar n)
//{
//  uchar i;
//  for(i=0;i<n;i++)
//  {
//    LED=1;
//	delayUS(20000);
//	LED=0;
//	delayUS(20000);
//  }
//}

void Receive_Idle(void)
{
  if(Ready_Idle)
  {
    switch(RxBuf[0])
    {
      case 0x23:		  //原本发送 0x12 ,测试OK
//	    TestLED(1);
      L_Key=~L_Key;
	    break;
	  case 0x34:
//	    TestLED(2);
      M_Key=~M_Key;
	    break;
	  case 0x45:
//	    TestLED(3);
      R_Key=~R_Key;
	    break;
	  case 0x12:
	    //-------滚轮信号A模拟-----//
		Signal_A=~Signal_A;
	    break;
	  case 0x14:
	    //-------滚轮信号B模拟-----//
		Signal_B=~Signal_B;
	    break;
	  case 0x48:
	    XLay_L=~XLay_L;
	    break;
	  case 0x50:
	    XLay_R=~XLay_R;
	    break;
	  case 0x52:
	    YLay_U=~YLay_U;
	    break;
	  case 0x55:
	    YLay_D=~YLay_D;
	    break;
	  default:  break;
    }
    Ready_Idle=0;         //已经将接收数据处理完毕
  }
}

void main(void)
{
  IT0=1;                 //外部中断0为边沿触发方式
  EX0=1;                 //外部中断INT0使能
  EA=1;                  //开总中断
  LED=0;
  Signal_A=0;
  Signal_B=0;
  XLay_L=0;
  XLay_R=0;
  YLay_U=0;
  YLay_D=0;
  L_Key=1;
  M_Key=1;
  R_Key=1;
  nRF2401_Inti();   	 //nRF2401初始化及相关配置
  while(1)
  {
    Receive_Idle();
  }
}

void EX_INT0(void) interrupt 0
{
  nRF2401_ReadData();
  Ready_Idle=1;          //准备处理接收数据
}

⌨️ 快捷键说明

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