ZigBee串口自发自收实验

#include 
#include 
#define uint unsigned int
#define uchar unsigned char
// 定义 LED  的端口
#define LED1 P1_0
#define LED2 P1_1

uchar RXTXflag = 1;
char temp;
uchar datanumber = 0;
char Rxdata[52];
void InitLed()
{
  P1DIR = 0x01; //P1_0IO  方向输出
  LED1 = 1; //关 关 LED
}
void InitUart()
{
    CLKCONCMD &= ~0x40;       //设置系统时钟源为 32MHZ晶振
    while(CLKCONSTA & 0x40);  //等待晶振稳定 
    CLKCONCMD &= ~0x47;       //设置系统主时钟频率为 32MHZ   
     
    P0SEL = 0x0c;        //P0_2,P0_3用作串口,第二功能 
    U0CSR |= 0x80;       //UART 方式 
    U0GCR |= 10;         //U0GCR与U0BAUD配合     
    U0BAUD |= 216;       // 波特率设为57600 
    UTX0IF = 1;          //UART0中断标志初始置位1
    U0CSR |= 0X40;       //允许接收 
    IEN0 |= 0x84;       // 开总中断,接收中断    
}

/****************************************************************
串口发送字符串函数
****************************************************************/
void UartSend_String(char *Data)
{
  while(*Data != '\0')
  {
     U0DBUF = *Data++;
     while(UTX0IF == 0);  //the flag of transfer complete
     UTX0IF = 0;
  }
}
/***************************
          主函数
***************************/
void main(void)
{ 
  InitLed(); // 调用初始化函数
  InitUart();
  while(1)
  {
    if(RXTXflag == 1) // 接收状态
    {
      LED1=1; // 接收状态指示
      if( temp != 0)
      {
        if((temp!= '#')&&(datanumber<50))  // # 被定义为结束字符,最多能接收50  个字符
        Rxdata[datanumber++] = temp;
        else
        {
          RXTXflag = 3; // 进入发送状态
          LED1=0; // 关指示灯
         }
        temp = 0;
       }
     }
    if(RXTXflag == 3) // 发送状态
    {
      LED2= 1;
      U0CSR &= ~0x40; // 禁止接收
      UartSend_String(Rxdata);
      U0CSR |= 0x40; // 允许接收
      RXTXflag = 1; //  恢复到接收状态
      datanumber = 0; // 指针归  0
      LED2 = 0; // 关发送指示
    }
  }
}

/****************************************************************
串口接收一个字符 :  一旦有数据从串口传至  CC2530,  则进入中断,将接收
到的数据赋值给变量  temp.
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
  URX0IF = 0; //  清中断标志
  temp = U0DBUF;
}

ZigBee串口自发自收实验_第1张图片

你可能感兴趣的:(ZIgBee)