В таймер перед началом работы необходимо загрузить управляющее слово (CW) и константу пересчета. Загрузка CW должна предшествовать загрузке констант. Формат CW приведен в табл. 4.1, а его загрузка в 8-битовый регистр управляющего слова осуществляется командой OUT. Управляющее слово загружается в тот канал таймера, номер которого указан в самом слове CW.
Перед началом работы таймера константа пересчета, содержащаяся в 16-битном регистре константы пересчета (CR), перегружается в счетчик (CE).
Таким образом, для программирования таймера необходимо выполнить следующие шаги:
1. Загрузить CW в соответствии с табл. 4.1.
2. При генерации звука с использованием таймера разрешить его работу, установив в 1 бит 0 порта с адресом 61h.
3. Вычислить значение счетчика от 0 до 65535 и занести сначала младший, а затем старший байт в регистр счетчика через регистр ввода-вывода канала.
По окончании третьего шага запрограммированный канал начинает функционировать по новой программе.
Следует знать, что таймер работает постоянно. Поэтому, если программы пользователя изменяют значения его регистров, то перед своим завершением они всегда должны восстанавливать начальные значения этих регистров. В противном случае, например при генерации звука, он будет звучать даже после того, как операционная система получит управление и загрузит другую программу.
Программный способ генерации звука состоит во включении и выключении с заданной частотой бита 1 порта 61h. При этом следует отключить канал таймера от динамика. Между двумя переключениями добавляется пустой цикл, т.к. если программа переключает бит 1 очень быстро, то частота будет слишком высокой для восприятия. На рисунке 4.2 приведен фрагмент такой программы.
cycles DW 1000
frequency DW 300
CLI ;Запрет прерываний
MOV DX, cycles ;Длительность тона - в DX
IN AL, 61H ;Получаем значение из порта 61H
AND AL, 11111110B ;Отключаем динамик от таймера
next: OR AL, 00000010B ;Включаем динамик
OUT 61H, AL ;Посылаем команду в порт 61Н
MOV CX, frequency ;Задержка на пол-цикла
first: LOOP first
AND AL, 11111101B ;Выключаем динамик
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.