5.10.6. Динамик

Как сказано в разделе 5.10.5, канал 2 системного таймера управляет динами­ком компьютера - он генерирует прямоугольные импульсы с частотой, равной 1 193 180/начальное_значение_счетчика. При программировании динамика на­чальное значение счетчика таймера называется делителем частоты: подразумева­ется, что динамик работает с частотой 1 193 180/делительгерц. После програм­мирования канала 2 таймера надо еще включить сам динамик. Это осуществляется путем установки битов' 0 и 1 порта 61h в 1. Бит 0 фактически разрешает работу данного канала таймера, а бит 1 включает динамик.

Процедура beep.

; Издает звук с частотой 261  Гц  (нота "ми" средней октавы) длительностью 1/2  секунды на динамике.

proc

near

 

mov

al,10110110b

; Канал 2, режим 3.

out

43h ,al

 

mov

al,ODh

; Младший байт делителя частоты 1Ш1і.

out

421a ,al

 

mov

al, llh

; Старший байт делителя частоты.

out

421a, al

 

in

al,61h

; Текущее состояние порта 61И в АП.

or

al,00000011b

; Установитв биты 0 и 1 в 1.

out

61h , al

; Теперь динамик включен.

mov

cx,0007h

; Старшее слово числа микросекунд паузы.

mov

dx, OA120h

: Младшее слово числа микросекунд паузы.

mov

ah, 86h

; Функция 861і: 1

int

15h

; пауза.

in

al, 61h

 

and

al, 11111100b

; Обнулить младшие два бита. ■

out

611a, al

Теперь динамик выключен.

ret

 

 

endp

 

 

Три команды, переводящие шестнадцатеричную цифру в АП в соответствующий АЙСП-код. Вывод на экран. Повторить для всех цифр.

В связи с повсеместным распространением звуковых плат обычный динамик PC сейчас практически никем не используется или используется для выдачи со­общений об ошибках. Вернемся к звуку чуть позже, а пока вспомним, что в разде­ле 4.7.1 рассматривалось еще одно устройство для определения текущего време­ни и даты - часы времени.