单片机流水灯 左右循环位移程序问题,哪里有错误?
。。。intb=0x80,a=0;。。。if(num==20){if(a<=7){b=_crol_(b,1);P1=b;a++;num=0;}else{if(a<=14)...
。。。
int b=0x80,a=0;
。。。
if(num==20)
{ if(a<=7)
{b=_crol_(b,1);
P1=b;
a++;
num=0; }
else
{ if(a<=14)
{b=_cror_(b,1);
P1=b;
num=0;
a++;}
else
{a=0;num=20;}
} 展开
int b=0x80,a=0;
。。。
if(num==20)
{ if(a<=7)
{b=_crol_(b,1);
P1=b;
a++;
num=0; }
else
{ if(a<=14)
{b=_cror_(b,1);
P1=b;
num=0;
a++;}
else
{a=0;num=20;}
} 展开
3个回答
展开全部
程序不注重格式,建议你养成好的编程风格。1.num变量声明没,声明的话有没有初始化值。还有就是num在这个程序中有什么意思。2.既然是流水灯,怎么没见你的延时,编写函数或使用定时器可以达到延时效果。没延时的话,灯循环亮的太快,人眼看的话就是全灭。
网上这样的简单程序多的是,可以看看别人是怎么写的。
网上这样的简单程序多的是,可以看看别人是怎么写的。
追答
这个程序你能运行吗?是怎么编译过去的,左边大括号比右边多一个。我调了调你的程序,修改版如下:
#include
#include
unsigned char num;
void main()
{
int b=0x80,a=0;
P1=0x00;
TMOD=0x10;
TH1=0X3C;
TL1=0XB0;
EA=1;
ET1=1;
TR1=1;
while(1)
{
if(num==20)
{
if(a=0)
{
b=_crol_(b,1);
P1=b;
a++;
num=0;
}
else if(a7)
{
b=_cror_(b,1);
P1=b;
num=0;
a++;
}
else if(a14)
{
a=0;
b=0x80;
num=0;
}
}
}
}
void interrupt_timer1() interrupt 3
{
TH1=0X3C;
TL1=0XB0;
num++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
……
void main()
{
//……初始化
while(1) {
if(num >= 20) {
num = 0;
a++;
if (a <= 7) b = _crol_(b, 1);
else if (a < 14) b = _cror_(b, 1);
else a = 0;
P1 = b;
}
}
}
试试看。
void main()
{
//……初始化
while(1) {
if(num >= 20) {
num = 0;
a++;
if (a <= 7) b = _crol_(b, 1);
else if (a < 14) b = _cror_(b, 1);
else a = 0;
P1 = b;
}
}
}
试试看。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-19
展开全部
b=0x80错了
追问
不是
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询