LED实现流水灯控制,循环三次停止

为何循环三次不停止?求解!#include<reg52.h>unsignedchara,b;voiddelayms(unsignedintms){unsignedchar... 为何循环三次不停止?求解!
#include<reg52.h>
unsigned char a,b;
void delayms(unsigned int ms)
{
unsigned char i;
while(ms--)
for(i=0;i>120;i++);
}
void left()
{
unsigned char temp;
temp=0x01;
P1=~temp;
for(b=0;b<8;b++)
{
delayms(8000);
temp=temp<<1;
if(temp==0x00)
temp=0x01;
P1=~temp;
}
}
void main()
{
while(1)
{
for(a=0;a<3;a++)
{
left();
}
}
}
展开
 我来答
hhhhhhhhhhhh59
推荐于2018-05-26
知道答主
回答量:5
采纳率:0%
帮助的人:3万
展开全部
你可以把你的delayms()函数里边的while(ms--)去掉,可以尝试换成外部for循环..
for(int j=0;j<ms;j++)
for()...

其实你做个流水灯的话,具体的延时时间你实验多几次就可以把握了。至于你出现的问题是一直不停止,那是肯定的 你都把那个left()函数放到while(1)死循环中去了。
匿名用户
2014-03-28
展开全部
试试这个
#include<reg52.h>
unsigned int a,b;
void delayms(unsigned int ms)
{
unsigned int i,j;
for(j=0;j<ms;j++)
for(i=0;i<120;i++);
}
void left()
{
unsigned char temp;
temp=0x01;
P1=~temp;
for(b=0;b<8;b++)
{
delayms(8000);
temp=temp<<1;
if(temp==0x00)
temp=0x01;
P1=~temp;
}
}

void main()
{

for(a=0;a<3;a++)
{
left();
}
P1=0x00;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蘇蘇蘇丶乞兒
2018-05-26
知道答主
回答量:7
采纳率:0%
帮助的人:7063
展开全部
完全看不懂,感觉好厉害。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lygszmjj
2014-03-25 · TA获得超过1814个赞
知道小有建树答主
回答量:1192
采纳率:0%
帮助的人:422万
展开全部
while循环不能退出,怎么能停止呢?
追问
把while(1)去掉也不可
追答
那就奇怪了。

if(temp==0x00)
temp=0x01;
P1=~temp;

是不是应该改成下面的?
if(temp==0x00)
{ temp=0x01;
P1=~temp;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式