主函数是超声波测距函数,我想加个报警程序,距离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(); }
}
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>