KELI5通过C语言编译C51单片机地蜂鸣器驱动

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

51单片机的蜂鸣器,这个实验板比较特殊,用ULN2003芯片产生一定频率的脉冲驱动蜂鸣器

遇到的现象和发生背景,请写出第一个错误信息

把注释掉的while(1)注释掉后会一直不停的响,请问是为什么?

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

#include
sbit BEEP=P2^5;
delay(int x)//控制音调
{
    while(x>0)
    {
        x--;
    }
}
        
void main()
{
    int i=500;//蜂鸣器发出一个音的时长
        //while(1)
        //{
            while(i--)
                {
                    BEEP=!BEEP;
                    delay(190);
                }
            i=0;
            BEEP=0;
      //}
}
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

while(1)的作用是把程序运行限制在while语句中吗?可是keil5为什么会自动不停地循环?

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

while(1);大循环啊。你启用了大循环。