⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sound.c

📁 使用Atmega8单片机开发的一个激光治疗仪的人机接口程序
💻 C
字号:
#include "config.h"
#include "SOUND.h"

void DelayMs(uint ms)	
{
uint i;
for(i=0;i<ms;i++)
_delay_loop_2(8*250);
}

void DelayUs(uint us)	
{
uint i;
for(i=0;i<us;i++)
_delay_loop_2(2);
}
/**************
void Beep_short(uchar num,uint frq) ////提示音输出函数,num提示音音响数,frq提示音频率
{

	uchar i;
	TCCR2=_BV(WGM21)|_BV(CS21)|_BV(CS20);	//CTC模式,8M,32分频
	OCR2=62500/frq;
	TIMSK|=_BV(OCIE2);	//比较匹配中断允许
		
		for(i=0;i<num;i++)
		{
		DelayMs(20);
		cli();
	PORTB&=~_BV(PB2);
		DelayMs(20);
		sei();
		}
	TCCR2=0;
	TIMSK&=~_BV(OCIE2);	//比较匹配中断禁止
	PORTB&=~_BV(PB2);
	sei();

}

void Beep_middle(uchar num,uint frq) ////提示音输出函数,num提示音音响数,frq提示音频率
{

	uchar i;
	TCCR2=_BV(WGM21)|_BV(CS21)|_BV(CS20);	//CTC模式,8M,32分频
	OCR2=62500/frq;
	TIMSK|=_BV(OCIE2);	//比较匹配中断允许
		
		for(i=0;i<num;i++)
		{
		DelayMs(100);
		cli();
		PORTB&=~_BV(PB2);
	PORTB&=~_BV(PB2);
		DelayMs(100);
		sei();
		}
	TCCR2=0;
	TIMSK&=~_BV(OCIE2);	//比较匹配中断禁止
	PORTB&=~_BV(PB2);
	sei();
}

void Beep_long(uchar num,uint frq) ////提示音输出函数,num提示音音响数,frq提示音频率
{

	uchar i;
	TCCR2=_BV(WGM21)|_BV(CS21)|_BV(CS20);	//CTC模式,8M,32分频
	OCR2=62500/frq;
	TIMSK=_BV(OCIE2);	//比较匹配中断允许
		
		for(i=0;i<num;i++)
		{
		DelayMs(3000);
		cli();
		PORTB&=~_BV(PB2);
	PORTB&=~_BV(PB2);
		DelayMs(3000);
		sei();
		}
	TCCR2=0;
	TIMSK=0;
	PORTB&=~_BV(PB2);
	sei();
}
***********/

void alarm_n_short(uchar n)
{
uchar i;
	for(i=0;i<n;i++)
	{
	 PORTB|=(1<<2);//PORTB.2=1;
	 DelayMs(100);
	 PORTB&=~(1<<2);
	 DelayMs(100);
	}
 }
 
void alarm_n_long(uchar n)
 {
 uchar i;
	for(i=0;i<n;i++)
	{
 		PORTB|=(1<<2);//PORTB.2=1;
		DelayMs(1000);
		PORTB&=~(1<<2);//PORTB.2=0;
		DelayMs(1000);//goodkey();
	}
		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -