Открой свой мир программирования и    
цифровых технологий
Непосредственное управление динамиком
Автор lisa   
05.07.2011 г.

Таймер управляет динамиком, периодически посылая в него сигналы, которые заставляют пульси­ровать мембрану динамика. То же самое можно сделать и с помощью программы, посылающей сиг­налы непосредственно в динамик. Для этого нужно обнулить младший бит (бит 0) порта 61Н (в десятичной нотации 97), отключив тем самым динамик от таймера, а затем то устанавлигать, то сбрасывать бит 1, заставляя динамик пульсировать. При данном способе работы с динамиком частота звука определяется скоростью выполнения программы: чем быстрее выполняется программа, тем выше звук. Следующая программа на Бейсике служит примером использования этого метода:

Действия, производимые в строчках 20 и 30, заставляют динамик пульсировать. Каждое из них составляет половину цикла, а оба вместе дают один полный звуковой цикл.

Скорость выполнения этого примера определяется скоростью обработки его Бейсиком, который воспроизводит звук как можно более высокой тональности. Если вам нужен более широкий диапазон, можете использовать более быстрый язык программирования и преднамеренно вставлять паузы, равные половине частотного цикла, между каждой парой полных циклов (пауза равна половине цикла, так как каждая операция включения (выключения) составляет именно полцикла). В любом случае независимо от используемого языка программирования вы должны включить в программу счетчик длительности звуков. Для воспроизводства различных звуков с конкретной частотой типа щелчка или сирены вам нужно только изменить время задержки между импульсами.

Несмотря на все эти замечательные возможности, генерация звуков динамиком при непосредственном воздействии на него программы является далеко не лучшим способом формирования звуков. По сравнению с использованием для этих целей таймера данный метод имеет три больших недостатка:

  • Программа требует постоянного внимания со стороны CPU, оставляя ему мало времени для выполнения других работ.
  • Частота зависит от скорости компьютера; поэтому высота звука может быть разной при выполнении одной и той же программы на моделях с большим или меньшим быстродействием.
  • Прерывания, связанные с тиканьем часов, периодически нарушают непрерывность звука, формируя трель. Единственный способ избежать этого — запрещение таймерных прерываний, что приводит, в свою очередь, к отсутствию контроля за временем со стороны компьютера.

Насколько нам известно, метод непосредственного извлечение звуков имеет только одно преиму­щество: при надлежащем управлении паузами в программе вы сможете получить многоголосие. Учтите, однако, что это требует чрезвычайно искусного и скрупулезного программирования, и все же вряд ли усилия могут окупиться.

 
« Пред.   След. »
Скачать книги по программированию