|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Керування звуком за допомогою таймераДля створення звуку за допомогою таймера необхідно виконати два кроки: - необхідно запрограмувати таймер для генерації деякої частоти; - направити вихід з таймеру на динамік. Таймер по команді зчитує сигнал генератора тактових імпульсів (маючих частоту 1.193 МГц) до тих пір, поки їх число не співпаде з числом, заданим нами (лічильник). Фактично таймер ділить тактову частоту на наше число, та створює вихідну частоту. В результаті таймер генерує сигнали, які створюють звук визначеної частоти, коли ми підєднуемо його до динаміка. Лічильник і результуюча частота пов’язані між собою наступним відношенням: частота = 1193180/лічильник. Після обчислювання лічильника, що необхідний для тієї частоти звуку, яка нам потрібна (звукова), ми надсилаємо його в регістр таймера. Це робиться за допомогою трьох виводів у порти. Спочатку у порт 43Н надсилається значення В6Н, тим самим таймеру повідомляється, що йому надіслано лічильник. Потім в порт 42Н надсилається спочатку молодший, потім старший байти лічильника. Після того, як ми запрограмували таймер, необхідно задіяти схеми динаміка. Динамік керується за допомогою РРІ та використовує порт 61Н. Динаміком використовується тільки два з восьми розрядів порту: розряди 0 та 1. Останні розряди використовуються для інших цілей, тому при роботі з динаміком ми не повинні змінювати їх. Розряд 0 керує сигналом таймера, що використовується для роботи динаміка. Для того, щоб динамік працював від таймеру, обидва ці розряди повинні бути встановлені в 1.
Приклад 1. Генерація звуку за допомогою таймера: STAK SEGMENT PARA STACK ‘stack’ dw 125 dup(?) STAK ENDS DAT SEGMENT PARA ‘data’ m_freq dw 165, 156, 165, 0FFFF m_time dw 3 dup (100) DAT ENDS COD SEGMENT PARA ‘CODE’ ASSUME CS:COD, DS:DAT, SS:STAK PROGRAM PROC FAR .................... LEA SI,m_freq LEA BP, DS:m_time ..................... FREQ: MOV DI,[SI] CMP DI,0FFFFH JE END_PL MOV BX, DS:[BP] MOV AL, 0B6H OUT 43H, AL MOV DX, 14H MOV AX, 4F38H DIV DI OUT 42H, AL MOV AL, AH OUT 42H, AL IN AL, 61H MOV AH, AL OR AL,3 OUT 61H, AL ..................... MOV AL,AH OUT 61H, AL ADD SI, 2 ADD BP, 2 JNZ FREQ END_PL: .................... PROGRAM ENDP COD ENDS END PROGRAM Пряме керування динаміком Таймер керує динаміком, надсилаючи періодичні сигнали, що примушують коливатися мембрану динаміка. Теж саме ми можемо зробити і за допомогою програми, яка надсилає до динаміка сигнали, що вмикають, та вимикають його. Встановивши в нуль розряд 0 порту 61Н і тим самим відєднавши динамік від таймера, а потім встановивши та скинувши розряд 1, ми змусимо динамік коливатися. При використанні цього методу швидкість програми визначає частоту звуку: чим швидше буде виконуватися програма - тим вище буде тон. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |