标题: 求大神看看这单片机程序哪里出错了,找不出原因 [打印本页]

作者: jase    时间: 2023-4-11 21:44
标题: 求大神看看这单片机程序哪里出错了,找不出原因
写了一个电机控制程序,需要有急停,当急停按键按下时,电机立刻停止工作。用break结束循环,结果程序判断出错。麻烦大神看看,究竟哪里有问题?

0.png (74.12 KB, 下载次数: 37)

0.png

作者: Hephaestus    时间: 2023-4-12 00:16
break不能直接用于if,除非if属于循环内部的一个子句。

更离谱的是你以为写了个break语句电机就能break???
作者: a399288395    时间: 2023-4-12 07:47
brea是关键词,不是你这样用的 , 你还需要阅读以下内容学习一下,
break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则会从满足条件的地方(即与switch(表达式)括号中表达式匹配的case)开始执行,直到switch结构结束。
当break语句用于do-while、for、while循环语句中时,可使程序终止循环。而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。
例:
main()
{
    int i=0;
    char c;
    while(1) /*设置循环*/
    {
        c='\0'; /*变量赋初值*/
        while(c!=13&&c!=27) /*键盘接收字符直到按回车或Esc键*/
        {
            c=getch();
            printf("%c\n",c);
        }
        if(c==27)
        break; /*判断若按Esc键则退出循环*/
        i++;
        printf("The No. is %d\n",i);
    }
    printf("The end");
}
注意:
1. break语句对if-else的条件语句不起作用。
2. 在多层循环中,一个break语句只向外跳一层。
作者: jase    时间: 2023-4-13 14:43
根据提示:break需要放在循环内,还有步进电机使用break做急停的范程,我用for语句进行修改,问题已解决,也达到预期,以下是我的修改:

1681368077030.png (36.91 KB, 下载次数: 49)

1681368077030.png

作者: 23568709    时间: 2023-4-14 15:28
break语句通常用在循环语句和开关语句中。
当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则会从满足条件的地方开始执行,直到switch结构结束。
当break语句用于do-while、for、while循环语句中时,可使程序终止循环。
执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1