惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
小众软件
小众软件
爱范儿
爱范儿
Y
Y Combinator Blog
博客园 - Franky
美团技术团队
博客园 - 【当耐特】
The Cloudflare Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
IT之家
IT之家
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
WordPress大学
WordPress大学
V
Visual Studio Blog
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
有赞技术团队
有赞技术团队

博客园 - 邵利超

ZigBee学习之37——osalInitTasks()分析 ZigBee2006协议栈介绍 ZigBee四种绑定方式在TI Z-Stack中的应用【转载】 DSP串行FLASH(AT45DB642)的源代码 at45db642 程序代码 点对点通信实验小结 CC2430串口收发数据 gps 信号解析与显示 CC2430串口测试实验(UART) 正则表达式集合 C#版万年历 在C#中调用视图 c#调用SqlServer中的存储过程 SQL Server 2005 BI综合案例系列课程 SQL2005 BI系列课程 微软工程师主讲的SqlServer2005视频教程 多线程C#2.0聊天软件 内含代码 C#网络编程概述 三 C#网络编程概述 二
点对点(单向)传输实验之LED灯指示
邵利超 · 2010-07-15 · via 博客园 - 邵利超

http://blog.sina.com.cn/s/blog_5f6e4fce0100htd4.html

实验器材:

无线龙C51RF3-PK ,(06光盘)...\C51RF-3-PK无线ZigBee网络开发平台V5.10\C51RF-3演示程序\点对点无线通信\点对点无线基本通信

实验目的:

实现个人目的的无线传输。

实验步骤:

1> 函数调用脉络:主函数 app_ex_main.c

 void main(void)
{
   SET_MAIN_CLOCK_SOURCE(CRYSTAL);  //设置主时钟:晶振32MHz
   RFPWR = 0x04;                    //射频功
   while(RFPWR & 0x10);          //等待稳定
   initUART();                   //初始化串口
   //IO_DIR_PORT_PIN(0,5,IO_OUT);
   //IO_DIR_PORT_PIN(1,3,IO_OUT);
   //IO_DIR_PORT_PIN(1,2,IO_IN);
   //IO_DIR_PORT_PIN(1,2,IO_OUT);
   //P0_5 = 1;
 
   //P1_0 = 0;
   rf_test_main();             //调用rf_test.c中的主函数rf_test_main();             
}

2> 射频测试子程序  rf_test.c

#ifdef COMPLETE_APPLICATION
void rf_test_main(void){
#else
void main(void){
#endif                             //条件编译主函数名
   INT_GLOBAL_ENABLE(INT_ON);      //EA=1;开中中断
   #ifdef RX                      
      myAddr = ADDRESS_0;
      remoteAddr = ADDRESS_1;
      initRfTest();                //初始化射频

      receiveMode();               //定义本模块为接收功能
   }
   #else
   {
      myAddr = ADDRESS_1;        
      initRfTest();
      contionuousMode();          //定义接收
   }
   #endif
}

3> 接收部分:receiveMode()

void receiveMode(void)
{
   BYTE* receiveBuffer;
   BYTE length;
   BYTE res;
   BYTE sender;
   while(1)
   {
      RLED = LED_ON;      //开始接受,红灯闪烁   
      res = radioReceive(&receiveBuffer, &length, RECEIVE_TIMEOUT, &sender);
      halWait(200);                                   

      RLED = LED_OFF;

      if(res == TRUE)     
      {
         GLED = LED_ON;   //接收成功,绿灯亮闪烁
         YLED=!YLED;      //自己添加的黄色指示灯,添加方法:RF04EB.h
         halWait(200);                
      }
      else
      {
         GLED = LED_OFF;    //接受失败,绿灯灭
         halWait(200);
      }

      GLED = LED_OFF;  
   }
}

4> 发送部分 contionuousMode()

void contionuousMode(void)
{
   BOOL res;                         //结果变量
   BYTE sendBuffer[] = "Hello";      //待发送字符
   while(1)
   {
      RLED = LED_ON;                  
      res = radioSend(sendBuffer, sizeof(sendBuffer), remoteAddr, DO_NOT_ACK );
      halWait(200);
      RLED = LED_OFF;
      if(res == TRUE)     //发送成功,绿灯亮
      {
         GLED = LED_ON;

         YLED=!YLED;      //自己加一句用来测试
         halWait(200);
      }
      else                //发送失败,绿灯灭
      {
        GLED = LED_OFF;
        halWait(200);
      }

      GLED = LED_OFF;
   }

}

总结:条件编译的好处是可以把 收发双方的程序写在同一个工程目录下,无须分开写,编译器会有选择编译