微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 这是用蓝牙控制led灯的程序,请问各位大侠这个有错误吗?

这是用蓝牙控制led灯的程序,请问各位大侠这个有错误吗?

时间:10-02 整理:3721RD 点击:
        #include<reg52.H>
        sbit P1_0=P1^0;
        sbit P1_1=P1^1;
        sbit P1_2=P1^2;
        sbit P1_3=P1^3;
        sbit P1_4=P1^4;
        sbit P1_5=P1^5;
        sbit P1_6=P1^6;
        sbit P1_7=P1^7;
        #define  light0       'C'
        #define  light1       'D'
        #define  light2        'A'
        #define  light3        'B'
        #define  light4        'F'
        #define  light5        '1'
        #define  light6         '2'
        #define  light7         '3'
        char code str[] =  "收到指令,led0亮!\n";
        char code str1[] = "收到指令,led1亮!\n";
        char code str2[] = "收到指令,led2亮!\n";
        char code str3[] = "收到指令,led3亮!\n";
        char code str4[] = "收到指令,led4亮!\n";
        char code str5[] = "收到指令,led5亮!\n";
        char code str6[] = "收到指令,led6亮!\n";
        char code str7[] = "收到指令,led7亮!\n";
        bit  flag_REC=0;
        bit  flag    =0;  
        unsigned char  i=0;
        unsigned char  dat=0;
        unsigned char  buff[5]=0; //接收缓冲字节
//延时函数       
   void delay(unsigned int k)
   {   
     unsigned int x,y;
         for(x=0;x<k;x++)
           for(y=0;y<2000;y++);
    }
//字符串发送函数
    void send_str( ) // 传送字串
    {
            unsigned char i = 0;
            while(str[i] != '\0')
           {
                SBUF = str[i];
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
           }       
    }
         void send_str1( )// 传送字串
    {
            unsigned char i = 0;
            while(str1[i] != '\0')
           {
                SBUF = str1[i];
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
           }       
    }       
  void send_str2( )// 传送字串
    {
            unsigned char i = 0;
            while(str2[i] != '\0')
           {
                SBUF = str2[i];
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
           }       
    }       
  void send_str3()  // 传送字串
    {
            unsigned char i = 0;
            while(str3[i] != '\0')
           {
                SBUF = str3[i];
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
           }       
    }       
  void send_str4()// 传送字串
    {
            unsigned char i = 0;
            while(str4[i] != '\0')
           {
                SBUF = str4[i];
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
           }       
    }
        void send_str5()// 传送字串
    {
            unsigned char i = 0;
            while(str4[i] != '\0')
           {
                SBUF = str4[i];
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
           }       
    }       
   void send_str6()// 传送字串
    {
            unsigned char i = 0;
            while(str4[i] != '\0')
           {
                SBUF = str4[i];
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
           }       
    }
void send_str7()// 传送字串
    {
            unsigned char i = 0;
            while(str4[i] != '\0')
           {
                SBUF = str4[i];
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
           }       
    }                   
     void  lighton0(void)
{
    P1_0=0;
}
     void  lighton1(void)
{
    P1_1=0;
}
     void  lighton2(void)
{
    P1_2=0;       
}
void  lighton3(void)
{
    P1_3=0;
}
     void  lighton4(void)
{
    P1_4=0;
}
void  lighton5(void)
{
    P1_5=0;
}
void  lighton6(void)
{
    P1_6=0;
}
void  lighton7(void)
{
    P1_7=0;
}
void sint() interrupt 4          //中断接收3个字节
{
    if(RI)                         //是否接收中断
    {
       RI=0;
       dat=SBUF;
       if(dat=='O'&&(i==0)) //接收数据第一帧
         {
            buff[i]=dat;
            flag=1;        //开始接收数据
         }
       else
      if(flag==1)
     {
      i++;
      buff[i]=dat;
      if(i>=2)
      {i=0;flag=0;flag_REC=1 ;}  // 停止接收
     }
         }
}
         
/*--主函数--*/
        void main(void)
{
        TMOD=0x20;  
    TH1=0xFd;                     //11.0592M晶振,9600波特率
    TL1=0xFd;
    SCON=0x50;  
    PCON=0x00;
    TR1=1;
        ES=1;   
    EA=1;   
         
        while(1)                                                        /*无限循环*/
        {
          if(flag_REC==1)                                    //
           {
                flag_REC=0;
                if(buff[0]=='O'&&buff[1]=='N')        //第一个字节为O,第二个字节为N,第三个字节为控制码
                switch(buff[2])
             {
                      case light0 :                                                    // 前进
                          send_str( );
                          lighton0();
                          break;
                      case light1:                                                // 后退
                           send_str1( );
                          lighton1();
                          break;
                      case light2:                                                // 左转
                           send_str2( );
                          lighton2();
                          break;
                      case light3:                                                // 右转
                          send_str3( );
                          lighton3();
                          break;
                      case light4:                                                // 停止
                           send_str4( );
                          lighton4();
                          break;
                          case light5:                                                // 停止
                           send_str5( );
                          lighton5();
                          break;
                          case light6:                                                // 停止
                           send_str6( );
                          lighton6();
                          break;
                          case light7:                                                // 停止
                           send_str7( );
                          lighton7();
                          break;
             }                                 
         }
        }
}

发送asc码,不能发汉字吧

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top