|
給你一個(gè)按鍵控制無源蜂鳴器驅(qū)動(dòng)程序參考
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit Buzzer=P1^5;
sbit key=P3^3;
bit sign=0;
/*
void delay(u16 i)
{
while(i--);
}*/
void Timer0Init() //250微秒@12.000MHz
{
TMOD= 0x02; //設(shè)置定時(shí)器模式
TL0 = 0x06; //設(shè)置定時(shí)初值
TH0 = 0x06; //設(shè)置定時(shí)重載值
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
EA=1; //開總中斷
ET0=1; //開定時(shí)器0中斷
}
void anjian()
{
static bit key_lock=0;//按鍵自鎖標(biāo)志
static u8 count=0;//消抖計(jì)數(shù)變量
if(!key)
{
if((count++>=100)&&(key_lock==0))
{
key_lock=1; //按鍵自鎖標(biāo)志置1
sign=~sign; //蜂鳴器使能標(biāo)志取反
}
}
else
{
key_lock=0; //按鍵自鎖標(biāo)志清0
count=0; //消抖計(jì)數(shù)清0
}
}
void main()
{
Timer0Init();
while(1)
{
anjian();
}
}
void timer0() interrupt 1
{
if(sign==1) //蜂鳴器使能
Buzzer=~Buzzer;//2KHz方波
else Buzzer=1;//蜂鳴器復(fù)位
}
|
|