为什么我用蜂鸣器就用了一个输出脉冲它却会一直响?以下是我的代码

2019-07-15 10:04发布

#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

sbit beep=P1^5;

void delay (u16 b)
                {
                        while(b--);
                }

void main()
{
        u8 i=0;
        for (i=0;i<1;i++)
        {
   beep=~beep;
                delay (50);
        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
小S咯
1楼-- · 2019-07-16 23:52
 精彩回答 2  元偷偷看……
Merciless友
2楼-- · 2019-07-17 02:30
本帖最后由 Merciless友 于 2017-7-28 10:07 编辑

因为程序只执行一次,就是你蜂鸣器只给响的电平,没停止下来。在for前面加个死循环while(1)
别离没有喧嚣
3楼-- · 2019-07-17 05:45
小S咯 发表于 2017-7-28 09:25
以后在写程序的时候一定要有死循环,要不然程序会跑飞的,有些单片机跑飞了会自动复位从main函数又开始执行的。

恩,谢了
别离没有喧嚣
4楼-- · 2019-07-17 09:12
人中狼 发表于 2017-7-27 19:10
把main改成这样试试,
void main()
{

我看视频里面讲的
人中狼
5楼-- · 2019-07-17 10:24

把main改成这样试试,
void main()
{
        beep=~beep;
                delay (50);
        while(1);
}
试一试这样改吧,这里只改变了一次蜂鸣器的驱动电平,对于无源蜂鸣器来说是不会响的,while(1)会形成一个死循环,程序会停在这里,这样就可以判断蜂鸣器是有源的还是无源的了。

一周热门 更多>