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

📄 song.c

📁 用主板上的小喇叭演奏的程序 C实现 挺有意思的
💻 C
字号:
#define S1 24
#define S2 S1/2
#define S4 S1/4
#define S8 S1/8
#define S16 S1/16

enum FREQDEF
{
L1=131,L2=147,L3=165,L4=175,L5=196,L6=220,L7=247,
N1=262,N2=296,N3=330,N4=349,N5=392,N6=440,N7=494,
H1=523,H2=587,H3=659,H4=698,H5=784,H6=880,H7=988,
I1=1047,I2=1175,I3=1319,I4=1397,I5=1568,I6=1760,I7=1976
} song[]=
{
 N2,S4,N2,S8,N3,S16,N2,S16,N1,S4,L6,S4,L5,S8,
 L3,S8,L5,S8,L6,S8,N1,S2,L6,S4,L6,S8,N1,S8,
 N5,S8,N6,S8,N3,S8,N5,S8,N2,S1,N3,S4,N3,S8,
 N2,S8,N3,S8,N5,S4,N3,S4,L5,S8,L3,S8,L5,S8,
 L6,S8,N1,S2,L6,S4,L6,S8,N1,S8,L6,S8,L6,S8,
 L2,S8,L3,S8,L5,S1,N2,S4,N2,S4,N5,S4,N6,S8,
 N5,S8,N4,S2,N5,S2,N6,S4,N5,S8,N3,S8,N2,S8,
 N3,S16,N2,S16,N1,S8,L6,S16,N1,S16,N2,S1,N3,S4,
 N2,S8,N3,S8,N5,S4,N3,S4,L5,S8,L3,S8,L5,S8,
 L6,S8,N1,S2,L6,S4,L6,S8,N1,S8,N2,S8,L6,S8,
 N1,S8,N3,S8,N2,S1
};


void Sound(int freq)
{
	asm{
	mov   al,   0B6h
	out   43h,  al
	mov   dx,   12h
	mov   ax,   34DEh
	div   freq
	out   42h,  al
	mov   al,   ah
	out   42h,  al
	in    al,   61h
	or    al,   3
	out   61h,  al
	}
}

void Nosound(void)
{
	asm{
	in    al,   61h
	and   al,   252
	out   61h,  al
	}
}

void Delay(int clicks)
{
unsigned int far *clock=(unsigned int far *)0x0000046CL;
unsigned int now;
now=*clock;
while(abs(*clock-now)<clicks){}
}

void Sound_All(int freq,int clicks)
{
Sound(freq);
Delay(clicks);
Nosound();
}

void main(void)
{
 int i;
 for(i=0;song[i];i+=2)
 Sound_All(song[i],song[i+1]);
}

⌨️ 快捷键说明

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