"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автораВысокий уровень. Оператор SOUND в Бейсике не позволяет генерировать звук однов- ременно с другими действиями, но оператор PLAY - позволяет если ему это задать. За оператором PLAY должна следовать строка, кото- рая сообщает какие ноты долны быть сыграны, какой длительности, а также другие характеристики. Детали командной строки PLAY обсуж- даются в [2.2.5]. Если строка содержит буквы MB (фоновая музыка), то строка помещается в специальный буфер и выполняется одновре- менно с другими программными действиями. Напротив, MF (музыка на переднем плане) останавливает все программные операции до тех пор, пока вся строка не будет исполнена. Вот как исполнить одну ноту A (ля) в фоновом режиме: 100 PLAY "MB A" 'исполняется нота ля... 110 ...... 'и следующие операторы программы Отметим, что в фоновом режиме, оператор X = PLAY(0) возвращает число нот (до 32), которое осталось сыграть. В многоканальном режиме на PCjr возвращается число нот в буфере данного канала (0-2), номер которого указан в скобках. Низкий уровень. Микросхема должна быть предварительно разрешена через порт B микросхемы интерфейса с периферией 8255 (адрес 61H). Вычислите требуемое значение счетчика для задвижки, разделив 1.19 миллионов на требуемую частоту в герцах. Звук будет продолжаться до тех пор, пока не будут закрыты ворота канала 2. Поэтому Вы должны сбросить бит 1 порта B в 0, иначе звук будет продолжаться беско- нечно и может быть прекращен только перезагрузкой компьютера. Для точного регулирования длительности звука можно использовать счет- чик времени суток BIOS, как указано в [2.1.6]. В данном примере генерируется частота 440 герц. Звук прекращается после нажатия любой клавиши на клавиатуре. ;---рарешение канала 2 установкой порта B микросхемы 8255 PORT_B EQU 61H ;установка адреса порта B IN AL,PORT_B ;чтение его значения OR AL,3 ;установка двух младших битов OUT PORT_B,AL ;посылаем байт в порт B ;---установка регистров ввода/вывода COMMAND_REG EQU 43H ;адрес командного регистра CHANNEL_2 EQU 42H ;адрес канала 2 MOV AL,10110110B ;цепочка битов для канала 2 OUT COMMAND_REG,AL ;засылка в командный регистр |
|
|