CC2530————与串口助手交互实现控制LED灯

宏定义与预处理

#include<iocc2530.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
#define LED1 P1_0
#define LED2 P1_5
#define LED3 P1_4
#define LED4 P1_3
uchar c;
uchar temp;
uchar Data[30]={0};
uint count=0;

初始化引脚

void Init_LED()
{
  P1SEL &=~0X39;
  P1DIR |= 0X39;
  P1 &=~ 0X39;
}

初始化串口

void Init_UART()
{
 CLKCONCMD &= 0x80;
 U0CSR |= 0X80;
 P0SEL |= 0X0C;
 U0GCR =10;
 U0BAUD =216;
 U0CSR |= 0X40;
 URX0IF = 0; 
 UTX0IF = 0;
 IEN0 |= 0X84;
}

串口数据控件led灯

void UART_Control_Led()
{
  if(Data[0]=='d'||Data[0]=='A')
  {
    if(Data[0]=='d')
    {
      if(Data[1]=='1')
        LED1 =1;
      else if(Data[1]=='2')
        LED2 =1;
      else
        LED1=LED2=LED3=LED4=0;
    }
    if(Data[0]=='A')
    {
      if(Data[1]=='0')
        LED1 = LED2 = 1;
      else if(Data[1]=='1')
        LED1 = LED2 = 0;
      else
        LED1=LED2=LED3=LED4=0;
    }
  }
}

数据

void Send_Data(uchar *Data,uint len)
{
   int j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
  UART_Control_Led();
}

中断

#pragma vector=URX0_VECTOR
__interrupt void UART0_ISR(void)
{
  URX0IF=0;
  temp = U0DBUF;
  if((temp != '#')&& count < 30)
  {
    Data[count++]=temp;
    temp=0;
  }
  else
    Send_Data(Data,count);
}

主函数

 main()
{
  Init_LED();
  Init_UART();
  while(1)
  {
  }
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐