想要实现:
8个发光管间隔200ms由上至下,
再由下至上,再重复一次,
然后全部熄灭。
结果只能来回流水闪烁,熄灭不了。
PS:LED连在P0口,
程序如下:
#include<reg52.h> //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{ //delay(500);大约延时500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=123;y>0;y--);
}
void main() //主函数
{
uchar a,i,j;
for(j=0;j<2;j++)
{
a=0xfe; //赋初值
for(i=0;i<8;i++) //左移
{
P0=a; //点亮小灯
delay(200); //延时200毫秒
a=_crol_(a,1); //将a变量循环左移一位
}
a=0x7f;
for(i=0;i<8;i++) //右移
{
P0=a; //点亮小灯
delay(200); //延时200毫秒
a=_cror_(a,1); //将a变量循环右移一位
}
}
P0=0xff; //全部熄灭
}
8个发光管间隔200ms由上至下,
再由下至上,再重复一次,
然后全部熄灭。
结果只能来回流水闪烁,熄灭不了。
PS:LED连在P0口,
程序如下:
#include<reg52.h> //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{ //delay(500);大约延时500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=123;y>0;y--);
}
void main() //主函数
{
uchar a,i,j;
for(j=0;j<2;j++)
{
a=0xfe; //赋初值
for(i=0;i<8;i++) //左移
{
P0=a; //点亮小灯
delay(200); //延时200毫秒
a=_crol_(a,1); //将a变量循环左移一位
}
a=0x7f;
for(i=0;i<8;i++) //右移
{
P0=a; //点亮小灯
delay(200); //延时200毫秒
a=_cror_(a,1); //将a变量循环右移一位
}
}
P0=0xff; //全部熄灭
}