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

📄 xbeepro.c

📁 2.4GHz zigbee控制
💻 C
字号:
#define ENABLE_BIT_DEFINITIONS

#include <iom88.h>

#include "XBeePro.h"
#include "UART.h"

char XBeeProBuff[16];

char ChannelIncrement(char c)
{
    char t;
    
    t=c+1;
    if(t == 'G')
    {
        t='C';
    }

    return t;
}

void XBeeProSendCommand(char* s)
{
    /* 将接受缓冲区中的数据全部读出,以便进入命令模式,进行配置! */
    while (rx_counter)                    //如果接收缓冲区中有数据
    {
        UartGetChar();	                  //读出数据
    }

    while(tx_counter) //等待所有数据全部发出
    {
    }
    
    UartPutString(s);
    
    while(tx_counter) //等待所有数据全部发出
    {
    }    
}

char XBeeProGetAckByte()
{
    char c;
    while(rx_counter == 0)
    {
    }
    c=UartGetChar();
    
    return c;
}

unsigned char XBeeProGetAck()
{
//    unsigned long timeover=0,tick;
//    unsigned int index=0;
    char t1,t2,t3;
    
/*    while(!timeover)
    {
        tick=0;
        
        while (rx_counter == 0 && timeover ==0)                    //如果接收缓冲区中有数据
        {
            tick++;
            if(tick > 65535L)
            {
                timeover=1;
            }
        }
        
        if(timeover == 0)
        {
            XBeeProBuff[index]=UartGetChar();
            index++;
        }
    }
    
    return index;
*/

    t1=XBeeProGetAckByte();
    t2=XBeeProGetAckByte();
    t3=XBeeProGetAckByte();
    
    if((t1 != 'O') || (t2 != 'K') || (t3 != '\r') )
    {
        return 0;  //回码显示AT指令执行失败
    }
    
    return 1;    //回码显示AT指令执行成功
}

unsigned char XBeeProEnterCommandMode()
{
    unsigned char r;

    XBeeProSendCommand("+++");   
    r=XBeeProGetAck();
    
    return r;
}

int XBeeProExitCommandMode()
{
    return 1;
}

unsigned char XBeeProChangeChannel()
{
    char C,r;
    
    if(XBeeProEnterCommandMode() == 0) return 0;
    
    XBeeProSendCommand("ATCH\r");
    C=XBeeProGetAckByte();
    r=XBeeProGetAckByte();     //收回通道数后面的CR
    if(r != '\r') return 0;
    
    C=ChannelIncrement(C);
    
    XBeeProBuff[0]='A';
    XBeeProBuff[1]='T';   
    XBeeProBuff[2]='C';
    XBeeProBuff[3]='H';
    XBeeProBuff[4]=' ';   
    XBeeProBuff[5]=C;
    XBeeProBuff[6]='\r';   
    XBeeProBuff[7]='\0'; 
    
    XBeeProSendCommand(XBeeProBuff);   //更改通道号
    r = XBeeProGetAck();
    if( r == 0)
    {
        return 0;
    }
/*    
    XBeeProSendCommand("ATWR\r");    //写入非易失性存储器
    r = XBeeProGetAck();
    if( r == 0)
    {
        return 0;
    }
*/    
    XBeeProSendCommand("ATCN\r");    //退出命令模式
    r = XBeeProGetAck();
    if( r == 0)
    {
        return 0;
    }
    
    return 1;
}

⌨️ 快捷键说明

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