Выбрать главу

Разряды Ь4 — Ь7, напротив, напрямую сообщают о текущем состоянии каждого из четырех цифровых входов. Для выделения значения каждого разряда достаточно выполнить логическое умножение (функцию И, то есть AND) считанного байта на соответствующую маску, то есть на байт, значение которого равно весу данного разряда. Данная операция существует в любом языке программирования.

Параллельные порты

Хотя порт джойстика также можно назвать параллельным (потому что данные поступают в параллельном коде), этот термин традиционно закреплен за портами принтера, носящими общее название Centronics. Его часто называют также интерфейс Centronics.

На рис. 5.3 показано назначение выводов розеток типа DB25, используемых для данного интерфейса. Не следует путать их с вилками DB25 последовательных портов RS232, которые еще встречаются наряду с разъемами типа DB9 (СОМ1 — COM4).

Рис. 5.3. Выводы разъема интерфейса Centronics

Все ПК имеют первичный параллельный порт, названный LPT1, нередко можно встретить компьютеры, имеющие и второй порт — LPT2.

Вполне естественно подключать принтер к LPT1, а для других, менее часто используемых аксессуаров, воспользоваться LPT2. Информационный доступ процессора к каждому параллельному порту осуществляется через программно-доступные регистры, которые располагаются в адресном пространстве ввода-вывода. Каждому порту соответствуют 4 последовательных логических адреса: BASE, BASE+1, BASE+2, BASE+3. В табл. 5.1 представлены возможные значения адресов.

Таблица 5.1. Адреса доступа к параллельным портам

Регистры с адресами BASE+3 используются для управления режимами работы соответствующего порта. Их содержимое определяет конфигурацию и режимы работы порта, ими нельзя манипулировать без хорошего знания принципов функционирования параллельного интерфейса.

Для передачи данных используются регистры данных, которым соответствуют базовые адреса (BASE). Соответствие разрядов регистров данных и разрядов данных показано на рис. 5.4. Обычно регистры данных применяются для вывода информации из порта, то есть процессор может только записывать в них информацию.

Рис. 5.4. Назначение разрядов регистров данных

Регистр с адресом BASE+1, наоборот, доступен процессору только для чтения. Считанный байт несет так называемую информацию состояния порта (status). Назначение разрядов байта состояния представлено на рис. 5.5. Отметим, что три младших разряда (Ь0 — Ь2) не используются.

Рис. 5.5. Байт состояния параллельного порта

Регистры с адресами BASE+2, называемые регистрами управления, используются для управления выходными функциональными линиями интерфейса, включая линию , применяемую нашим кодером. На рис. 5.6 показано соответствие четырех младших разрядов регистра управляющим линиям параллельного порта. Четыре старших разряда (Ь4 — Ь7) не используются.

Рис 5.6. Назначение разрядов регистра управления

Обычно на IBM PC РС-совмсстимых компьютерах значение десятичного базового адреса порта LPT1 — 888 (то есть 378h в шестнадцатеричной системе). Для LPT2 он составляет 632 (или 278h в шестнадцатеричной системе). Можно встретить компьютеры, в которых LPT1 соответствует адрес 956 (3BCh).

При установке мультикарты целесообразно сконфигурировать ее на «настоящий» LPT2, то есть с базовым адресом равным 632.

Так, в табл. 5.2 приведены только наиболее часто встречаемые адреса (BASE — BASE+3) портов LPT 1 и LPT2, те самые, к которым мы обращались при разработке программ.

Таблица 5.2. Адреса портов LРТ1 и LPT2

ФАЙЛЫ, СОДЕРЖАЩИЕСЯ НА САЙТЕ

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

CARMAG.BAS

CARTOCRD.BAS

CRDTOCAR.BAS

CREMAG.BAS

DEC5.BAS

DEC7.BAS

INVERT.BAS

JUSTCAR.BAS

LECTISO1.BAS

LECTISO2.BAS

LECTISO3.BAS

LRCMAG.BAS

LUHN.BAS

LUHNCHK.BAS

PARITY.BAS

VERMAG.BAS

TEST5.CAR

TEST7.CAR

VISA.CAR

CARMAG.EXE

CARTOCRD.EXE

CRDTOCAR.EXE

CREMAG.EXE

DEC5.EXE

DEC7.EXE

INVERT.EXE

JUSTCAR.EXE

LECT210.EXE

LECT75.EXE

LECTISOl.EXE

LECTISO2.EXE

LECTISO3.EXE

LRCMAG.EXE

LUHN.EXE

LUHNCHK.EXE

MAGLPT1.EXE

MAGWRITE.EXE

MAKELPT1.EXE

MAKESYNC.EXE

PARUTY.EXE

VERMAG.EXE

LECT210.PAS

LECT75.PAS

MAGLPT1.PAS

MAGWRITE.PAS

MAKELPT1.PAS

MAKESYNC.PAS

Все исходные тексты даны как на GWBASIC (файлы с расширением. BAS), так и на Turbo Pascal (файлы с расширением .PAS), что позволит читателям производить любые трансформации при наличии необходимого инструментария программирования для этих двух языков (интерпретатор GWBASIC, компилятор Turbo Pascal и компилятор Turbo Basic).

Каждая программа также предсгавлена в форме исполняемого файла (файлы. EXE), которые можно запустить непосредственно из командной строки DOS. При возникновении проблем любого рода, связанных с программами на BASIC, следует вернуться к исходной версии (.BAS), чтобы надлежащим образом проанализировать ситуацию.

АНАЛОГИ ЗАРУБЕЖНЫХ ЭЛЕКТРОННЫХ КОМПОНЕНТОВ

Таблица 5.3. Аналоги зарубежных электронных компонентов

* * *