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

📄 buzzer.c

📁 make different sound with pc speaker
💻 C
字号:
//this one works without a console
// PC speaker direct control
#include <stdio.h>
#include <sys/io.h>
#include <unistd.h>

#define ON (1)
#define OFF (0)
/*------------------------------------------------
ChangeSpeaker - Turn speaker on or off. */
void ChangeSpeaker( int status )
{
	int portval;
	portval = inb( 0x61 );
	if ( status==ON )
	portval |= 0x03;
	else
	portval &=~ 0x03;
	outb( portval,0x61 );
} 

/*--ChangeSpeaker( )----------*/
void Sound( int hertz )
{
	unsigned divisor = 1193180L / hertz;
	ChangeSpeaker( ON );
	outb( 0xB6,0x43 );
	outb(divisor & 0xFF ,0x42) ;
	outb(divisor >> 8 ,0x42) ;
} 

/*--Sound( )-----*/
void NoSound( void )
{
	ChangeSpeaker( OFF );
} /*--NoSound( )------*/

int Beep(int freq, int length, int reps, int delay, int end_delay)
{
	int i=0;
	iopl(3);	
	
	for (i = 0; i < reps; i++) {                    /* start beep */
	
		Sound(freq);    
		/* Look ma, I'm not ansi C compatible! */
		usleep(1000*length);                          /* wait...    */
		NoSound();					                  /* stop beep  */
		if(end_delay || (i+1 < reps))
			usleep(1000*delay);                        /* wait...    */
	}                
	return(0);
} 

⌨️ 快捷键说明

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