单片机流水灯实现从上到下在从下到上在闪烁两次
时间: 2023-12-25 12:02:45 浏览: 25
以下是一个实现单片机流水灯从上到下再从下到上闪烁两次的程序:
```c
#include <reg52.h>
void delay(unsigned int time) { // 延时函数
unsigned int i, j;
for (i = time; i > 0; i--)
for (j = 112; j > 0; j--);
}
int main() {
unsigned char t, i;
while (1) {
// 从上到下
for (t = 0x01; t <= 0x80; t <<= 1) { // 从1到128循环移位
P1 = ~t; // 输出数据到P1口
delay(500); // 延时500ms
}
// 从下到上
for (t = 0x80; t >= 0x01; t >>= 1) { // 从128到1循环移位
P1 = ~t; // 输出数据到P1口
delay(500); // 延时500ms
}
// 再次从上到下
for (i = 0; i < 2; i++) { // 循环两次
for (t = 0x01; t <= 0x80; t <<= 1) { // 从1到128循环移位
P1 = ~t; // 输出数据到P1口
delay(500); // 延时500ms
}
delay(500); // 延时500ms
}
// 再次从下到上
for (i = 0; i < 2; i++) { // 循环两次
for (t = 0x80; t >= 0x01; t >>= 1) { // 从128到1循环移位
P1 = ~t; // 输出数据到P1口
delay(500); // 延时500ms
}
delay(500); // 延时500ms
}
}
return 0;
}
```
以上代码中,分别实现了从上到下和从下到上的流水灯效果,并在此基础上再次循环两次,实现闪烁效果。