在TC环境下用C语言编的程序不发声,该怎么处理
在TC环境下用C语言编的程序不发声
因为之前我做了另外一个练习,该发音时却没声音。
所以就找了一个纯发声的程序测试:
#include <dos.h>
main()
{
int freq;
for(freq=50;freq <5000;freq+=50)
{
sound (freq);
delay(10000);
}
nosound();
}
编译、连接都没有问题,运行的时候没有声音输出。
因为怀疑sound()子函数有问题,就找了一个产生声音和关闭声音的函数如下:
void SOUND(unsigned frequency)
{
union
{ /* 定义由—个整数和两个字符组成的联合 */
unsigned divisor;
unsigned char c[2];
} tone;
tone.divisor=119328/frequency;/* 计算该频率对应的定时器计数值 */
outportb(0x43,0xb6); /* 通知定时器采用新的计数 */
outportb(0x42,tone.c[0]); /* 计数低字节先送到定时器 */
outportb(0x42,tone.c[1]); /* 计数高字节后送到定时器 */
outportb(0x61, inportb(0x61) | 3 ); /* 使定时器到喇叭的输出有效*/
}
void NOSOUND(void)
{
outportb(0x61,inportb(0x61) & 0xfc));/*使定时器到喇叭的输出无效 */
}
结果还是没有声音。我用的是WindowsXP 操作系统,Turboc 2.0编译环境。
请CSDN的老师们指点迷津,先谢谢了!
------解决方案--------------------
可是我还是不太明白能听歌(不用耳机),应该就说明speaker是好的吧?
-------------------------------------
PC speaker是每次开机自检的时候,滴一声得小喇叭。你打开机箱就能看见。
你能用这个听歌???呵呵,恕我无知,不了解这是什么原理。
谁有用过sound()成功的吗?
-----------------------------------
10年前上学的时候用过,还有一点,如果声音的频率不再人的接受范围之内,
也是听不见的。
你去查一下人能听见声音的频率范围。
但我建议你先用别人的机器运行一下你的程序。
因为之前我做了另外一个练习,该发音时却没声音。
所以就找了一个纯发声的程序测试:
#include <dos.h>
main()
{
int freq;
for(freq=50;freq <5000;freq+=50)
{
sound (freq);
delay(10000);
}
nosound();
}
编译、连接都没有问题,运行的时候没有声音输出。
因为怀疑sound()子函数有问题,就找了一个产生声音和关闭声音的函数如下:
void SOUND(unsigned frequency)
{
union
{ /* 定义由—个整数和两个字符组成的联合 */
unsigned divisor;
unsigned char c[2];
} tone;
tone.divisor=119328/frequency;/* 计算该频率对应的定时器计数值 */
outportb(0x43,0xb6); /* 通知定时器采用新的计数 */
outportb(0x42,tone.c[0]); /* 计数低字节先送到定时器 */
outportb(0x42,tone.c[1]); /* 计数高字节后送到定时器 */
outportb(0x61, inportb(0x61) | 3 ); /* 使定时器到喇叭的输出有效*/
}
void NOSOUND(void)
{
outportb(0x61,inportb(0x61) & 0xfc));/*使定时器到喇叭的输出无效 */
}
结果还是没有声音。我用的是WindowsXP 操作系统,Turboc 2.0编译环境。
请CSDN的老师们指点迷津,先谢谢了!
------解决方案--------------------
可是我还是不太明白能听歌(不用耳机),应该就说明speaker是好的吧?
-------------------------------------
PC speaker是每次开机自检的时候,滴一声得小喇叭。你打开机箱就能看见。
你能用这个听歌???呵呵,恕我无知,不了解这是什么原理。
谁有用过sound()成功的吗?
-----------------------------------
10年前上学的时候用过,还有一点,如果声音的频率不再人的接受范围之内,
也是听不见的。
你去查一下人能听见声音的频率范围。
但我建议你先用别人的机器运行一下你的程序。