主函数是超声波测距函数,我想加个报警程序,距离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();
}
}