qq_45597025 2020-04-23 11:24 采纳率: 50%
浏览 11
已结题

大家好,有一个关于51单片机的问题想请教一下,51开发版外接了一HC06蓝牙模块,然后再手机串口软件上发送1想让程序直接跳到step3,发送二直接跳到step5这样写程序可以吗

大家好,有一个关于51单片机的问题想请教一下,51开发版外接了一HC06蓝牙模块,然后再手机串口软件上发送1想让程序直接跳到step3,发送二直接跳到step5,这样写程序可以吗?

不可以的话希望可以给出修改意见,开发板晶振是12MHZ的,咨询了一下用11.0592的比较好,自己焊接的话怎么保证焊好后晶振是1.0592的呢?

是个不太懂的小白,希望解答的时候可以基础一些

number是我定义的一个全局变量,初值是0

主函数: void main()

{

   AS=0; //关锁

LcdWriteCom(0x01); //清屏

delay(1000);

LcdInit();   //初始化LCD屏

delay(1000);

Step=0;  //初值

Step5=0;   

Error_Num=0x00; //错误次数初值为0


UsartInit();

while(number==0)

{   

key_num=KeyDown();          //读取输入值


switch(Step)

{

case 0:

{Step_0();break;}

case 1:

{Step_1();break;}

case 2:

{Step_2();break;}

case 3:

{Step_3();break;}

case 4:

{Step_4();break;}

case 5:

{Step_5();break;}

case 6:

{Step_6();break;}

  

}


}

if(number==1)

{

Step_3();

}

else if(number==2)

{

Step_5();

}

}



中断:

void UsartInit()

{

  TMOD=0x20;

  TH1=0xF3;

  TL1=0xF3;

  PCON=0x80;

  TR1=1;

  SCON=0x50;

  ES=1;

  EA=1;

  TI=0;

  RI=0;

}


void ustart() interrupt 4 

{

 u8 receive_data;

  EA = 0;

 if(RI) //当硬件接收到一个数据时,RI会置1

{

RI = 0;

receive_data = SBUF;//接收到的数据

   if(receive_data==0x31)

{

number=1 ;

}

else if(receive_data==0x32)

{

    number=2;

    } 

  

 

}


EA = 1;



  • 写回答

14条回答 默认 最新

  • bosaidongmomo 2020-04-23 11:35
    关注
    需求并不难,但是你代码有点乱.
    
    思路可以是这样
    
    你Step 都没有被赋值,程序肯定只能走swicth为0的分支
    
    我不太清楚你如何接受 手机的 12 数据
    
    如果是通过一个函数接收的话 假设是 readKey();
    int key = readKey();
    switch(key){
      case 1:
        // do something
      case 2:
        // do something
    }
    
    比方说 你有一个界面,是步骤1-5的界面
    可以这么写
    int exit = 0;
    int step = 0;
    while(!exit){
      if(step==1){
        // do something
        step++;
      }else if(step ==2){
        // do something
        step++;
      }
      ..
      else if(step ==5)
      {
        // do someting;
        exit = 1;
      }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!