【问题标题】:How to break a loop in mikroC如何打破 mikroC 中的循环
【发布时间】:2015-08-07 08:35:04
【问题描述】:

我主要使用 mikroC (Microchip) 进行编程。我需要在我的代码中中断一个循环,但“break;”没有结果你能帮我吗? 我需要在满足条件后“停止”一切!

这是我的项目流程图:

这是我的代码:

void main() {
    int x=0;
    TRISD=0B00011111;
    TRISB=0B11111000;
    PORTB.F0=0;
    PORTB.F1=0;
    PORTB.F2=0;
    while(1){
        if(x==3){break;}
        if(PORTD.F1==0)
        {
            if(PORTB.F2==0){PORTB.F1=1;delay_ms(50);PORTB.F0=1;delay_ms(300);PORTB.F2=1;}
        }
        if(PORTB.F2==1){PORTB.F0=0;}
        if(PORTD.F1==1)
        {
            PORTB.F1=0;PORTB.F0=0;PORTB.F2=0;
        }
        PORTB.F2=0;
        delay_ms(300);
        while(x<=4){
            x++;
            if(PORTD.F1==0)
            {
                if(PORTB.F2==0){PORTB.F1=1;delay_ms(50);PORTB.F0=1;delay_ms(300);PORTB.F2=1;}
            }
            if(PORTB.F2==1){PORTB.F0=0;}
            if(PORTD.F1==1){delay_ms(300);PORTB.F0=0;PORTB.F1=0;PORTB.F2=0;}
        }
    }
}

【问题讨论】:

  • 您的第二个 while 循环以x = 0 开头,并在x = 5 时退出(当x &lt;= 4 为假时),因此您的if(x==3){break;} 永远不会被触发。
  • 那么我该如何解决这个问题?
  • 我建议更好地格式化你的代码...如果你想要单行,然后编写一个带有适当参数的函数,然后调用它,而不是在一行中塞满多个语句。
  • 当然我会这样做,但首先要获得正确的代码
  • 现在,停止工作,让 'PORTB.F1' 和 'PORTB.F2' 仍然高!

标签: c loops break


【解决方案1】:

尝试:

if(x>=3){break;}

因为你在这里将 x 增加到 5:while(x&lt;=4){x++,然后你进入了一个无限循环。

【讨论】:

  • 好的,但是请告诉我这种情况的确切位置,因为目前的位置不起作用。
  • @MahdiAlzubaidi 流量一定是卡在某个地方了。
  • 这其实是正确的答案。你的 X 溢出,你继续运行
  • 你在x = 5时退出第二个循环,然后你回到第一个循环的开始,测试是否x==3(这是错误的),然后永远继续,因为你永远不会修改再次x
  • 啊@this 说,把你的if(x==3)̀ test 改成if(x &gt;= 3)
猜你喜欢
  • 1970-01-01
  • 2013-01-30
  • 2015-10-04
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
相关资源
最近更新 更多