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