刚学单片机,我按照习题的提示编了一个流水灯循环点亮,先从左再到右,但是发现一个问题,第二次左边点亮时,先是第一个亮就跳到最后一个亮再从左开始点亮。
代码下面
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay_ms(uint time)
{
uint i,j;
for(i=time;i>0;i--)
for(j=112;j>0;j--)
{;}
}
void main(void)
{
uchar right;
uchar left;
uchar loop;
uchar t;
while(1)
{
left=0xfe;
P1=left;
delay_ms(300);
right=0x7f;
P1=right;
delay_ms(300);
for(loop=0;loop<8;loop++)
{
left=(left<<1)|0x01;
P1=left;
delay_ms(300);
}
for(t=0;t<8;t++)
{
right=(right>>1)|0x80;
P1=right;
delay_ms(300);
}
}
} |