beeplight.c
来自「一个很好用的直流蜂鸣器单片机前台控制程序」· C语言 代码 · 共 182 行
C
182 行
#include"AT87F51RC.H"
#include"BeepLight.H"
#include<absacc.h>
unsigned char CsOutPortV;
unsigned char InchiFlag;
unsigned char BeepStatus;
unsigned int BeepOnTime,BeepOffTime,BeepOnTimeTemp,BeepOffTimeTemp;
unsigned char BeepAllTimes;
/*
void BeepTimer0Initial(void)
{
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
ET0=1;
EA=1;
TR0=1;
}
*/
/*
void Beep(unsigned char times,unsigned char SLFlag)
{
BeepAllTimes=times;
BeepStatus=BeepRun;
switch(SLFlag)
{
case ShortTime:
BeepOnTime=ShortBeepOnTime;
BeepOffTime=ShortBeepOffTime;
break;
case LongTime:
BeepOnTime=LongBeepOnTime;
BeepOffTime=LongBeepOffTime;
break;
case Simple:
BeepOnTime=SimpleBeepOnTime;
BeepOffTime=SimpleBeepOffTime;
break;
}
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
ET0=1;
EA=1;
TR0=1;
}
void BeepTimer(void)interrupt 1 using 1
{
switch(BeepStatus)
{
case BeepRun:
BeepGo;
BeepOnTime--;
if(BeepOnTime==0)
{
BeepStatus=BeepStop;
BeepOff;
}
break;
case BeepStop:
BeepOffTime--;
if(BeepOffTime==0)
{
BeepAllTimes--;
if(BeepAllTimes=0)
ET0=0;
TR0=0;
}
break;
}
}
*/
//当times=0时,不断蜂鸣。
void Beep(unsigned char times,unsigned char BeepTime,unsigned char StopTime)
{
BeepAllTimes=times;
BeepOnTime=BeepTime;
BeepOnTimeTemp=BeepTime;
BeepOffTime=StopTime;
BeepOffTimeTemp=StopTime;
TMOD=0x01;
TH0=0x12;
TL0=0x66;
ET0=1;
EA=1;
TR0=1;
BeepOn;
}
void StopBeep(void)
{
BeepOff;
ET0=0;
TR0=0;
}
void BeepTimer(void)interrupt 1 using 1
{
if(BeepAllTimes!=0)
{
if(BeepOnTime!=0)
BeepOnTime--;
else
{
BeepOff;
BeepOffTime--;
if(BeepOffTime==0)
{
BeepAllTimes--;
if(BeepAllTimes!=0)
{
BeepOn;
BeepOnTime=BeepOnTimeTemp;
BeepOffTime=BeepOffTimeTemp;
}
else
{
TR0=0;
ET0=0;
}
}
}
}
else
{
if(BeepOnTime!=0)
BeepOnTime--;
else
{
BeepOff;
BeepOffTime--;
if(BeepOffTime==0)
{
BeepAllTimes--;
if(BeepAllTimes!=0)
{
BeepOn;
BeepOnTime=BeepOnTimeTemp;
BeepOffTime=BeepOffTimeTemp;
}
}
}
}
}
void delayBL(unsigned int times)
{
unsigned char a;
unsigned int i;
unsigned char j;
for(i=0;i<times;i++)
for(j=0;j<55;j++)
a=CsInPort;
}
void main(void)
{
unsigned char a;
Beep(0,10,10);
while(1)
{ // BeepOn;
RedLightOff;GreenLightOn;
delayBL(16000);
//BeepOff;
GreenLightOff;RedLightOn;
delayBL(1000);
StopBeep();
}
CsOutPortV|=0x10;CsOutPort=CsOutPortV;
while(1)a=CsInPort;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?