1-1-1框架
  • 意法半导体的三端双向可控硅

    意法半导体的三端双向可控硅

  • 亿光反射式光电开关芯片ITR1204SR10A-TR

    亿光反射式光电开关芯片ITR1204SR10A-TR

  • 如何提升微波网络分析仪的测量精度?

    如何提升微波网络分析仪的测量精度?

  • 14周年庆-发金币,500名额,每人50金币。学堂课程全场半价

    14周年庆-发金币,500名额,每人50金币。学

  • 发一个TI的6层工业以太网通信主板,原理图和PCB

    发一个TI的6层工业以太网通信主板,原理图

基于51蜂鸣器门铃

[复制链接]
查看500 | 回复0 | 2020-4-6 21:41:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit beep=P1^5;
sbit k1=P3^1;
u8 ding,dong,flag,stop;
u16 n;
void delay(u16 i)
{
    while(i--);
}
void time0init()      //定时器0初始化
{
    TMOD=0X01;     //定时器0 方式1
    TH0=0Xff;
    TL0=0X06; //定时250us
//    TR0=1;
    EA=1;
    ET0=1;
}
void biaohaoinit()       //各个标号初始化
{
    ding=0;        //叮声音  计数标志
    dong=0;        //咚声音  计数标志
    n=0;        //定时0.5s标志
    flag=0;
    stop=0;       //结束标志
}
void main()
{
    time0init();
    biaohaoinit();
    while(1)
    {
        if(k1==0)       //判断按键是否按下
        {
            delay(1000);  //消抖
            if(k1==0)
            {
                TR0=1;    //打开定时器0
                while(!stop);
            }
        }   
    }   
}
void time0() interrupt 1
{
    n++;
    TH0=0Xff;
    TL0=0X06; //250us
    if(n==2000)        //定时0.5s  叮响0.5秒,咚响0.5秒
    {
        n=0;
        if(flag==0)
        {
            flag=~flag;
        }
        else
        {
            flag=0;
            stop=1;
            TR0=0;      //关闭定时器0
        }
    }
    if(flag==0)
    {                       //通过改变定时计数时间可以改变门铃的声音
        ding++;              //叮
        if(ding==1)
        {
            ding=0;
            beep=~beep;
        }
    }
    else
    {
        dong++;
        if(dong==2)          //咚
        {
            dong=0;
            beep=~beep;
        }   
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则