微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎么样跳出题中的while(1)的死循环

怎么样跳出题中的while(1)的死循环

时间:10-02 整理:3721RD 点击:
如果key>=11时,怎样跳出这个函数~~~~~求教 goto   或break或  return 的使用       

void DisplayKey_point        (void)                         //数字模块
                {
           while(1)
                   {
                    if(ReadKey())//如果没有按键按下,则直接退出
                           {
                          
                           key=IdentifyKey();//识别按键编号
                           while(ReadKey());
                            }
                    if(key==1){DisplayKey(q,0x31);}
                        if(key==2){DisplayKey(q,0x32);}               
                        if(key==3){DisplayKey(q,0x33);}
                    if(key==4){DisplayKey(q,0x34);}
                        if(key==5){DisplayKey(q,0x35);}
                    if(key==6){DisplayKey(q,0x36);}
                          if(key==7){DisplayKey(q,0x37);}       
                        if(key==8){DisplayKey(q,0x38);}
                        if(key==9){DisplayKey(q,0x39);}
                        if(key==10){DisplayKey(q,0x30);}  }
                        if(key>=11){}
                 }       

加break

刚试了一下!如果加break导致那个函数失效,调用不了!想强制用goto!求赐教···

直接写成while(key<11)

改成这样不行的,我需要这个死循环,你这样是可以跳出这函数!但我的设计其他模块会冲突!很难说清楚!现在要的就是跳出这函数和这死循环从而可以选择其他功能模块!

问题是你的跳出条件是什么,程序中最好少用goto

if(key>=11)时跳出,我知道要少用goto!请问有什么其他方法呢·····

我研究出来了,是加break!但我的效果不太好!继续和大家讨论下更好的建议···thx

void DisplayKey_point(void)                         //数字模块
{
   while(1)
   {
      if(ReadKey())//如果没有按键按下,则直接退出
      {
         key=IdentifyKey();//识别按键编号
         while(ReadKey());
      }
      if(key <= 10) (q,0x30+key);
      else  ?;  //要干什么自己写,不干什么就省略
    }
这程序做的,没见过实时性这么牛皮的

10看错了,处理一下

谢谢大哥啦,本菜鸟还需要多学习

呵呵   终于解决了

不能说解决!方法还有很多的,还需要更多学习···

LOOP:(在想跳到的地方)
goto LOOP;(在想跳出的地方)
试过有用的

要是break效果不好...你加入个中断试试

return

你为什么不用switch呢

switch应该和那个情况一样

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

网站地图

Top