Курсовая работа: Создание приложения, обеспечивающего генерацию звука с помощью системного таймера

В таблице ниже приведены частоты нот для второй октавы. При повышении (понижении) тона на октаву частота соответствующей ноты умножается (делится) на два.


Таблица 1 - Частоты нот

Нота Частота, Гц
До 261,7
До-диез 277,2
Ре 293,7
Ре-диез 311,1
Ми 329,6
Фа 349,2
Фа-диез 370
Соль 392
Соль-диез 415,3
Ля 440
Ля-диез 466,2
Си 493,9

2. КОНСТРУКТОРСКАЯ ЧАСТЬ

2.1 Общие сведения

Данная программа написана на ассемблере языке программирования низкого уровня, создана с использованием программных средств пакета Tasm и редактора AsmEdit. Исполняемый файл программы находится в формате.exe и называется kur.exe.

2.2 Функциональное назначение

Данная программа позволяет пользователю выбрать одну из двух представленных мелодий для генерации и воспроизведения.

2.3 Описание логической структуры программы

2.3.1 Алгоритм работы программы

- Вывод на экран строки

- Сохранение старого вектора прерывания

- Установка нового вектора прерывания

- Опрос клавиатуры

- Если выбран номер мелодии, то поместить массив в аккумулятор

- Иначе: восстановление обработчика прерывания и выход

2.3.2 Используемые методы

В начале программы происходит инициализация сегментного регистра CS. Все данные, которые описаны в программе, размещаются в регистре команд. После запуска программы на экран выводится сообщение. Происходит сохранение старого вектора прерывания и инициализации нового. В зависимости от выбора пользователя, после опроса клавиатуры, программа продолжает работу и передает текущую ноту в регистр-аккумулятор, либо происходит восстановление прерывания и выход их программы. Выход из программы происходит при нажатии кнопки “q”. Основная процедура программы - Start proc (см.Приложение 1, стр. 22).

Ниже описаны подпрограммы, которые вызывают в главной:

- new_int1c proc near – новый обработчик прерываний (см. Приложение 1, стр.23) .

Происходит сохранение всех регистров, вызывается процедура генерации звука, восстановление всех регистров и происходит возврат из программы обработки прерывания.

- kbin proc near - проверка введенного символа для дальнейшей передачи управления(см. Приложение 1, стр.24) .

Происходит вызов клавиатурного прерывания для считывания символа и выход из процедуры.

- muz proc near – процедура извлечения очередного звука (см. Приложение 1, стр.23) .

Первым делом осуществляется проверка, установлена ли переменная iniflag (она используется как флаг). Если нет, что считывается состоянии системного порта РВ ППИ, в 0 и 1 бит заносятся 0 и записывается обратно в порт. Таким образом происходит запрет звучания.

Если флаг установлен, то считывается текущая нота. Если она равно 255 (то есть это пауза), то происходит запрету звучания и продолжение считывания нот. В противном случае проверяется, если нота равно 0 (то есть конец массива нот), то происходит переход на начало выполнения программы и происходит выход, если флаг не возведен.

Если текущая нота не равно 255 или 0, то происходит считывание частоты ноты, младший и старший байты которой заносятся во второй канал таймера. Далее происходи разрешение звучания, то есть считывается значение системного порта РВ ППИ, в 0 и 1 бат заносятся единицы и отправляется обратного в порт. И происходит нормальный выход из процедуры.

2.3.3 Вызов и загрузка

Вызов программы осуществляется путём запуска файла «kur.exe». Если файл не существует, его необходимо скомпилировать из файла исходного текста программы под названием «kur.asm».

К-во Просмотров: 265
Бесплатно скачать Курсовая работа: Создание приложения, обеспечивающего генерацию звука с помощью системного таймера