Генериране на звук
Входът на високоговорителя получава логическо "И" на два сигнала: изхода OUT2 на таймера и съдържанието на бит 1 на порт 61h. Трябва да се отбележи, че когато броенето на канал 2 е деактивирано, когато GATE2=0, OUT2 е настроен на 1. Когато двата сигнала съвпадат, към високоговорителя се изпраща правоъгълен импулс, който се чува като щракване. Тъй като високоговорителят се управлява от два сигнала, генерирането на звук може да се извърши по два начина:
- деактивиране на канал 2 (бит 0 изчистен, OUT2=1), превключване на бит 1, всяко превключване предизвиква щракване; скорост на биене 1 определя честотата на звука;
- активиране на канал 2 (настроен бит 0), включване на високоговорителя (настроен бит 1), скорост на превключване и OUT2 определя честотата на звука.
Като се има предвид, че останалите битове на порт 61h се използват за работа с други устройства и не трябва да се променят, настройката на битове 0 и 1 трябва да се извърши с помощта на командите OR и AND. За да програмирате канал на таймера 2 да пулсира в аудио диапазона (20-20 000 Hz), използвайте режим на таймер 3 и задайте (CR) == 1193180/f, където f е желаната аудио честота.
; подпрограма за генериране на звук
; Вход: (AX) = звукова честота в Hz
Звуков процес близо
mov bx,ax;честота
mov dx,frec+2 ;(dx:ax)=l 193180
div bx ;ax=(dx:ax)/bx
mov bx,a ;запазване на брояча на таймера
in al,61h; активирайте отчитането на канал 2
или al,3 ; и оставете високоговорителя да работи
mov al,10110110b; контролна дума на таймера: канал 2,