标题:
为什么这单片机程序不能循环啊,八个灯亮了后程序就停了
[打印本页]
作者:
w322405
时间:
2017-8-11 23:44
标题:
为什么这单片机程序不能循环啊,八个灯亮了后程序就停了
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint);
void main()
{
uchar a;
uint i;
a=0xff;
while(1)
{ //如果把a=0xff放在这就只有一个灯循环了
for(i=0;i<8;i++)
{
a=a<<1;
P1=a;
delay(300);
for(i=0;i<8;i++)
{
a=_crol_(a,1);
P1=a;
delay(300);
}
}
}
}
void delay(uint xm)
{
uint j,k;
for(j=xm;j>0;j--)
for(k=110;k>0;k--);
}
作者:
宝哥哥
时间:
2017-8-12 00:28
延时程序那里看看。
作者:
宝哥哥
时间:
2017-8-12 00:28
延时的定义你可以改一下。
作者:
ZXHREG
时间:
2017-8-12 08:02
都是零了就都亮,循环也是零
作者:
HC6800-ES-V2.0
时间:
2017-8-12 08:16
循环没有停,只是你看不到效果而已!
原因是:
你的第一次循环,让灯全部亮了,没有复位,所以,以后的所有循环,你都看不到效果了。
这样改:
循环完后,重新赋值a=0xff
作者:
w322405
时间:
2017-8-12 10:05
HC6800-ES-V2.0 发表于 2017-8-12 08:16
循环没有停,只是你看不到效果而已!
原因是:
你的第一次循环,让灯全部亮了,没有复位,所以,以后的所 ...
要是在while(1)下赋值a=0xff就不能进第一个for里的i值只能加一了,该怎么解决
作者:
hawklm
时间:
2017-8-12 23:06
用 do{} while()试试?
作者:
驱蚊灯
时间:
2017-8-13 05:56
void main()
{
whiie(1)
{
}
}
作者:
驱蚊灯
时间:
2017-8-13 05:57
主程序加个while(1)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1