单片机C语言编程问题

2025-03-10 21:36:15
推荐回答(5个)
回答1:

蜂鸣器以400ms频率发声,以200ms频率发声。。。
----
这是不可能的。
频率单位,是 Hz,不是 ms。

任何人,都作不到《以400ms频率发声》。

出题人,基本概念,他都不清楚。
这样的题目,就别琢磨了。
----------------
如果说,400ms 是周期,还像回事。

但是,这时的频率,是 2.5Hz,人,是听不见的。
----------------
如果楼主,自己规定几个合理的频率,
编写一个程序,还不难。

http://zhidao.baidu.com/question/465662388.html
http://zhidao.baidu.com/question/135695899.html

可以参考。

回答2:

改成下面的试试,我觉得send函数放在中断里不是很好,你可以单步调试一下,或者是设置个断点的看一下,SBUF的值主要的是没有变。
void send(uchar dat)
{
while(!TI); //等待发送完成
SBUF=dat;
TI=0; //把发送标志位置零
}

回答3:

你的程序用了两个while(1),发现没有。当temp没有值时循环执行p(),当temp=1时就会beep0(),跳不出来了。再发送也没用了。

回答4:

你那个 if(temp==1)
beep0(200);
else if(temp==2)
beep0(100);
else if(temp==3)
beep0(50);
else if(temp==4)
beep=1;
怎么都没叫{}啊?
你加上括号试试、
if(temp==1)

beep0(200);
}
else
{ if(temp==2)

beep0(100);

else
{ if(temp==3)
beep0(50);

else
{ if(temp==4)
beep=1;

回答5:

void beep0(uchar z)
{
while(1)
{
beep=0;
delay(z);
beep=1;
delay(z);
}
}
程序死在这儿了。