1   2   3   4   5
Ім'я файлу: КеруванняЗвукомФедорів.docx
Розширення: docx
Розмір: 339кб.
Дата: 23.06.2020
скачати

ВСТУП



У курсовій роботі виконуються завдання, пов'язані із системним програмуванням.

Курсова робота розбита на три завдання.

Перше завдання пов'язане з роботою системного таймера комп'ютера.

Крім годинника реального часу, будь-який комп'ютер (навіть найпростіший ІBM PC) містить пристрій, названий системним таймером. Цей пристрій підключений до лінії запиту на переривання ІRQ0 і виробляє переривання ІNT 8h приблизно 18,2 рази в секунду (точне значення - 1193180/65536 разів у секунду). У завданні передбачається розібратися з роботою системного таймера, проаналізувати запропоновану програму, удосконалити її й написати дві інші програми, які використовують системний таймер.

Друге завдання стосується роботи з мишею.

Для роботи з мишею використовується вектор переривання ІNT 33h. Ця програма виконує всі операції, пов'язані з обслуговуванням миші.

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

Третє завдання припускає роботу з керуванням програмами.
Програма копіює об’єднаний зміст всіх файлів, що вказаний в командному рядку, на стандартний вивід. Можна задавати як список файлів, так і використовувати маски (символи “*”,”?”). Довгі назви файлів не використовуються.

1 АНАЛІЗ ТЕХНІЧНОГО ЗАВДАННЯ

програма комп'ютер керування

1.1 Засоби генерації точно відміряних відрізків часу



Для вивчення роботи з генерацією відрізків часу треба виконати наступні завдання.

Відкомпілювати й виконати програму sys_t.cpp, що демонструє використання системного таймера для формування відрізків часу, які не залежать від тактової частоти ІBM-сумісної ЕОМ. З'ясувати, яким чином впливає на тон звуку значення коефіцієнта октави.

Продемонструвати звучання мелодії, заданої згідно варіанта, у різних октавах

Для непарних номерів варіанту – Під час програвання мелодії до екрану вивести прямокутник (або іншу геометричну фігуру), колір якого змінюється зі зміною частоти ноти, яка звучить.

Продемонструвати результати роботи програми керівнику курсової роботи.

Створити програму, що відтворює затримку на задане число секунд

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

Для непарного номера варіанту – Створити інтерфейс для вводу з клавіатури значення затримки й протягом затримки виводити до екрану символи, або числа, що ілюструють відлік часу.

Продемонструвати результати роботи програми керівнику курсової роботи.

Створити програму, що інформує, скільки секунд пройшло між першим і другим натисканням будь-якої клавіші

Фіксувати на екрані початок, і кінець рахунку часу.

Продемонструвати результати роботи програми керівникові курсової роботи.

1.2 Засоби роботи з мишею
Ознайомитись зі способами роботи з маніпулятором миші, навчитися ініціалізувати мишу й змінювати форму курсору миші.

Відкомпілювати й виконати програму sys_m1.cpp, що демонструє зміну форми курсору в графічному режимі. Задати форму курсору миші у вигляді першої букви свого прізвища (‘Б’).

Продемонструвати результати роботи програми керівнику курсової роботи.

Відкомпілювати й виконати програму sys_m2.cpp, що демонструє зміну форми курсору в текстовому режимі

Задати форму курсору миші у вигляді першої букви свого прізвища (‘Б’). Атрибути кольору букви й тла встановити наступні:

колір букви - перша цифра числа свого дня народження (2);

колір тла - друга цифра числа свого дня народження (0).

Продемонструвати результати роботи програми керівникові курсової роботи.

Для непарного номера варіанту – Визначити клавішу, яку було натиснуто.

1.3 Вивчення технічного завдання



Третє завдання припускає роботу з керуванням програмами.

Програма копіює об’єднаний зміст всіх файлів, що вказані в командному рядку, на стандартний вивід. Можна задавати як список файлів, так і використовувати маски (символи “*”,”?”). Довгі назви файлів не використовуються.

2 Аналіз взаємодії системної програми з апаратною частиною комп’ютера та операційною системою


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



Будь-який комп’ютер містить пристрій, що має назву системний таймер. Це пристрій, який під’єднано до лінії запиту на апаратне переривання IRQ0 та виробляє програмне переривання INT 8h приблизно 18,2 рази на секунду (точне значення – 1193180/65536 раз на секунду).

Обробник переривання таймеру

При ініціалізації BIOS встановлює свій обробник для переривання таймеру. Цей обробник кожний раз збільшує на одиницю поточне значення 4-байтової змінної, що розташовано в області даних BIOS за адресою 0000:046Ch – лічильник таймеру. Якщо цей лічильник переповниться внаслідок того, що пройшло більш ніж 24 години з моменту запуску таймеру, в комірку 0000:047h заноситься значення 1.

Друга дія, що виконується стандартним обробником переривання таймеру, – контроль за роботою двигунів НГМД. Якщо після останнього звернення до НГМД пройшло більш ніж 2 секунди, обробник переривання вимикає двигун. Комірка за адресою 0000:0440h містить час, який залишився до вимикання двигуна. Цей час постійно зменшується обробником переривання таймеру. Коли він стає рівним нулю, двигун НГМД вимикається.

Остання дія, яку виконує обробник переривання таймеру, – виклик програмного переривання INT 1Ch. Після ініціалізації системи вектор INT 1Ch вказує на команду IRET, тобто обробник переривання INT 1Ch нічого не виконує. Програма може встановити власний обробник цього переривання для того, щоб виконувати які-небудь періодичні дії.

Таймер зазвичай реалізується на мікросхемі Intel 8253 (для комп’ютерів IBM PC та IBM PC/XT) або 8254 (для комп’ютерів IBM PC/AT та IBM PS/2), а також на аналогах цих мікросхем.

Канали таймеру

В сучасних комп’ютерах задіяні всі три канали таймеру.

Канал 0 використовується в системному годиннику часу доби (не слід плутати з годинником реального часу, що реалізовано на іншій мікросхемі). Цей канал працює в режимі 3 й використовується як генератор імпульсів з частотою приблизно 18,2 Гц. Саме ці імпульси викликають апаратне переривання IRQ0 та програмне INT 8h.

Канал 1 використовується для регенерації вмісту динамічної пам’яті комп’ютера. Вихід каналу OUT використовується для запиту до каналу прямого доступу DMA, котрий виконує оновлення вмісту пам’яті.

Канал 2 під’єднаний до гучномовця комп’ютера й може бути використано для генерації звуків або музики або як генератор випадкових чисел. Канал використовує режим 3 таймерів 8253 та 8254.

Таймер та музика

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

Налаштовування таймеру для програвання музики

Канал 2 мікросхеми 8254 зв’язаний з гучномовцем комп’ютера. Однак гучномовець не просто з’єднано з виходом OUT каналу 2. Порт виводу 61h також використовується для керування гучномовцем. Молодший біт порту 61h під’єднано до входу GATE каналу 2 таймеру. Цей біт при встановленні в одиницю дозволяє роботу каналу, тобто генерацію імпульсів для гучномовця.

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

Таким чином, для включення звуку необхідно виконати наступні дії:

  • Запрограмувати канал 2 таймеру на необхідну частоту (завантажити регістр лічильника каналу необхідним значенням);

  • Встановити два молодших біти порту 61h. Так як інші 6 бітів порту 61h використовуються для інших цілей, встановлення молодших бітів має виконуватись таким чином, щоб значення інших бітів не було змінено. Для цього спочатку необхідно прочитати байт з порту 61h в робочу комірку пам’яті, встановити там необхідні біти, потім вивести нове значення байту до порту 61h. Для вимикання звуку необхідно скинути два молодших біти порту 61h, при цьому не можна змінювати значення інших бітів цього порту.

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

Програма може генерувати звуки й іншим чином, не використовуючи таймер. Для цього необхідно скинути молодший біт порту 61h та, керуючи бітом 1 цього порту, формувати імпульси для гучномовця. Інакше кажучи, програма повинна періодично встановлювати та скидати цей біт. Висота генерації звуку буде відповідати періоду зміни стану вказаного біту.


1   2   3   4   5

скачати

© Усі права захищені
написати до нас