单片机led流水灯,为什么LED可以一直循环点亮? for循环结束不是应该跳出循环结束主程序,led灭吗?而且我也没在主程序中加入while(1);让程序进入死循环

问题遇到的现象和发生背景

c51单片机LED流水灯

```c++
#include"reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
unsigned char LSE_CODE[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay_10us(u16 ten_us)
{
while(ten_us--);
}
void lsd_z()
{
unsigned char i;
for(i=0;i<8;i++)
{
P2=LSE_CODE[i];
delay_10us(100000);
}
}
void lsd_f()
{
signed char j;
for(j=7;j>=0;j--)
{
P2=LSE_CODE[j];
delay_10us(100000);
}
}

int main()
{
lsd_z();
lsd_f();
return 0;
}

```编程

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法

我尝试加了一条P2=0xff,但是没用

我想要达到的结果

可否让其单单执行这两个for循环一次,也是就是LED灯两次方向相反的逐个点亮后 灭!或者是for循环逐个点亮一次后,灯灭。

主程序结束后,单片机又返回到开始重新运行了。

请参考我的博客,想怎么点灯就怎么点灯,想点多少灯就点多少灯