標題: 求大神看看這單片機程序哪里出錯了,找不出原因 [打印本頁]

作者: jase    時間: 2023-4-11 21:44
標題: 求大神看看這單片機程序哪里出錯了,找不出原因
寫了一個電機控制程序,需要有急停,當(dāng)急停按鍵按下時,電機立刻停止工作。用break結(jié)束循環(huán),結(jié)果程序判斷出錯。麻煩大神看看,究竟哪里有問題?

0.png (74.12 KB, 下載次數(shù): 37)

0.png

作者: Hephaestus    時間: 2023-4-12 00:16
break不能直接用于if,除非if屬于循環(huán)內(nèi)部的一個子句。

更離譜的是你以為寫了個break語句電機就能break???
作者: a399288395    時間: 2023-4-12 07:47
brea是關(guān)鍵詞,不是你這樣用的 , 你還需要閱讀以下內(nèi)容學(xué)習(xí)一下,
break語句通常用在循環(huán)語句和開關(guān)語句中。當(dāng)break用于開關(guān)語句switch中時,可使程序跳出switch而執(zhí)行switch以后的語句;如果沒有break語句,則會從滿足條件的地方(即與switch(表達式)括號中表達式匹配的case)開始執(zhí)行,直到switch結(jié)構(gòu)結(jié)束。
當(dāng)break語句用于do-while、for、while循環(huán)語句中時,可使程序終止循環(huán)。而執(zhí)行循環(huán)后面的語句,通常break語句總是與if語句聯(lián)在一起。即滿足條件時便跳出循環(huán)。
例:
main()
{
    int i=0;
    char c;
    while(1) /*設(shè)置循環(huán)*/
    {
        c='\0'; /*變量賦初值*/
        while(c!=13&&c!=27) /*鍵盤接收字符直到按回車或Esc鍵*/
        {
            c=getch();
            printf("%c\n",c);
        }
        if(c==27)
        break; /*判斷若按Esc鍵則退出循環(huán)*/
        i++;
        printf("The No. is %d\n",i);
    }
    printf("The end");
}
注意:
1. break語句對if-else的條件語句不起作用。
2. 在多層循環(huán)中,一個break語句只向外跳一層。
作者: jase    時間: 2023-4-13 14:43
根據(jù)提示:break需要放在循環(huán)內(nèi),還有步進電機使用break做急停的范程,我用for語句進行修改,問題已解決,也達到預(yù)期,以下是我的修改:

1681368077030.png (36.91 KB, 下載次數(shù): 49)

1681368077030.png

作者: 23568709    時間: 2023-4-14 15:28
break語句通常用在循環(huán)語句和開關(guān)語句中。
當(dāng)break用于開關(guān)語句switch中時,可使程序跳出switch而執(zhí)行switch以后的語句;如果沒有break語句,則會從滿足條件的地方開始執(zhí)行,直到switch結(jié)構(gòu)結(jié)束。
當(dāng)break語句用于do-while、for、while循環(huán)語句中時,可使程序終止循環(huán)。
執(zhí)行循環(huán)后面的語句,通常break語句總是與if語句聯(lián)在一起。即滿足條件時便跳出循環(huán)。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1