ЗНАЕТЕ ЛИ ВЫ?

Управління динаміком з використанням таймера.



Одне з найбільш розповсюджених застосувань таймера - генерація звукових сигналів і відтворення музики. Таймер дозволяє відтворювати музику в фоновому режимі, тобто під час роботи програми може звучати музика.

Як вже зазначалося вище, канал 2 мікросхеми 8254 зв'язаний з динаміком. Однак динамік не просто з'єднаний з виходом OUT каналу 2. Порт 61h також використовується для управління динаміком.

Молодший біт цього порту при встановленні в 1 дозволяє роботу каналу, тобто генерацію імпульсів для динаміка. Додатково для управління динаміком використовується біт 1 порту 61h. Якщо цей біт встановлений в 1, імпульси від каналу 2 таймера зможуть проходити на динамік. Таким чином для включення звука треба виконати наступні дії:

– запрограмувати канал 2 таймера на потрібну частоту (тобто завантажити в регістр лічильника каналу значення, рівне відношенню частоти СГІ і необхідної частоти звука);

– встановити в 1 два молодших розряду порту 61h. Оскільки інші розряди порту 61h використовуються в машині для інших цілей, вони повинні бути залишені без зміни.

– після цього в порт 43h записати командне слово, наприклад В6 або В7. Хоча цей крок є необов’язковим для включення динаміка, він покращує звучання звуків, що будуть програватися.

Для виключення звука треба скинути два молодших розряду порту 61h (не змінюючи знов-таки стани інших розрядів).

Управління динаміком без таймера.

Для генерації звука без таймера треба скинути молодший біт порту 61H (заборонивши завдяки цьому роботу каналу 2 таймера) і, управляючи бітом 1 цього порту, тобто встановлюючи цей біт то в 1, то в 0, формувати імпульси для динаміка. Висота звука, що генерується, буде відповідати періоду імпульсів. Відзначимо, що цим засобом можна генерувати імпульси будь-який скважності, що дасть більше можливостей для створення різноманітних звукових ефектів.

Відтворення музики.

Мелодія, як відомо, складається з нот, поділених або не поділених паузами. При програванні мелодії необхідно для кожної ноти програмувати відповідним образом канал 2 таймера і включати динамік (з допомогою порту 61h) на певний час, рівний тривалості ноти.

 

Таблиця 5.1 – Значення частот нот 1-ої октави

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

 

Після цього програма повинна вимкнути динамік і витримати паузу, якщо буде потрібно, перед програванням наступної ноти. В табл. 5.1 наведені частоти для нот 1-ої октави. Для інших октав при пониженні або підвищенні тону треба значення частот ділити або умножати на два.

Плавні переходи тонів виробляються за рахунок безперервної зміни частоти. Такий звуковий ефект можна зробити більш виразним, якщо трохи зменшити тривалість кожного тону при підвищенні звука або злегка збільшувати тривалість при пониженні.

 

Завдання для лабораторної роботи

 

Завдання: написати програму для програвання мелодії згідно свого варіанту до натискання клавіші.

Особливості програмування:

На мові Turbo-Pascal.

Для виділення молодшого і старшого байтів деякого слова зручно використовувати функції Lo и Hi: Lo(w) - виділяє молодший байт слова w; Hi(w) - старший байт слова w, де w:word.

Для запису даних в порт використовуйте масив Port. Наприклад, для запису молодшого байта зміної kd в регістр каналу 2 можна використати вираз Port[$42]:=Lo(kd), де kd - зміна типу word, що задає коефіцієнт ділення частоти системного генератора на потрібну частоту.

Для встановлення деяких бітів слова чи байта без змінення інших бітів використовуйте операцію OR з маскою, що містить 1 в потрібних бітах та 0 в інших; для скидання - операцію AND з маскою, що містить 0 в потрібних бітах и 1 в інших.

На мові Turbo-C.

Для запису даних в порт використовуються функції запису порту, що зберігаються в бібліотеці < dos.h>. Після чого, наприклад, для запису молодшого байта змінної kd в регістр лічильника каналу 2 можна використати вираз outportb(0x42,kd); де kd - зміна типу int, що задає коефіцієнт ділення частоти системного генератора на потрібну частоту.

Для встановлення деяких бітів слова чи байта без зміни інших бітів використовуйте операцію | з маскою, що містить 1 в потрібних бітах та 0 в інших; для скидання - операцію & з маскою, що містить 0 в потрібних бітах и 1 в інших.

Варіанти завдань

1. До(1), ре(2), мі(3), сі(3), ля(2), соль(1), до-діез(5), соль(1), ре(3).

2. Мі(2), до(3), ля-діез(1), фа(3), соль-діез(1), фа(3), фа-діез(2), ре(4), сі(2).

3. Соль(1), ля-діез(1), ля(2), ля(3), до-діез(1), ля-діез(3), соль-діез(2), сі(3), мі(1).

4. Ля-діез(1,5), фа(1), до(2), сі(0,5), до-діез(3), ля-діез(0,5), до(2,5), фа(1), соль(2).

5. Фа(2), фа-діез(2), соль(2), ре-діез(2,5), ре(2,5), до-діез(2,5), мі(1), ре(2), до(1).

6. Ре(1,5), ля-діез(2), ре-діез(1), соль(2), ля(1), до-діез(0,5), ля(4), ре-діез(1), сі(0,5).

7. Ре(3), мі(0,5), фа(0,9), сі(0,5), до(1,3), ля(1,5), ре(3), мі(0,5), фа(0,9).

8. До(1,3), ля(1,5), ре(3), до(1,3), ля(1,5), мі(3), до(1,3), ля(1,5), фа-діез(3).

9. Мі(2), до(3), ля-діез(1), фа(3), ре(2), мі(3), сі(3), ля(2), соль(1).

10. Фа-діез(2), соль(2), ре-діез(2,5), ре(2,5), до-діез(2,5), мі(1), ре(2), ре(4), сі(2).

Контрольні запитання

 

1. Призначення підсистеми таймера в складі ПК.

2. Структурна схема таймера і призначення каналів таймера.

3. На який мінімальний і максимальний інтервал часу можна запрограмувати канал таймера і чому.

4. Які дії включає оброблювач переривань таймера - ІNT 08 h.

5. Що являє собою стандартний оброблювач переривань 1Сh в прикладних програмах.

6. Структура слова управління таймера.

7. Як виконати читання каналу таймера" на льоту".

8. Як прочитати слово керування і слово стану каналу таймера.

9. Як організувати тимчасову затримку з використанням таймера.

 

ЛАБОРАТОРНА РОБОТА №6.

Клавіатура

Мета: вивчення клавіатури ПК та набуття практичних навичок програмування портів клавіатури.

 

Теоретичні відомості

Клавiатура – основний засіб зв'язку користувача з комп'ютером. Підсистема клавіатури потрібна для виконання наступних функцій:

– визначати момент і номер натискання і відпускання окремих клавіш або їхні комбінації;

– виробляти переривання (INT 9h);

– керувати індикаторами клавіатури;

– дозволяти/забороняти лінію А20 для доступу до Extended memory;

– читати інформацію про конфігурацію системи для процедур BIOS;

– повертати мікропроцесор з захищеного режиму;

– виконувати програмне скидання системи.

Структурна схема підсистеми клавіатури комп'ютера IBM PC/AT зображена на рис. 6.1.

 

Рис. 6.1 – Структурна схема підсистеми клавіатури

 

Як видно з рис. 1 підсистема клавіатури складається з пристроїв системного блоку (контролера клавіатури Intel8042, функції якого в комп'ютерах IBM PC і IBM PC/XT виконувала мікросхема конфігурації 8255) і пристрою блоку клавіатури, об'єднаних 4-х провідним кабелем.

Основними модулями блоку клавіатури є матричні перемикачі клавіш, контролер клавіатури intel 8048 (аналогічний контролеру 8042 системного блоку, але запрограмований на виконання інших функцій) і блок індикаторів клавіатури.

Для персональних комп'ютерів IBM PC є три клавіатури:

– 83-клавішна клавіатура IBM PC і IBM PC/XT, що застосовувалася в означених комп'ютерах і вітчизняних аналогах (ЄС-1840, 1841, Іскра1030 і т. д.);

– 84-клавішна клавіатура IBM PC/AT (змінене розташування клавіш, додана клавіша SysReg, додаткові можливості програмування);

– 101/102 клавішна клавіатура PS/2 (зараз застосовується практично в усіх персональних комп'ютерах). На ній з'явилися нові клавіші F11 і F12, праві Alt і Ctrl, друга клавіша Enter, клавіша Pause, повністю продубльоване керування курсором. З'явилася нова можливість програмування клавіатури (режими 1, 2, 3).

 

Контролер клавіатури системного блоку

Реалізований на мікросхемі intel 8042, що являє собою однокристальний мікрокомп’ютер, структурна схема якого зображена на рис. 6.2.

 

Рис. 6.2. Структурна схема однокристального мікрокомп’ютера 8042

 

Основні модулі:

– МП8042 - мікропроцесор 8042;

– RS - регістр стану;

– Р1 - вхідний порт;

– Р2 - вихідний порт;

– RAM - внутрішнє ОЗП;

– ROM - внутрішнє ПЗП, в якому зберігається програма управління контролером;

– буфери - вхідний і вихідний.

Розглянемо докладно призначення основних модулів.





Последнее изменение этой страницы: 2016-06-23; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.238.190.82 (0.009 с.)