单片机蜂鸣器报警程序,总是不能运行

2019-03-24 18:06发布

主函数是超声波测距函数,我想加个报警程序,距离30-50蜂鸣器响,距离30一下蜂鸣器响(频率加快)。我现在运行是,只能刷新一遍距离,第二次就卡住了,是不是distance没有读取到beep函数

程序如下(节选)
//延时void delay_1ms(uint m){     uint x,y; for(x=m;x>0;x--)  for(y=110;y>0;y--);}
//频率大点的蜂鸣器void beeplong(){uint n;   for(;n>0;n--)
        delay_1ms(1000);spk=0;delay_1ms(1000);spk=1;
}//频率小点的蜂鸣器void beepshort(){    uint n;     for(;n>0;n--)  delay_1ms(500);spk=0;delay_1ms(500);spk=1;
}
//蜂鸣器void beep(){     if(50>=distance>=30)  beeplong(); else if (distance<30)         beepshort();      else  delay_1ms(1);
}
​//主函数
void main(){lcdrw=0;while(1){
      lcdInit(); TMOD=0x11; TH0=0; TL0=0; Trig=0; Echo=0; start(); while(!Echo); TR0=1; while(Echo); TR0=0; count(); delay(120); beep();   }
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。