单片机流水灯程序,烧到单片机里,8个灯全亮,是怎么回事,下面使程序,求指教。谢谢!
#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xfe...
#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++;
} 展开
#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++;
} 展开
3个回答
展开全部
首先纠正你对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)。
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)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
流水灯试验不用那么麻烦的吧,直接用移位操作就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询