Низкий уровень.
Приведенная процедура является развитием процедуры, показанной
в предыдущем разделе, на случай реального времени. Она требует
понимания, как перепрограммировать прерывание таймера, что обсуж-
далось в [2.1.7]. На эту процедуру должен указывать вектор преры-
вания и тогда она будет выполняться 18.2 раза в секунду, в те
моменты, когда будет обновляться значение счетчика времени суток
BIOS. Обычно, будут выполняться только несколько строчек, которых
достаточно, чтобы определить, что время изменения звука еще не
наступило, - и процедура освождает процессор для решения других
задач.
Счетчик времени суток BIOS используется для измерения длитель-
ности каждой ноты. При переходе от одной ноты к другой, длитель-
ность новой ноты вычисляется как число импульсов счетчика и это
значение добавляется к текущему его значению. Каждый раз при
вызове процедуры проверяется текущее значение счетчика времени
суток, и когда ожидаемое время наконец наступает, то выполняется
набор операций по поиску новой ноты, программированию ее частоты
в канале 2 микросхемы 8253 и установлению нового счетчика дли-
тельности. Добавочный код требуется для обработки специальных
случаев первой и последней нот в строке.
;-в сегменте данных
BEAT DB 10,9,8,7,6,5,4,3,2 ;длительность нот
FREQUENCY DW 2280,2031,1809,1709 ;таблица частот
DW 1521,1355,1207,1139 ;
MELODY DB 1,2,3,4,5,6,7,8,0FFH ;номер частоты в таблице
HOLDIP DW 0 ;запоминаем оригинальный
Предыдущая страница 117 Следующая страница
1894162410
|