为什么没有实现功能,蜂鸣器没有鸣叫

#include<reg52.h>#include<intrins.h>#define uint unsigned int //用uint替换unsigned int#define uchar unsigned char //用uchar替换unsigned char sbit  sbit key_s1 = P3^7; //用P3.7来检测第一个按键是否被按下   sbit key_s2 = P3^0; //用P3.0来检测第二个按键是否被按下  sbit beep = P2^3;                 void delay(uint z)  //延时函数 { uint x,y; for(x=z;x>0;x--) for(y=114;y>0;y--);}    void main()   { if(key_s1 == 0&& key_s2 == 0) //第一次检测两个按键被按下 {    delay(8); //延时8ms进行消抖    if(key_s1 == 0&& key_s2 == 0) //再次检测两个按键被按下,说明确实被按下了 {   beep = 1; //使蜂鸣器鸣叫   while(!key_s1 == 0&& key_s2 == 0 )   beep = 0; //使蜂鸣器停止   }     }}

程序显示没有错误,但为什么按下两个键时蜂鸣器不会鸣叫。

因为代码一直执行的是while里面的判断 一直卡在哪里 不管怎么按 也会卡在while哪里 beep=1的时间太短