标题: 如何在这个单片机程序加一个 循环4次 二极管熄灭?求帮助 [打印本页]

作者: 杀死呢个刘彪    时间: 2019-9-18 15:37
标题: 如何在这个单片机程序加一个 循环4次 二极管熄灭?求帮助
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,k;
void delay(uint);
void main()
{
while(1)
{
temp=0Xfe;
        for(k=0;k<3;k++)
        {
        P1=temp;
                delay(200);
                temp=_crol_(temp,3);
        }
        temp=0X7f;
        for(k=0;k<8;k++)
                {
        P1=temp;
                delay(300);
                temp=_cror_(temp,1);
        }
}
}
void delay(uint x)
{
uint i,j;
        for(i=0;i<x;i++)
        for(j=0;j<110;j++);
}




怎么加一个 循环4次 二极管熄灭,求大神给个思路


作者: hantu    时间: 2019-9-18 16:11
在while(1)循环里的最外层加就行了
作者: 陈润源home    时间: 2019-9-18 20:19
uchar m;
作者: tyrl800    时间: 2019-9-18 21:42
while(1)
{for(i=0;i<4;i++){
temp=0Xfe;
        for(k=0;k<3;k++)
        {
        P1=temp;
                delay(200);
                temp=_crol_(temp,3);
        }
        temp=0X7f;
        for(k=0;k<8;k++)
                {
        P1=temp;
                delay(300);
                temp=_cror_(temp,1);
        }
}
}
P1=0xff;
}
作者: H方与圆H    时间: 2019-9-18 22:31
我现在学习标志位,所以用标志位,在你原有程序上加入了a,b两个标志位。IF语句检测b的状态流水灯循环,每循环一次让a自加一。IF语句检测a的状态,加到四变更b状态,b变更流水灯不在循环。
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,k,a,b;
void delay(uint);
void aaaa();
void bbbb();
void main()
{   
    b=1;   //标志位赋初值                 
    while(1)
    {
        bbbb();
        aaaa();                 
     }
}
void delay(uint x)
{
uint i,j;
        for(i=0;i<x;i++)
        for(j=0;j<110;j++);
}

void aaaa()
{
    if(b==1)   //检测标志位状态
    {
        temp=0Xfe;
        for(k=0;k<3;k++)
        {
            P1=temp;
            delay(200);
            temp=_crol_(temp,3);
        }
        temp=0X7f;
        for(k=0;k<8;k++)
        {
            P1=temp;
            delay(300);
            temp=_cror_(temp,1);
        }
    }
    a++;         //标志位自加一
}

void bbbb()
{
    if(a==4)     //检测标志位状态
        b=0;     //标志位变更
    P1=0xff;   //熄灭
}

作者: ms_zhang1    时间: 2019-9-19 09:39
H方与圆H 发表于 2019-9-18 22:31
我现在学习标志位,所以用标志位,在你原有程序上加入了a,b两个标志位。IF语句检测b的状态流水灯循环,每循 ...

未看到您的问题点,仅对编程习惯唠叨两句

变量声明时赋初值是个好习惯,变量a,使用前未赋初值;
尽量少用全局变量,子程序命名尽可能有意义;
建议抽空可以阅读《代码大全2》了解一下防御式编程,有利于后期复杂度高的项目代码维护
作者: qq603599910    时间: 2019-9-20 19:33
能用局部变量肯定用局部变量,做一个累积计数器呀,循环计数到4就LED翻转一次并计数清零.




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