单片机流水灯程序,烧到单片机里,8个灯全亮,是怎么回事,下面使程序,求指教。谢谢!

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint i;
uchar num;
void main()
{
TMOD=0x01;
TH0=0xd8;
TL0=0xf0;
EA=1;
ET1=1;
TR1=1;
while(1)
{
if(num==100);
{
num=0;
if(i!=8)
{
P2=table[i];
i++;
}
else i=0;
}
}
}
void time0() interrupt 1
{
TH0=0xd8;
TL0=0xf0;
num++;
}

你这程序写得太复杂了吧,延时位置不对,主循环程序改成下面这样才行。
while(1)
{
if(i!=8)
{
P2=table[i];
i++;
while(num<100);num=0;
}
else i=0;
}
还有:c3344c指出的:
ET1=1;//这一行应改成ET0 = 1;
TR1=1; //这一行应改成TR0 = 1;
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-09
首先纠正你对T0初始化的错误:
void main()
{
TMOD=0x01;
TH0=0xd8;
TL0=0xf0;
EA=1;
ET1=1;//这一行应改成ET0 = 1;
TR1=1; //这一行应改成TR0 = 1;

理由:你试图使用定时器T0的中断改变num的值,但你在初始化T0定时器时,启动的却是T1(TR1 = 1),且使能的是T1的中断(ET1 = 1)。
第2个回答  2013-06-09
流水灯试验不用那么麻烦的吧,直接用移位操作就行了

...8个灯全亮,是怎么回事,下面使程序,求指教。谢谢!
理由:你试图使用定时器T0的中断改变num的值,但你在初始化T0定时器时,启动的却是T1(TR1 = 1),且使能的是T1的中断(ET1 = 1)。 c3344c | 发布于2013-06-09 举报| 评论 0 0 流水灯试验不用那么麻烦的吧,直接用移位操作就行了 492924696lin | 发布于2013-06-09 举报| 评论 0 0 为您推荐: ...

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
void delay(uint); \/\/声明延时函数 void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) \/\/8个流水灯逐个闪动 { P1=~temp;delay(100); \/\/调用延时函数 temp<<=1;} temp=0x80;for(i=0;i<8;i++) \/\/8个流水灯反向逐个闪动 { P1=~temp;delay(100);...

51单片机开发板八个led灯依次点亮(就是流水灯)然后再全部
这段代码实现了8个LED灯的流水点亮效果,先点亮第一个LED,等待600毫秒后,再点亮第二个LED,依此类推,直到所有LED都点亮,然后循环重复。

用单片机设计8个led灯同时闪烁的程序!!
1:设定一个变量i,可以从0到3循环的变化 2:检测一个经过消抖处理的按键,按一下,i+1 3:当i值为各个值时,执行相应的花样。流水灯参考程序 include include define uchar unsigned char uchar j,temp;void delay(unsigned int ms){ uchar t;while(ms--)for(t=0;t<123;t++);} void ma...

单片机8个流水灯依次亮的c程序流程图
流程:1.点亮1个灯;2.延时100毫秒 3.灭第一个灯,点亮第二个灯;4延时100毫秒;。。。依次类推,直到灭第8个灯,再返回到1,重新开始。

怎么用单片机做出8个LED同时亮,但亮度不同的流水灯?
首先,例如你要最亮的灯先点亮,隔几十微秒后点亮第二个灯,再相隔同样时间点亮第三个灯……依次类推间隔一定时间点亮八个灯。但间隔时间不要太大,超过十几毫秒就不行了。然后再间隔相同的时间一次性把灯全关了,再间隔几十微秒回到上面的状态依次点亮灯。……一直这样循环。这样的话因为人的视力有...

单片机流水灯1到8依次亮,什么原理?
单片机流水灯1到8依次亮,是通过编程控制单片机的I\/O端口实现的。通常使用循环结构和延时函数,依次将每个LED灯对应的I\/O端口置为高电平,使其亮起,然后延时一段时间,再将其置为低电平,使其熄灭。通过不断循环这个过程,就可以实现流水灯的效果。单片机流水灯是一种常见的电子制作项目,它通过单片机...

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

用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)_百度...
P3=0xfe;\/\/第一个灯亮 delay();\/\/延时 P3=0xfd;\/\/第二个灯亮 delay();P3=0xfb;\/\/第三个灯亮 delay();P3=0xf7;\/\/第四个灯亮 delay();P3=0xef;\/\/第五个灯亮 delay();P3=0xdf;\/\/第六个灯亮 delay();P3=0xbf;\/\/第七个灯亮 delay();P3=0x7f;\/\/第八个灯亮 delay();}...

单片机八个流水灯左右依次点亮
1、首先,打开proteus,可以看到界面上方有库,点开,在库里选择做实验需要的元件。2、如图所示,我们做流水灯实验所需要的元件,就是红色方框里面的元件,一定都要添加进来,要不然实验就做不成功。3、接着,我们按照电路原理图,排布好元件,连好线,最后的电路如图所示。4、我们把实验代码插入单片机,...

相似回答