|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.04.2012, 22:36 | #1 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Замена прерывания 1Ch (таймер)
Пытаюсь сделать писк динамика, при этом интервал писка отслеживать через прерывание 1Ch, которое вызывается внутри 08h.
Вот как делаю: Код:
Код:
initSpeaker: Код:
Код:
Заранее спасибо. Последний раз редактировалось Glaciuse; 16.04.2012 в 23:03. |
16.04.2012, 22:46 | #2 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Перед первым куском кода, инициализирую таймер для работы с динамиком так:
Код:
Код:
Последний раз редактировалось Glaciuse; 16.04.2012 в 23:02. |
17.04.2012, 08:49 | #3 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
А если вы внимательно почитаете описание таймера, то заметите, что вывод однотонного звука определяется лишь настройками портов таймера и от работы процессора не зависит.
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 17.04.2012 в 08:53. |
|
17.04.2012, 11:34 | #4 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
А если сделать так:
Заменить обработчик 08h на: Код:
|
17.04.2012, 11:57 | #5 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Я просто не очень понимаю, чего вы этим хотите добиться. Намного проще в обработчике сделать пару глобальных переменных по включению/выключению звука и настройке тональности и при очередном вызове процедуры перенастраивать звук по ним в зависимости от параметров, а вложенными вызовами прерывания вы можете добиться того, что у вас возникнет дикая рекурсия из которой процессор просто не сможет выбраться самостоятельно. Именно во избежание таких проблем и нужен запрет прерываний при выполнении прерывания.
например, организовать так: Код:
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 17.04.2012 в 12:27. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Замена прерывания | xWinDx | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 24.05.2010 20:18 |
Прерывания | alexdrew | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 16.05.2010 00:38 |
Прерывание 1ch | DronSC | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 14.05.2010 14:27 |
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL | DorianLeroy | Фриланс | 8 | 18.02.2009 18:52 |
Прерывания | Kn793 | Общие вопросы Delphi | 3 | 10.01.2009 18:43 |