Курсовая работа: Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат - wav)
1. Установить обработчик прерывания от звуковой платы (и разрешить его в контроллере прерываний).
2. Выполнить команду 40h или другим образом установить частоту оцифровки.
3. Выполнить команду ODlh (включить динамик).
4. Настроить DMA (режим 48h + номер канала).
5. Выполнить команду 14h. Аргументы LO и HI - это младший и старший байты длины проигрываемого участка минус один.
6. Из обработчика прерывания подтвердить его чтением порта 22Е h и посылкой байта 20h в соответствующий контроллер прерываний.
7. Выполнить команду 0D3h (выключить динамик).
На платах, начиная с SB16, для этого режима рекомендуется пользоваться командами 0C?h.
16h, LO, HI: прямое воспроизведение 2-битного ADPCM через DMA (SB). Начинает процесс воспроизведения данных аналогично команде 14h, но они должны храниться в сжатом формате Creative ADPCM 2 bit. Длина, указываемая в качестве аргументов этой команды, равна (число_6айтов + 2)/4. В качестве нулевого байта в процедуре распаковки ADPCM используется значение, которое применялось последней командой 17h. В остальном процедура воспроизведения аналогична команде 1 Ah.
17h, LO, HI: прямое воспроизведение 2-битного ADPCM через DMA с новым нулевым бантом (SB).
То же самое, что и 16h, но первый байт из данных будет рассматриваться как нулевой байт для процедуры распаковки ADPCM.
1Ch: воспроизведение 8-битного PСМ через DMA с автоинициализацией (SB2) Начинает режим воспроизведения с автоинициализацией - лучший из режимов, предлагаемых звуковыми платами. В этом режиме DSP воспроизводит в цикле содержимое указанного участка памяти, мгновенно возвращаясь на начало, пока он не будет остановлен командой 0DAh или новой командой воспроизведения через DMA. Весь секрет заключается в том, что плата генерирует прерывание не только при достижении конца блока, но и при достижении его середины. Таким образом, пока DSP проигрывает вторую половину буфера, мы можем прочитать следующие несколько килобайтов в первую половину, не останавливая воспроизведение ни на миг:
Установить обработчик прерывания звуковой платы и разрешить его в
контроллере прерываний.
2. Выполнить команду 40h или другим образом установить частоту оцифровки.
3. Выполнить команду 48h (установить размер DMA-буфера - (число байтов +
1)/2 - 1).
4. Выполнить команду 0Dlh (включить динамик).
5. Настроить DMA (режим 58h + номер канала).
6. Выполнить команду 1Ch
7. В обработчике прерывания: заполнить следующую половину буфера.
8. В обработчике прерывания: подтвердить прерывание чтением из 22Eh и
записью 20h в контроллер прерываний.
9. Подождать, пока не будут воспроизведены все данные.
10. Выполнить команду 0D3h (выключить динамик).
11. Выполнить команду 0D0h (остановить 8-битную DMA-передачу).
12. Выполнить команду 0DAh (завершить режим автоннициалиэации).
13. Выполнить команду 0D0h (остановить 8-битную DMA-передачу).
На платах, начиная с SB16, для этого режима рекомендуется пользоваться командами 0С? h.