высота звука в динамике
Насколько я понял высота звука задается значением, заносимым в порт 42h а затем в lacth-register и чем ниже значение, тем больше высота звука.
Теперь вопрос: как получить звук определенной частоты (напр. 220 Гц)? Какое значение должно быть загружено в ax? И желательно связать это с непосредственным значением частоты.
mov al,0B6h
out 43h,al
...
mov ax,tone ;собсно tone - высота
out 42h,al
xchg al,ah
out 42h,al
...
где Т = длительность периода, а F частота. При программировании на ассамблере частота звука может зависеть от частоты процессора.
Цитата:
Originally posted by delta1968
Я не понял для какой системы ты программируешь звук из динамика. Но обычно значение заносимое в порт определяет длину периода равную T=1/F
где Т = длительность периода, а F частота. При программировании на ассамблере частота звука может зависеть от частоты процессора.
Я не понял для какой системы ты программируешь звук из динамика. Но обычно значение заносимое в порт определяет длину периода равную T=1/F
где Т = длительность периода, а F частота. При программировании на ассамблере частота звука может зависеть от частоты процессора.
Вот для тех, кто не понял я и привел контекст, в котором мне нужно прописать число, которое определит нужную частоту.
Система - WinXP SP2 да так ли это важно?
Частота работы таймера равна (или была равна в старых машинах) 1193180 Гц. Один из каналов таймера может быть настроен на аппаратное формирование звуковых импульсов. Значит, для 220Гц задержка будет 1193180/220 = 5423,545454... Регистр 16-ибитный, именно из-за этого невозможно было получить звук по частоте меньшей, чем 18Гц.