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

国土安全局   2015-2-10 20:21 楼主

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

   }


}



回复评论 (4)

在线等啊
点赞  2015-2-10 20:38
n 为什么在函数里面没有赋值
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
点赞  2015-2-10 21:03
for后面是不是 应该加大括号 {}
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
点赞  2015-2-10 21:04
没有看到中断部分呢?难道没有中断程序?
点赞  2015-2-10 22:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复