一个关于单片机蜂鸣器的问题,这个代码为什么会让蜂鸣器一直响,Beep= 1和Beep=0 难道一样吗

#include <reg51.h>
sbit Beep = P1^5 ;
void delay(unsigned int i) ;
void main()
{
Beep= 1;
delay(5);
Beep= 0;
delay(5);
}

void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}

Beep= 1;
delay(5);
Beep= 0;
delay(5);
你把这部分循环几十次甚至几百次后,然后在后面加一个while(1),这样就不会一直响。蜂鸣器是振荡发声的,如果你一直是给置1或者一直是置0,那么就不会响的。你这里就是程序一直在执行,不停地101010变换,所以就不会停
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-20
你这个和
void main()
{
while(1)

{
Beep= 1;
delay(5);
Beep= 0;
delay(5);
}

}
一样是个死循环。。。在后面价格while(1);就行了。
第2个回答  2014-03-20
延时时间短了,你吧delay(5)改为delay(500)追问

没用,这样只是蜂鸣器的音调变低了,还是一直响

相似回答