Розробка програмного забезпечення, Опис портів введення-виведення, Опис алгоритму - Вимірювач частоти

Опис портів введення-виведення

MS DOS може працювати з трьома паралельними пристроями (LPT1 - LPT3). Для підключення використовується стандартне рознімання Centronix, що має 36 контактних виходів.

Кожен паралельний пристрій має свій адаптер. Адаптер керується трьома регістрами введення / виведення й адреси портів цих регістрів різні для кожного адаптера. Область даних BIOS містить базові адреси для кожного адаптера. Базова адреса відповідає молодшій адресі групи з трьох адрес портів. Базова адреса для LPT1 - 0040:0008, для LPT2 - 0040:000A і т. д.

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

Таким чином, перед звертанням до порту необхідно виконати процедуру визначення його базової адреси.

Програмування підключеної до паралельного порту апаратури полягає в установці визначених бітів у регістрах даних і керування і читанні визначених бітів з регістра стану. При цьому якщо з регістром даних проблем не виникає (це звичайний байтовий регістр), то два інших регістри мають деякі особливості. По-перше, деякі біти є інверсними. При записі в регістр керування нуля в цих бітах встановлюються одиниці, а якщо на входах регістра стану встановлені нулі, то з цих бітів зчитуються одиниці. По-друге, якщо чотири біти регістра керування розташовані в молодших бітах байта (біти 0-3), то п'ять бітів регістра стану - у старших (біти 3-7). Повна інформація про відображення сигналів шин керування і стани інтерфейсу Centronics на регістри паралельного порту комп'ютера приведена в таблиці 2.

Таблиця 2. Керуючі сигнали Centronics

ШИНА

СИГНАЛ

БІТ

ІНВЕРСІЯ

Керування

-STROBE

0

Інверсний

-AUTO FD

1

Інверсний

-INIT

2

Прямій

-SLCTIN

3

Інверсний

Стан

-ERROR

3

Прямій

SLCT

4

Прямій

PE

5

Прямій

-ACK

6

Прямій

-BUSY

7

Інверсний

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

Опис алгоритму

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

Предусмотрена возможность записи в дисковый файл текущих показаний для каждого игрока.

Алгоритм программы.

    1. В начале программы производится инициализация переменных и настройка порта параллельного интерфейса. 2. Ввод имен участников и опрос готовности каждого из игроков. 3. Ожидание нажатия на кнопку "Старт". 4. Запуск счетчиков тех игроков, кто был в состоянии готовности до нажатия кнопки "Старт". 5. Подсчет времени отдельно для каждого из участников. Ожидание сигнала окончания для каждого из участников отдельно. 6. Вывод результатов в файл. 7. Выход из программы или переход к пункту 2.

Разработанное программное обеспечение написано на языке Turbo Pascal 7.0.

Похожие статьи




Розробка програмного забезпечення, Опис портів введення-виведення, Опис алгоритму - Вимірювач частоти

Предыдущая | Следующая