标题:
如何在这个单片机程序加一个 循环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