51单片机怎么实现8个灯依次亮完后再全亮再全灭的循环

做流水灯怎么实现循环完一次后再整体变亮再整体灭呢,是要把它写成一整个大的循环吗


#include <reg52.h>

// 用于控制灯的 8 个引脚
sbit LED1 = P1 ^ 0;
sbit LED2 = P1 ^ 1;
sbit LED3 = P1 ^ 2;
sbit LED4 = P1 ^ 3;
sbit LED5 = P1 ^ 4;
sbit LED6 = P1 ^ 5;
sbit LED7 = P1 ^ 6;
sbit LED8 = P1 ^ 7;

// 延时函数
void delay(unsigned int t)
{
    while (t--);
}


void main()
{
    // 循环执行 8 次
    for (int i = 0; i < 8; i++)
    {
        // 依次点亮每个灯
        switch (i)
        {
            case 0: LED1 = 1; break;
            case 1: LED2 = 1; break;
            case 2: LED3 = 1; break;
            case 3: LED4 = 1; break;
            case 4: LED5 = 1; break;
            case 5: LED6 = 1; break;
            case 6: LED7 = 1; break;
            case 7: LED8 = 1; break;
        }

        // 延时 1 秒
        delay(1000);
    }

    // 点亮所有灯
    LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 1;
    // 延时 1 秒
    delay(1000);

    // 熄灭所有灯
    LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 0;
    // 延时 1 秒
    delay(1000);
}