|
#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() //定時(shí)器0初始化
{
TMOD=0X01; //定時(shí)器0 方式1
TH0=0Xff;
TL0=0X06; //定時(shí)250us
// TR0=1;
EA=1;
ET0=1;
}
void biaohaoinit() //各個(gè)標(biāo)號(hào)初始化
{
ding=0; //叮聲音 計(jì)數(shù)標(biāo)志
dong=0; //咚聲音 計(jì)數(shù)標(biāo)志
n=0; //定時(shí)0.5s標(biāo)志
flag=0;
stop=0; //結(jié)束標(biāo)志
}
void main()
{
time0init();
biaohaoinit();
while(1)
{
if(k1==0) //判斷按鍵是否按下
{
delay(1000); //消抖
if(k1==0)
{
TR0=1; //打開定時(shí)器0
while(!stop);
}
}
}
}
void time0() interrupt 1
{
n++;
TH0=0Xff;
TL0=0X06; //250us
if(n==2000) //定時(shí)0.5s 叮響0.5秒,咚響0.5秒
{
n=0;
if(flag==0)
{
flag=~flag;
}
else
{
flag=0;
stop=1;
TR0=0; //關(guān)閉定時(shí)器0
}
}
if(flag==0)
{ //通過改變定時(shí)計(jì)數(shù)時(shí)間可以改變門鈴的聲音
ding++; //叮
if(ding==1)
{
ding=0;
beep=~beep;
}
}
else
{
dong++;
if(dong==2) //咚
{
dong=0;
beep=~beep;
}
}
}
|
|