单片机流水灯 左右循环位移程序问题,哪里有错误?

。。。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;}
}
展开
 我来答
dj361ny
2013-10-19
知道答主
回答量:8
采纳率:0%
帮助的人:1.2万
展开全部
程序不注重格式,建议你养成好的编程风格。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++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2013-10-19 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
……
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错了
追问
不是
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式