51单片机流水灯c程序解读

#include<reg51.h>
bit ddr;
void led()
{
static char i;
static unsigned int c;
c++;
if (c==60000)
{c=0;
i++;
if(i==8)
{
i=0;
ddr=!ddr;
}
if(ddr==1)
{
P1=~(1<<i);
}
else
{
P1=~(1<<(7-i));

}

}
}
void main()
{
while(1)
{
led();
}
}
谁能帮我解释下为什么要用ddr这个变量,谢谢。

n你的流水灯是来回的 从左到右 再从又到左ddr表示方向 为1时一个方向 为0时一个方向 自身取反就是不断地改变方向
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-07
布尔变量,取值范围为0或1,作为条件判断。
第2个回答  2013-09-07
ddr表示方向 为1时一个方向 为0时一个方向
第3个回答  2013-09-07
作为一个标志位,令P1的输出正向或反向,当LED从一头亮到另一头后,改变DDR,就改变了流水灯的方向。

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
for(i=0;i<8;i++) \/\/8个流水灯反向逐个闪动 { P1=~temp;delay(100); \/\/调用延时函数 temp>>=1;} temp=0xFE;for(i=0;i<8;i++) \/\/8个流水灯依次全部点亮 { P1=temp;delay(100); \/\/调用延时函数 temp<<=1;} temp=0x7F;for(i=0;i<8;i++) \/\/8个流水灯依次反向全部点亮...

51单片机C程序实验LED灯:[2]左到右的流水灯
说明:实现一排灯从左到右依次一个一个点亮熄灭,实现流水灯 proteus电路图 元件清单:(分别是) 51单片机 电容 瓷片电容(也可用普通电容) 晶振 红色二极管 电阻 电路图的连接方法 程序清单 说明:本例有两种程序写法 第一种是入门级别比较基础的写法 先是依旧延时子程序,然后主程序利用直接赋值,与...

单片机流水灯怎么实现的?
一般来说,实现流水灯功能需要以下步骤:首先确定单片机型号和开发环境,并熟悉指令集和寄存器配置。然后确定LED灯的连接方式,并编写程序来控制LED灯的亮灭状态。最后在程序中添加延时函数来实现LED灯的亮灭延迟。在编写程序时,需要注意语法错误和逻辑错误,并进行测试和调试,以确保程序能够正确运行并实现预...

51单片机流水灯用C语言编写的设计程序???
include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int void delay(uint z);main(){ uchar aa;while(1){ aa=0xfe;P1=aa;delay(100);while(1){ aa=_crol_(aa,1);P1=aa;delay(100);} } } void delay(uint z){ uint x,y;for(x=z;x>0;x-...

谁能帮我解释以着这个51单片机的c语言程序,说的详细些,谢谢!
估摸着是点亮流水灯的代码吧,首先delay();是延时这能明白吧!while(1){ temp=0xfe;P1=temp; \/\/先让P1口值为0xfe,估计是先点亮一个LED灯 delay();for(i=1;i<8;i++){ a=temp<>(8-i); \/\/temp右移8-i位 P1=a|b; \/\/P1赋值,实际上就是让P1=(temp循环左移i位),...

51单片机如何用C程序中的_crol_和_cror_实现流水灯来回显示
void DelayMS(uint x){ uchar i;while(x--){ for(i=0;i<120;i++);} } \/\/主程序 void main(){ uchar i;P2=0x01;while(1){ for(i=0;i<7;i++){ P2=_crol_(P2,1); \/\/P2 的值向左循环移动 DelayMS(150);} for(i=0;i<7;i++){ P2=_cror_(P2,1); \/\/P2 的值...

51单片机流水灯程序
程序如下:include <reg52.h> sbit led1 = P2^0;sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3;sbit led5 = P2^4;sbit led6 = P2^5;sbit led7 = P2^6;sbit led8 = P2^7;void main(){ int i,j;\/\/点亮第一个灯 led1 = 1;led2 = 0;led3 = 0;led4 = ...

很简的51单片机C语言流水灯程序
1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include<reg51.h> \/\/51单片机头文件#include <intrins.h> \/\/包含有左右循环移位子函数的库#define uint unsigned int \/\/宏定义#define uchar unsigned char \/\/宏定义sbit beep=P2^3;void delay(uint z) \/\/延时函数,z...

解释一下这个流水灯程序
这只是灯亮的初始状态不一样,如果temp=0x01为第一位先亮(先亮指初始状态,因为不知道你的是低电平还是高电平驱动),那么temp=0x7F就是第八位先亮,而且两个循环放方向不一样!一个向左,一个向右,说白了就是两段程序形成的状态是互补的形式。

一个用C语言做51单片机做流水灯控制向左移动一位,右边补0的一段程序...
\/\/右边补0,直接移位就可以temp<,=1; 如果流水灯只有一个亮,下面的程序就是对的,移位之后补1.include "reg51.h"void delay(unsigned char m);main(){ unsigned char temp;temp=0xfe; \/\/temp=1111 1110,使得P1口的某个引脚为低电平(亮)while(1){ P1=temp; \/\/P1口的数据来自...

相似回答