只需要让 小灯依次点亮即可
每次亮灭添加一个延时函数
#include <REGX51.H>
#include <INTRINS.H>
// 实现流水灯
//延时函数
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//第一种方法 依次进行赋值
void main()
{
while(1)
{
P2 = 0xFE;
Delay500ms();
P2 = 0xFD;
Delay500ms();
P2 = 0xFB;
Delay500ms();
P2 = 0xF7;
Delay500ms();
P2 = 0xEF;
Delay500ms();
P2 = 0xDF;
Delay500ms();
P2 = 0xBF;
Delay500ms();
P2 = 0x7F;
Delay500ms();
}
}
这个就是笨办法了依次点亮即可
所以我想整一个花的,没想到出了点问题,我寻思给他位移动 ,由于自动补0
导致不是流水灯了,但还是很有意思的
直接上代码
#include <REGX51.H>
#include <INTRINS.H>
// 实现流水灯
//延时函数
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//第二种方法 使用循坏
void main()
{
while(1)
{
P2 = 0xFE;
while(1)
{
Delay500ms();
P2 = P2<<1;
}
}
}
加油,好好学习