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 + -
显示快捷键?