📄 testsound.c
字号:
#include <Mega16.h> /*预处理命令 */
#include <Delay.h>
#include <USART.h>
#include "Music.h"
#include "Music_data.h"
#define uchar unsigned char
#define uint unsigned int
#define SND_TNE PORTD^=0x80
unsigned char delay_inc=0x0C;
unsigned char time_inc=0x01;
struct MUSICDAT
{
char name;
char time;
} ;
void delay(word t)
{
uint i;
// uchar j;
for (i=0;i<t;i++) i+=delay_inc;
// for(j=1;j<8;j++);
}
void sound_pc0(uchar t)
{
uint i;
for (i=0;i<350-t*t;i++) /*改变发音快慢*/
{
SND_TNE;
delay(t);
}
}
void TestSnd1()
{
uchar c;
for (c=0x00;c<0xff;c++)
{
SND_TNE;
delay(c);
}
for (c=0xff;c>0x00;c--)
{
SND_TNE;
delay(c);
}
}
void TestSnd2()
{
uchar dt;
for(dt=1;dt<14;dt++) /*改变发音数量 */
sound_pc0(dt);
}
void TestSnd3(void)
{
uchar c;
for (c=0x00;c<0xff;c++)
{
SND_TNE;
delay(c);
SND_TNE;
delay(c);
}
for (c=0;c<255;c++);
for (c=0xff;c>0x00;c--)
{
SND_TNE;
delay(c);
SND_TNE;
delay(c);
}
for (c=0;c<255;c++) ;
}
void TestSnd4(void)
{
//struct MUSICDAT * music_dat;
//unsigned char c;
unsigned int i,j,k;
unsigned char name;
unsigned int time;
i=0;
while (i<sizeof(music_dt0))
{
name=music_dt0[i];
time=music_dt0[i+1];
for (k=0;k<time;k++)
for (j=0;j<187-time_inc;j++)
{
SND_TNE;
delay(tone_frq[name]);
SND_TNE;
delay(tone_frq[name]);
}
delay_ms(20);
i+=2;
}
//while ((name==0)&&(time==0));
}
void TestSnd5(void)
{
unsigned int j;
//for (i=0;i<100;i++)
for (j=0;j<10;j++)
{
SND_TNE;
delay(tone_frq[M1]);
SND_TNE;
delay(tone_frq[M1]);
}
}
void main (void) /*主函数 */
{
unsigned char Cmd;
DDRC=0xff;
DDRA=0x00;
DDRD=0xff;
PORTC=~time_inc;
USART_Init(47); //3.6864M=23, 7.3728M=47
while (1)
{
Cmd=0;
if (UCSRA&(1<<RXC)) //串口有信息吗?
{
Cmd=UDR; //如果有,接收一个字节
}
if ((!PINA.0)||(Cmd=='1')) TestSnd1();
if ((!PINA.1)||(Cmd=='2')) TestSnd2();
if ((!PINA.2)||(Cmd=='3')) TestSnd3();
if ((!PINA.3)||(Cmd=='4')) TestSnd4();
if ((!PINA.4)||(Cmd=='5')) TestSnd5();
if ((!PINA.6)||(Cmd=='7'))
{
while (!PINA.6);
time_inc++;
if (time_inc>186) time_inc=186;
PORTC=~time_inc;
}
if ((!PINA.7)||(Cmd=='8'))
{
while (!PINA.7);
time_inc--;
if (time_inc<0) time_inc=0;
PORTC=~time_inc;
}
if (Cmd=='9')
{
Cmd=ReceiveByte();
time_inc=Cmd;
if (time_inc>186) time_inc=186;
PORTC=~time_inc;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -