1
C语言程序设计
1.11.3.1 10.3.1 声音函数

10.3.1 声音函数

Turbo C 中提供了几个对扬声器操作的库函数:

img755 sound(int frequence)

函数的功能是接通扬声器,使扬声器按照入口参数要求的频率发音。

img756 nosound()

关闭扬声器。

Turbo C 还可以通过对端口的直接操作函数来控制扬声器的发音:

img757 Outportb(int port,char byte)

img758 Intportb(int port)

扬声器的端口地址为0x42,对端口的操作方式一般分为两步:初始化端口、向端口传送频率值。

对音长的控制采用Turbo C提供的clock()函数。clock()函数返回一个时间计数值,在IBM PC及其兼容机中存在一个55ms的时钟中断,即每秒钟将会有18个计数值。当程序运行时,CPU开始记录次数,每次clock()的调用将会返回计数值,每次函数调用返回的计数值会增加。设定一个时间延迟数goal=dur+clock(),用goal与每次循环调用的clock()的返回值进行比较,当goal〉clock()时,延迟时间到,停止某个音符的发音,goal的长度由预先定义的dur决定,而dur由音乐的音阶决定。