Методические указания по лабораторным работам по курсу «Аппаратные средства компьютерных систем», страница 29

       OUT   61H, AL

       MOV   CX, frequency ;Задержка на пол-цикла

second: LOOP second

       DEC   DX         ;Уменьшаем длительность

       JNZ   next

       STI              ;Разрешение прерываний

Рисунок 4.2

Переменная FREQUENCY используется в качестве счетчика в пустом цикле: чем меньше ее значение, тем быстрее происходит изменение бита 1 и тем выше частота. Переменная CYCLES устанавливает продолжительность тона: чем больше ее величина, тем дольше звучит звук. Следует обратить внимание на запрет аппаратных прерываний, так как прерывание работы таймера может существенно влиять на частоту.

При генерации звука с использованием микросхемы таймера следует запрограммировать канал 2 этой микросхемы для формирования определенной частоты, а затем перепрограммировать микросхему для выключения звука. Микросхема таймера должна быть предварительно разрешена через порт 61h. Затем следует установить счетчик канала 2. Значение счетчика для задвижки вычисляется делением 1,19 миллионов на требуемую частоту в герцах. Звук будет продолжаться до тех пор, пока не будет сброшен в 0 бит 1 порта 61h. На рисунке 4.3 приведен фрагмент программы генерации звука частотой 440 Гц. Звук прекращается после нажатия любой клавиши на клавиатуре.

;--- Установка регистров ввода/вывода

       MOV   AL,0B6H ;Записать в регистр режим таймера

       OUT   43H,AL

;--- Засылка счетчика в задвижку

       MOV   DI,440

       MOV   DX,12H

       MOV   AX,2870H ; 1190000/440

       DIV   DI

       OUT   42H,AL ;Записать младший байт счетчика таймера 2

       MOV   AL,AH

       OUT   42H,AL ;Записать старший байт счетчика таймера 2

;--- Разрешение канала 2 установкой порта 61Н

       IN    AL,61H ;Считать текущую установку порта 61Н

       OR    AL,3   ;Включить динамик

       OUT   61H,AL

;--- Ожидание нажатия клавиши

       MOV   AH,0

       INT   16H

;--- Выключение звука

       IN    AL,61H

       AND   AL,0FCH  ;Восстановить исходную установку порта

       OUT   61H,AL

Рисунок 4.3

На рисунке 4.4 показан фрагмент процедуры формирования звуковой частоты в диапазоне от 17 до 65535 Гц и любой длительности, заданной в регистре ВХ, с шагом 0,01 с. Нижний предел 17 Гц является наименьшим значением, на которое можно поделить 1190000, не вызвав переполнения. Для формирования задержки в несколько миллисекунд обычно используются временные циклы вида: