📄 sound.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 + -