一个小程序,两个子函数分别为控制流水灯和让电机旋转,想让两个功能同时实现,下到单片机里时两个功能不

一个小程序,两个子函数分别为控制流水灯和让电机旋转,想让两个功能同时实现,下到单片机里时两个功能不,第1张

哦,是你啊,这程序,给你分析下。

首先你要看好,在while(1)里面,两个函数体是不是单独顺序执行的?在你执行完发光管程序后,才执行电机程序,如此往复。所以才会出现你说的情况。如果想同时,那么请将一个放入main函数,另一个放到定时器里面去执行,这样就可以了。另外,通过你的程序可以看出,你没有延时函数,这将导致你的八个灯同时亮,因为人眼根本看不到灯的变化。电机呢,貌似是步进电机,电机全速运转。但是,由于没有延时函数,八个灯和电机执行的时间都很短,灯是闪烁的,电机只是一抖一抖的。

#include<stdioh>

void main()

{

int x,y;

x=y=0;

while(x<15)

{

y++,x+=++y;

printf("%d,%d\n",y,x);

}

printf("%d,%d",y,x);

}

2,2

4,6

6,12

8,20

8,20Press any key to continue上面是运行结果,执行一次while中的语句,y值增加2,x加上的值是y增加2后的值

while(1)其中1代表一个常量表达式,while(1) 表示无限循环,除非你设置break等类似的跳出循环语句循环才会中止

while(i--)其中i是一个变量,因此表达式i--有不同的值,依次递减,i--是先取值后减,--i先加后取值,所以i--的值同未执行该自减运算时的i相等。

扩展资料:

while(1) 表示无限循环。

while的语法格式为 :

while(condition)

{

//do something 1

}

//do something 2

condition 为循环条件,每次判断condition是否为真,为真时执行while循环体中的语句块(代码中块1);为假时结束循环,执行后续语句(代码中块2)。

这里condition为1 表示条件永远为真,一直执行循环体内语句。为了结束循环,可以在循环体内满足某些特定条件使用break跳出循环。

如下:

while(1)

{

//do something

if(condition)

{

break;

}

}

参考资料:

百度百科-while

// 记得多给点分哦,很难写的。

// C

#include <stdioh>

int strnmerge(charstr,int n,char consts1,char consts2){

    while(n >  0) {

        if(!(s1) && !(s2)) break;

        if(s1 && n > 0) {

            str++ = s1++;

            --n;

        }

        if(s2 && n > 0) {

            str++ = s2++;

            --n;

        }

    }

    str = '\0';

}

int main() {

    char s1[] = "aaaa";

    char s2[] = "bbbbbbbbb";

    char str[100];

    strnmerge(str, 10, s1, s2);

    printf("s1 = %s\n", s1);

    printf("s2 = %s\n", s2);

    printf("str = %s\n", str);

    return 0;

}

// C++

#include <iostream>

using namespace std;

int strnmerge(charstr,int n,char consts1,char consts2){

    while(n >  0) {

        if(!(s1) && !(s2)) break;

        if(s1 && n > 0) {

            str++ = s1++;

            --n;

        }

        if(s2 && n > 0) {

            str++ = s2++;

            --n;

        }

    }

    str = '\0';

}

int main() {

    char s1[] = "aaaa";

    char s2[] = "bbbbbbbbb";

    char str[100];

    strnmerge(str, 10, s1, s2);

    cout << "s1  = " << s1  << endl;

    cout << "s2  = " << s2  << endl;

    cout << "str = " << str << endl;

    return 0;

}

n%10 是n除以10取余数 如果n=12那么n%10=2

因为你定义的n是INT类型的,所以输出n%10后,它执行n=n/10,正因为N是INT类型的,所以N/10是取整数部分的,如果N=13,那么N/10=1

当你输入小于0的N时,它不满足WHILE条件,所以一次都不循环

当你输入大于0的N时,它才开始循环,一旦N小于10了,它就跳出循环了

因为N小于10,那么它除以10的结果的整数部分一定为0,就不满足WHILE的条件了

现在懂了吗?

以上就是关于一个小程序,两个子函数分别为控制流水灯和让电机旋转,想让两个功能同时实现,下到单片机里时两个功能不全部的内容,包括:一个小程序,两个子函数分别为控制流水灯和让电机旋转,想让两个功能同时实现,下到单片机里时两个功能不、解释一下这个C语言小程序、while(1) 什么意思 while(i--)什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10087211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存