Рубрики: КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

про компютерное железо, документация, языки программирования

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

і 0D6h і запись і Запись регистра режимов для одногоі 0Bh і
і і і из каналов ПДП і і
і і і і і
і 0D8h і запись і Очистка (сброс) триггера-защелки і 0Ch і
і і і (триггера первого/последнего) і і
і і і і і
і 0DAh і запись і Программный сброс контроллера і 0Dh і
і і і і і
і 0DCh і запись і Очистка битов масок всех каналов і 0Eh і
і і і і і
і 0DEh і запись і Запись регистра масок для всех 4-хі 0Fh і
і і і каналов і і
і і і і і
і 0DAh і чтение і Чтение рабочего регистра ПДП і 0Dh і
і і і і і
АДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДЩ

— 21 —

E3.Программируемый контроллер прерыванийF

Программируемый контроллер прерываний (ПКП, Programmable
Interrupt Controller, PIC) реализует векторную систему
прерываний. Микросхема 8259А фирмы Intel (советский аналог
КР580ВН59), а так же ее модификации 8259А-2 и 8259А-8,
поддерживает 8 уровней прерываний от восьми различных устройств.
Основные функции контроллера:

— фиксация запросов на прерывания от восьми внешних
источников;
— программное маскирование поступающих запросов;
— присвоение фиксированных или циклически изменяемых при-
оритетов входам контроллера, на которые поступают запросы;
— инициация вызова процедуры обработки поступившего аппа-
ратного прерывания.

Количество обслуживаемых внешних источников прерываний
может быть увеличено путем каскадирования нескольких
контроллеров.

Расположение выводов микросхемы контроллера 8259A
приведено на рисунке.

ЪДДДДДДДДДДДДї ЪДДДДДДДДДДДДї
__ і АДДЩ і
CS ЫЭ 1 28 ЮЫ Vcc
__ і і
WR ЫЭ 2 27 ЮЫ A0
__ і і ____
RD ЫЭ 3 26 ЮЫ INTA
і і
D7 ЫЭ 4 25 ЮЫ IR7
і і
D6 ЫЭ 5 24 ЮЫ IR6
і і
D5 ЫЭ 6 23 ЮЫ IR5
і і
D4 ЫЭ 7 22 ЮЫ IR4
і і
D3 ЫЭ 8 21 ЮЫ IR3
і і
D2 ЫЭ 9 20 ЮЫ IR2
і і
D1 ЫЭ 10 19 ЮЫ IR1
і і
D0 ЫЭ 11 18 ЮЫ IR0
і і
CAS0 ЫЭ 12 17 ЮЫ INT
і і __ __
CAS1 ЫЭ 13 16 ЮЫ SP/EN
і і
GND ЫЭ 14 15 ЮЫ CAS2
і і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

— 22 —

ЪДДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іОбозначениеіТип выводаі Назначение і
ГДДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Vcc і — і Питание + 5 В і
і і і і
і GND і — і Общий (земля) і
і __ і і і
і CS і вход і Выбор микросхемы і
і __ і і і
і RD і вход і Чтение і
і __ і і і
і WR і вход і Запись і
і і і і
і D0-D7 ідвунаправ-і Выводы на шину данных і
і іленные і і

і івыводы і і
і і і і
і CAS0-CAS2 і входы/ і Для ведущего контроллера являются і
і і выходы і выходами, для всех ведомых входами. і
і і і Предназначены для передачи ведущим і
і і і информации для выбора необходимого і
і і і ведомого. і
і __ __ і і і
і SP/EN і вход і Выбор ведущего контроллера і
і і і і
і INT і выход і Запрос на прерывания і
і ____ і і і
і INTA і вход і Подтверждение прерывания і
і і і і
і A0 і вход і Выбор регистров контроллера і
і і і і
і IR0-IR7 і входы і Входы запросов на прерывания от і
і і і внешних источников. і
АДДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

В состав контроллера входят:

— схема управления чтением/записью;
— схема управления;
— схема каскадирования;
— регистр запросов на прерывания;
— схема обработки приоритетов;
— регистр состояния;
— регистр маскирования запросов на прерывания.

ПКП может находиться в двух основных состояниях: настройки
и обслуживания запросов на прерывания. В состоянии настройки
контроллер принимает управляющие слова инициализации
(Initialization Command Words, ICW), в состоянии обслуживания —
операционные управляющие слова (Operation Control Words, OCW).
Возможны несколько режимов обслуживания источников прерываний:

— режим фиксированных приоритетов по по уровням прерываний;
— два различных варианта циклического сдвига приоритетов;
— режим автоматического завершения обработки прерывания;

— 23 —

— режим специального маскирования;
— режим опроса устройств.

E3.1.Описание основных элементов ПКПF

Схема управления чтением/записью (Read/Write Control
Logic). Основной функцией этого блока является прием команд от
микропроцессора и передача ему информации о состоянии ПКП. Обмен
с микропроцессором осуществляется через специальный 8-разрядный
буфер данных (Data Bus Buffer), являющийся интерфейсом между ПКП
и шиной данных. В состав блока входят регистры управляющих слов
ICW и OCW. Схема управляется входами CS, RD, WR и A0. Вход CS
(Chip select) отвечает за выбор микросхемы. Низкий уровень
сигнала на входе CS разрешает выполнение обмена с ПКП. Низкий
уровень сигнала на входе WR (Write) разрешает микропроцессору
выводить управляющие слова ICW и OCW для приема их ПКП. Низкий
уровень сигнала на входе RD (Read) разрешает ПКП передать
микропроцессору информацию о состоянии специальных регистров
IRR, ISR и IMR, которые описаны ниже.

Все управляющие слова ICW и OCW принимаются контроллером в
виде 9-разрядных значений. Разряды 0 — 7 передаются через
8-разрядный буфер данных. Старший разряд (восьмой, считая с
нуля) носит название А0 и устанавливается в 0 или 1 в
зависимости от того, через какой из двух возможных портов
ввода-вывода (четный или нечетный) было передано управляющее
слово. Если для вывода значения использовался порт с четным
адресом, А0 будет равен 0, если использовался порт с нечетным
адресом на единицу большим, чем предыдущий, тогда А0 будет равен
1.

Регистр запросов на прерывания (Interrupt Request Register,
IRR) обслуживается через входы IR0 — IR7 контроллера. Сигнал на
одном входов IR0 — IR7 — это запрос на прерывание
соответствующего уровня (0 — 7). В соответствии с сигналом
запроса на прерывание схемой управления устанавливается
соответствующий бит в регистре IRR.

Регистр состояния (регистр обрабатываемых запросов,
In-Service Register, ISR) описывает в битах 0 — 7 прерывания
каких уровней (0 — 7) в данный момент обрабатываются.

Регистр маскирования запросов на прерывания (Interrupt Mask
Register, IMR) описывает, прерывания каких уровней в настоящий
момент замаскированы. Единичное значение бита в IMR указывает на
то, что прерывание соответствующего уровня при появлении запроса
в IRR блокируется.

Схема обработки приоритетов (шифратор приоритетов, Priority
Resolver) определяет, прерывание какого уровня в данный момент
является наиболее приоритетным для выполнения.

Схема управления ПКП формирует сигнал запроса на
прерывaние, поступающий на вход INT (запрос на прерывание)
микропроцессора. Если флаг IF регистра флагов процессора равен 1

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

R4 Выбор карты чтения Биты 0-2 задают номер плоскости
для режима чтения 1.
R5 Регистр режима Имеет следующую структуру:

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXі і і і і і Биты:
АДБДБВДБВДБВДБВДБДДЕДДЩ ДДДДД
і і і і АДД> 0-1: Режим записи 0 — 2 (см. ниже)
і і і АДДДДДДД> 2: 1=высокоимпедансный выход (для диаг-
і і і ностики), 0=обычная работа
і і АДДДДДДДДДД> 3: Режим чтения 0 — 1 (см. ниже)
і АДДДДДДДДДДДДД> 4: 1=использовать расслоение видеопамяти
і (ср. регистр 4 блока синхронизации)
АДДДДДДДДДДДДДДДД> 5: 1=использовать 2 бита на пиксель, как
в CGA (сдвиг нечетных битов в нечет-
ных картах); 0=сдвиг четных битов в
четных картах

R6 Управление графикой Имеет следующую структуру:

7 6 5 4 3 2 1 0
ЪДВДВДВДВДДВДДВДДВДДї
іXіXіXіXі і і Биты:
АДБДБДБДБДДЕДДБВДБВДЩ ДДДДД
і і АДД> 0: 1=графика, 0=знакогенератор
і АДДДДД> 1: Ставить нечетные карты после четных
АДДДДДДДДД> 2-3: Адрес и размер видеопамяти:
00=A0000h (128K), 01=A0000h (64K)
10=B0000h (32K), 11=B8000h (32K)

R7 Маскирование цветов Биты 0-3 исключают соответству-
ющие битовые плоскости в режиме
чтения 1.
R8 Битовая маска Биты 0-7 задают биты, маскируе-
мые во всех битовых плоскостях.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Примечание. Режимы чтения и записи имеют следующий смысл.

— 64 —

Режимы чтения:

0 — использовать выбранную битовую плоскость;
1 — сравнивать цвет пикселя с цветом в регистре R2 и воз-
вращать 1 при их совпадении.

Режимы записи:

00 — циклически сдвинуть данные, применить способ вывода,
записать в разрешенные плоскости;
01 — вывести в каждую плоскость значение, полученное преды-
дущим чтением;
10 — выводить в каждую плоскость 8 бит значения соответст-
вующих битов 0-3 данных (быстрая закраска)
11 — недопустим.

Порты ввода-вывода EGA имеют следующее назначение.

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
3C0h Запись Регистр контроллера атрибутов. Для доступа к
регистрам ATC подайте команды:
in al,3C2h ; перейти в адресный режим
out 3C0h,n ; номер регистра ATC (режим данных)
out 3C0h,val ; новое значение регистра
Биты 0-4 в n — номер регистра, бит 5 задает:
1=разрешить вывод на экран, 0=установка
регистра ATC.

3C2h Запись Многоцелевой управляющий регистр:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і Бит:
АВДБВДБВДБВДБДДЕДДБВДБВДЩ ДДДД
і і і і і і АДДД> 0: Выбор портов дисплея:
і і і і і і 1=3BXh (MGA), 0=3DXh (CGA)
і і і і і АДДДДДД> 1: 0=разрешить доступ к ОЗУ
і і і і і 1=запретить доступ к ОЗУ
і і і і АДДДДДДДДДД> 2-3: Частота генератора пикселей:
і і і і 00=14 Мгц, 01=16 Мгц,
і і і і 10=внешний источник, 11=резерв
і і і АДДДДДДДДДДДДДДД> 4: 1=выбрать вывод признаков,
і і і 0=выбрать внутренний источник
і і АДДДДДДДДДДДДДДДДДД> 5: Бит страницы при расслоенной
і і адресации видеопамяти: 0=младшая
і і страница, 1=старшая страница
і АДДДДДДДДДДДДДДДДДДДДД> 6: Полярность обратного хода луча
і по горизонтали: 1=отрицательная
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: Полярность обратного хода луча
по вертикали: 1=отрицательная

— 65 —

Чтение Регистр состояния 0:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і іX іX іX і Бит:
АВДБДДЕДДБДДЕДДБДДБДДБДДЩ ДДДД
і і АДДДДДДДДДДДДД> 3-4: Частота генератора пикселей
і і (см. выше)
і АДДДДДДДДДДДДДДДДДДД> 5-6: Ввод признаков
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: 0=обратный ход луча по
вертикали

3C4h Запись Регистр адреса блока синхронизации.

3C5h Запись Регистр данных блока синхронизации. Для прог-
раммирования регистра Rn блока нужно выполнить
команды:
out 3C4h,n и out 3C5h,данные

3CAh Запись Графическая позиция 2 (для EGA должна быть 1).

3CCh Запись Графическая позиция 1 (для EGA должна быть 0).

3CEh Запись Регистр адреса графического контроллера.

3CFh Запись Регистр данных графического контроллера. Для
программирования регистра Rn нужно выполнить
команды:
out 3CEh,n и out 3CFh,данные

3D4h Запись Регистр индекса ЭЛТ. Используется для выбора
или регистра ЭЛТ. Для записи регистра ЭЛТ Rn нужно
3B4h выполнить команды:
out 3X4h,n и out 3X5h,данные.

3D5h/ Запись/ Регистр данных ЭЛТ. Позволяет записывать и
3B5h чтение читать все регистры ЭЛТ.

3DAh/ Запись Биты 0 — 1 управляют выходами признаков FC0 и
3BAh FC1 (контакты 19 и 17 соответственно).

Чтение Регистр состояния 1:

7 6 5 4 3 2 1 0
ЪДВДВДВДВДДВДДВДДВДДї
іXіXіXіXі і і і і Бит:
АДБДБДБДБВДБВДБВДБВДЩ ДДДД
і і і АДДД>0: 0=вывод изображения, 1=горизонтальная
і і і или вертикальная синхронизация
і і АДДДДДД>1: 1=триггер светового пера сброшен
і АДДДДДДДДД>2: 1=защелка светового пера открыта
АДДДДДДДДДДДД>3: 0=экран включен, 1=выключен (EGA не
требует проверки этого бита при
выводе — в любом случае «хлопьев» не
будет)

— 66 —

3DBh/ Запись/ Вывод любого байта выключает триггер светового
3BBh Чтение пера.

3DCh/ Запись/ Вывод любого байта включает триггер светового
3BCh Чтение пера.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

EGA работает либо в режиме совместимости с CGA или MGA,
либо в одном из своих собственных графических видеорежимов:

320 х 200, 16 цветов
640 х 200, 16 цветов
640 х 350, черно-белый
640 х 350, 16 цветов

В этих режимах видеопамять разбивается на 4 битовые
плоскости, каждая из которых содержит образ экрана для одного из
основных цветов: красного, зеленого, синего и яркости.
Контроллер EGA считывает биты всех четырех плоскостей, соответ-
ствующие данному пикселю, и формирует его результирующий цвет на
экране (комбинация из 4 двоичных цифр дает 16 вариантов цветов).

Видеопамять EGA oтображается в адреса ОЗУ A0000h — B0000h.
Размер памяти EGA варьируется от 64К до 256К в зависимости от
комплектации адаптера. Однако, даже если память EGA равна 256К,
она размещается в 16К адресного пространства оперативной памяти.
Это обьясняется тем, что каждая битовая плоскость отображается в
одни и те же адреса ОЗУ; для выбора битовой плоскости, с которой
Вы хотите обмениваться данными, необходимо переустанавливать
соответствующие регистры графического контроллера.

В графическом режиме 640 х 200 64К оперативной памяти
разбивается на 4 страницы по 16К каждая. Адреса этих страниц
равны соответственно A0000h, A4000h, A8000h и AC000h. Смещение
от начала страницы до байта, содержащего пиксель с координатами
(X,Y), равен 80*Y + int(X/8), а номер соответствующего бита в
этом байте равен 7 — (X % 8). Здесь X — горизонтальная позиция
точки (0 — 639), Y — ее вертикальная позиция (0 — 199).

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і і 0 і і 0 і і і і Бит:
АДВДБДВДБДДДБДВДБДДДБДВДБДВДБДВДЩ ДДДД
і і і і і АД>0: 1=адресный маркер данных не
і і і і і найден
і і і і АДДДДД>1: 1=ошибка на нулевой дорожке
і і і АДДДДДДДДД>2: 1=выполнение команды прекра-
і і і щено программно, команда
і і і не завершилась
і і АДДДДДДДДДДДДДДДДД>4: 1=идентификатор сектора не
і і найден
і АДДДДДДДДДДДДДДДДДДДДДДДДД>6: 1=неисправимая ошибка в дан-
і ных, ошибка контрольной
і суммы
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДД>7: 1=дефектный сектор

Порт 1F2h.
Чтение/запись числа секторов для последующей операции.

Порт 1F3h.
Чтение/запись параметра «номер сектора» для последующей
операции.

— 106 —

Порт 1F4h.
Чтение/запись старших битов номера цилиндра для последующей
операции (биты 0 — 1 — это биты 8 — 9 в 10-битовом номере
цилиндра).

Порт 1F5h.
Чтение/запись младших восьми битов номера цилиндра для
последующей операции.

Порт 1F6h.
Чтение/запись номера устройства и головки для последующей
операции.

Порт 1F7h (запись).
Вывод команды по управлению накопителем.

Порт 1F7h (чтение).
Чтение состояния накопителя и результатов предыдущей
команды:

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і і і і і і і і Бит:
АДВДБДВДБДВДБДВДБДВДБДВДБДВДБДВДЩ ДДДД
і і і і і і і АД>0: 1=предыдущая команда завер-
і і і і і і і шилась с ошибкой
і і і і і і АДДДДД>1: 1=сигнал «индекс»
і і і і і АДДДДДДДДД>2: 1=данные при выполнении пос-
і і і і і ледней операции были скор-
і і і і і ректированы при помощи
і і і і і алгоритма ECC
і і і і АДДДДДДДДДДДДД>3: 1=идет процесс обмена данными
і і і АДДДДДДДДДДДДДДДДД>4: 1=поиск завершен
і і АДДДДДДДДДДДДДДДДДДДДД>5: 1=ошибка записи
і АДДДДДДДДДДДДДДДДДДДДДДДДД>6: 1=устройство готово для чте-
і ния, записи или поиска
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДД>7: 1=устройство занято выполне-
нием команды ( остальные
биты не несут смысловой
нагрузки)

E9.2.2. Система командF

Код команды заносится в порт 1F7h после того, как
подготовлены все параметры в портах 1F2h — 1F6h. Выполнение
команды начинается сразу после занесения в порт 1F7h кода
команды. Команда состоит из одного байта. Старшие 4 бита
содержат код требуемой операции, младшие содержат параметры.
Перечень команд с возможными значениями параметров приведен в
таблице.

— 107 —

ЪДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Код і Назначение і Параметры і
іоперацииі і і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 1 і Рекалибровать (сброс і Период импульсов сигнала і
і і головок на цилиндр 0) і «шаг» і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 2 і Чтение секторов і Биты, определяющие необходи-і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ мость повторных обращений і
і 3 і Запись секторов і к диску и повторных попыток і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ считывания при ошибках і
і 4 і Проверка секторов і контрольной суммы і

ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 5 і Форматирование дорожкиі Параметр = 0 і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 7 і Поиск цилиндра і Период импульсов сигнала і
і і і «шаг» і
ГДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 9 і Диагностика і Параметр = 0 і
і ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і Установка параметров і Параметр = 1 і
і і накопителя (максималь-і і
і і ное число головок и і і
і і секторов) і і
АДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

— 108 —

E10. Печатающее устройствоF

Устройство печати IBM PC-подобных компьютеров обычно
подключается к параллельному интерфейсу. Для подключения
используется стандартный разъем Centronix, имеющий 36 контактных
выходов (отечественный аналог ИРПР-М). Допускается три варианта
подключения принтеров к ПЭВМ:

— адаптер принтера может находится на одной плате с
адаптером монохромного дисплея, при этом используются порты
3BCh — 3BEh;

— к ПЭВМ могут подключены два отдельных адаптера для
управления принтерами, использующие порты 378h — 37Ah (первый
адаптер) и 278h — 27Ah (второй адаптер).

При программировании принтера важно знать адрес базового
порта ввода-вывода (первого порта из трех); адреса базовых
портов хранятся в области данных BIOS, начиная с адреса 0:408h
(LPT1) и далее по слову на принтер до LPT4. Дальнейшее описание
предполагает, что базовый адрес принтера равен 378h.

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
378h Запись Регистр данных — сюда засылается байт, посылае-
мый на печать
Чтение Регистр данных — позволяет считать последний
байт, переданный принтеру

379h Чтение Регистр состояния принтера:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДВДВДї
і і і і і іXіXіXі Биты:
АВДБВДБВДБВДБВДБДБДБДЩ ДДДДД
і і і і АДДДДДДДДД> 3: 0=при печати возникла ошибка
і і і АДДДДДДДДДДДД> 4: 0=принтер в автономном режиме
і і АДДДДДДДДДДДДДДД> 5: 1=сигнал «конец бумаги»
і АДДДДДДДДДДДДДДДДДД> 6: 0=принтер готов к печати
і следующего символа
АДДДДДДДДДДДДДДДДДДДДД> 7: 0=принтер занят, находится в
автономном режиме или
произошла ошибка

— 109 —

37Ah Чтение/ Регистр управления принтером:
Запись

7 6 5 4 3 2 1 0
ЪДВДВДВДДВДДВДДВДДВДДї
іXіXіXі і і і і і Биты:
АДБДБДБВДБВДБВДБВДБВДЩ ДДДДД
і і і і АДДД> 0: бит запуска печати (см. ниже)
і і і АДДДДДД> 1: 1=после возврата каретки выводить
і і і перевод строки (в MS-DOS должен
і і і быть сброшен)
і і АДДДДДДДДД> 2: 1=инициализировать принтер
і АДДДДДДДДДДДД> 3: 1=разрешить вывод на печать (должен
і быть всегда установлен)
АДДДДДДДДДДДДДДД> 4: 1=разрешить прерывания от принтера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Примечания.
1. Для запуска печати символа нужно на короткое время
установить бит 0 регистра управления, а затем сбросить его.

2. Прерывание происходит по окончании вывода символа на
печать: для первого принтера на седьмом уровне контроллера
прерываний (IRQ7, вектор прерывания 0Fh), для второго принтера —
на пятом уровне (IRQ5, вектор 0Dh). Следует отметить также, что
IRQ5 используется XT-контроллером жестких дисков для генерации
своих прерываний. Обычно этот бит не используется
(сбрасывается), а проверка готовности принтера производится на
основании опроса регистра состояния.

Типичная последовательность действий для вывода на печать
одного символа такова:

— вывести передаваемый байт в регистр данных;

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

— 24 —

(прерывания разрешены), процессор отвечает сигналом по линии
INTA (подтверждение прерывания), после чего сбрасывается в 0
разряд IRR и устанавливается в 1 разряд ISR, соответствующие
уровню обрабатываемого прерывания. После получения второго
сигнала подтверждения от процессора по линии INTA, ПКП передает
на шину данных 8-битовый номер прерывания. Данная
последовательность работы схемы управления выполняется при
подключении ПКП к системе с микропроцессорами 8088/8086. При
работе с микропроцессорами 8080/8085 последовательность работы
схемы управления несколько отличается от описанной выше.
Основное отличие состоит в том, что процессору передается не
только номер прерывания, но и код команды процессора INT
(прерывание) — байт 0CDh.

Схема каскадирования отвечает за работу каскада из
нескольких контроллеров. При подключении к ведущему контроллеру
выход INT каждого ведомого подключается к одному из входов IR0 —
IR7 ведущего. Далее этот сигнал передается ведущим на вход INT
процессора. Когда процессор возвращает сигнал INTA, ведущий
контроллер не только устанавливает бит в ISR и сбрасывает бит в
IRR, но и выдает на свои выходы CAS0 — CAS2 номер уровня
прерывания, к которому подключен ведомый, пославший запрос на
прерывание. Сигналы по линии CAS0 — CAS2 принимаются всеми
ведомыми, однако обрабатываются только тем, который подключен к
линии IR с соответствующим номером.

— 25 —

E3.2.Режимы работы ПКПF

1. Режим фиксированных приоритетов (Fixed Priority, Fully
Nested Mode). В этом режиме контроллер находится сразу после
инициализации. Запросы прерываний имеют жесткие приоритеты от 0
до 7 (0 — высший) и обрабатываются в соответствии с
приоритетами. Прерывание с меньшим приоритетом никогда не будет
обработано, если в процессе обработки прерываний с более
высокими приоритетами постоянно возникают запросы на эти
прерывания.

2. Автоматический сдвиг приоритетов (Automatic Rotation). В
этом режиме дается возможность обработать прерывания всех
уровней без их дискриминации. Например, после обработки
прерывания уровня 4 ему автоматически присваивается низший
приоритет, при этом приоритеты для всех остальных уровней
циклически сдвигаются и прерывания уровня 5 будут иметь в данной
ситуации высший приоритет и, следовательно, возможность быть
обработанными.

3. Программно-управляемый сдвиг приоритетов(Specific
Rotation). Программист может сам передать команду циклического
сдвига приоритетов ПКП, задав соответствующее управляющее слово.
В команде задается номер уровня, которому требуется присвоить
максимальный приоритет. После выполнения такой команды
устройство работает так же, как и в режиме фиксированных
приоритетов, с учетом их сдвига. Приоритеты сдвигаются
циклически, таким образом если максимальный приоритет был
назначен уровню 3, то уровень 2 получит минимальный и будет
обрабатываться последним.

4. Автоматическое завершение обработки прерывания
(Automatic End Of Interrupt, AEOI). В обычном режиме работы
процедура обработки аппаратного прерывания должна перед своим
завершением очистить свой бит в ISR специальной командой, иначе
новые прерывания не будут обрабатываться ПКП. В режиме AEOI
нужный бит в ISR автоматически сбрасывается в тот момент, когда
начинается обработка прерывания нужной процедурой обработки и от
нее не требуется издавать команду завершения обработки
прерывания (EOI). Сложность работы в данном режиме
обуславливается тем, что все процедуры обработки аппаратных
прерываний должны быть повторно входимыми, т. к. за время их
работы могут повторно возникнуть прерывания того же уровня.

5. Режим специальной маски (Special Mask Mode). Данный
режим позволяет отменить приоритетное упорядочение обработки
запросов и обрабатывать их по мере поступления. После отмены
режима специальной маски предшествующий порядок приоритетов
уровней сохранается.

6. Режим опроса (Polling Mode). В этом режиме аппаратные
прерывания не происходят автоматически. Появление запросов на
прерывание должно определяться считыванием IRR. Данный режим
позволяет так же получить от ПКП информацию о наличии запросов
на прерывания и, если запросы имеются, номер уровня с

— 26 —

максимальным приоритетом, по которому есть запрос.

E3.3.Программирование ПКПF

Ниже описывается управление ПКП в ПЭВМ на базе
микропроцессоров Intel 8086/8088/80286. Возможности, позволяющие
включить ПКП в ПЭВМ, использующие другие процессоры, опущены.

Для вывода информации в ПКП используются 2 порта
ввода-вывода. Порт с четным адресом (обычно это порт 20h) и порт
с нечетным адресом (обычно 21h). Через эти порты могут быть
переданы 4 слова инициализации (Initialization Control Word,
ICW1 — ICW4), задающие режим работы ПКП, и 3 операционных
управляющих слова (слова рабочих приказов, Operation Control
Words, OCW1 — OCW3). В порт с четным адресом выводятся ICW1,
OCW2 и OCW3. OCW2 отличается от OCW3 тем, что бит 3 в ocw2 равен
0, а в OCW3 равен 1. В то же время бит 4 в OCW2 и OCW3 равен 0,
а в ICW1 равен 1. Таким образом по значению, выводимому в порт с
четным адресом, однозначно определяется, в какой регистр (ICW1,
OCW2 или OCW3) заносятся данные.

Порт с нечетным адресом используется для вывода ICW2, ICW3,
ICW4 и OCW1. Неоднозначности интерпретации данных в этом случае
так же не возникает, т. к. слова инициализации ICW2 — ICW4
должны непосредственно следовать за ICW1, выведенным в порт с
четным адресом и выводить в промежутке между ними OCW1 не
следует, онo не будет опознанo контроллером.

Выводом в порт с четным адресом управляющего слова
инициализации ICW1 начинается инициализация ПКП. В процессе
инициализации контроллер последовательно принимает управляющие
слова ICW1 — ICW4. При наличии в системе одного контроллера ICW3
не выводится. Наличие ICW4 определяется содержанием ICW1. При
наличии каскада из нескольких ПКП каждый из них инициализируется
отдельно.

Формат ICW1 следующий:

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 0 і — і — і — і 1 іLTIMі ADIіSNGLі IC4і
АДДДДБДДДДБДДДДБДДДДБДДДДБДВДДБДВДДБДВДДБДВДДЩ
і і і і
і і і АД> 1=будет вывод ICW4
і і і 0=не будет
і і АДДДДДД> 1=один контроллер
і і 0=каскад
і АДДДДДДДДДДД> игнорируется
АДДДДДДДДДДДДДДДД> 0=запуск запросов
фронтом
1=запуск запросов
уровнем

Бит 4, равный 1, определяет, что выводится ICW1, а не OCW2
или OCW3.

— 27 —

Бит 3 (LTIM), равный 0, задает запуск запросов фронтом, при
этом действует описанная выше схема: бит в IRR сбрасывается при
установке соответствующего бита в ISR.

Бит 2 (ADI) используется только в ПЭВМ на базе микро-
процессоров Intel 8080/8085.

Бит 1 (SNGL) указывает на наличие в системе одного
контроллера (если равен 1) или каскада из нескольких
контроллеров (если равен 0). Если этот бит равен 1, то ICW3 не
выводится в процессе инициализации и следом за ICW2 сразу должно
следовать ICW4.

Бит 0 (IC4) определяет, будет ли выводиться ICW4. Если ICW4
не выводится (бит 0 = 0), то оно автоматически заполняется
нулями. В описываемых ПЭВМ наличие ICW4 обязательно, т. к. тип
микропроцессора 8086/8088 задается в нем значением 1 в одном из
битов.

Управляющее слово ICW2 задает номер вектора прерывания для
прерываний уровня 0 (например 8 для IBM PC, у которых по уровню
0 происходят прерывания от таймера). Так как вектора аппаратных
прерываний располагаются подряд друг за другом, вывод в ICW2
значения 8 не только задает восьмой вектор для таймера, но и
девятый для прерываний уровня 1, десятый (0Ah) для прерываний
уровня 2 и т. д.

Управляющее слово ICW3 выводится только при наличии каскада
и имеет разный формат для ведущего и ведомых контроллеров. ICW3
ведущего указывает, к каким входам IR0 — IR7 подключены ведомые
контроллеры, при этом соответствующие биты устанавливаются в 1.
Остальные биты при этом равны 0. ICW3 следующего вида:

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 1 і 0 і 0 і 0 і 1 і 0 і 0 і 1 і 0 і
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ

задает, что в каскаде имеется 2 ведомых контроллера,
подключенных к входам IR1 и IR4.

ICW3 ведомого (подчиненного, slave) ПКП в трех младших
битах задает номер уровня, на котором работает ведомый
контроллер. Для ведомого контроллера, работающего на уровне 1
ICW3 будет выглядеть следующим образом:

A0 7 6 5 4 3 2 1 0

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

Графический режим 320 х 200 предоставляет пользователю 8
страниц размером по 8К. Смещение от начала страницы до байта,
содержащего пиксель с координатами (X,Y), равен 40*Y + int(X/8),
а номер соответствующего бита в этом байте равен 7 — (X % 8).
Здесь X — горизонтальная позиция точки (0 — 639), Y — ее
вертикальная позиция (0 — 199).

В графических режимах 640 х 350 имеются две страницы с
адресами A0000h и A8000h соответственно. В остальном этот режим
аналогичен предыдущим.

В качестве примера приведем три подпрограммы работы с
дисплеем EGA в режиме 640 х 200. Если Вы хотите использовать их
в других режимах, достаточно поменять значение константы
PageSize на соответствующее значение.

— 67 —

PageSize equ 4000h ; размер страницы для режима 640 х 200

;ЙННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма очистки экрана. є
;є Вход: CX = номер очищаемой страницы (0-3) є
;ИНННННННННННННННННННННННННННННННННННННННННННј

EGA_Cls proc near
push ax
push bx
push cx
push dx
push es
push di
xor ax,ax ; вычисляем смещение до страницы
mov bx,PageSize
jcxz Page_0
High_Page:
add ax,bx
loop High_Page
Page_0:
mov di,ax ; DI = адрес страницы в видеопамяти
mov ax,0A000h
mov es,ax ; ES:DI = полный адрес страницы
mov ax,0FF08h
mov dx,3CEh ; графический контроллер
out dx,ax ; установить все битовые маски
mov ax,0FF02h
mov dx,3C4h ; блок синхронизации
out dx,ax ; разрешить запись во все плоскости
mov ax,3
mov dx,3CEh ; графический контроллер
out dx,ax ; задать нормальный режим работы
mov cx,PageSize
xor al,al
rep stosb ; обнулить страницу
pop di
pop es
pop dx
pop cx
pop bx
pop ax
ret
EGA_Cls endp

;ЙННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма вывода пикселя на экран. є
;є Вход: AX = цвет пикселя є
;є BX = номер страницы є
;є CX = номер столбца (X) є
;є DX = номер строки (Y) є
;ИНННННННННННННННННННННННННННННННННННННННННННј

Put_Pixel proc near
push ax

— 68 —

push bx
push cx
push dx
push es

push ax
push cx
push dx
mov ax,dx
mov cx,80
mul cx ; AX = 80 * Y
pop dx
pop cx
push cx
shr cx,1
shr cx,1

shr cx,1 ; CX = X / 8
add ax,cx ; AX = 80 * Y + X / 8
mov cx,bx ; номер страницы
mov bx,PageSize
jcxz Page_Done
Next_Page:
add ax,bx ; учтем смещение до страницы
loop Next_Page
Page_Done:
pop cx
mov bx,ax ; BX = адрес байта, содержащего пиксель
mov ax,0A000h
mov es,ax ; ES:BX = полный адрес байта
and cl,7 ; CL = X % 7
mov ah,80h
shr ah,cl ; AH = позиция пикселя в байте
mov dx,3CEh
mov al,8
out dx,ax ; разрешить запись только в этот бит
pop ax
mov ch,al ; цвет пикселя
mov dx,3C4h
mov ax,0FF02h
out dx,ax ; разрешить запись во все плоскости
mov al,es:[bx] ; читаем байт
xor al,al
mov es:[bx],al ; обнуляем пиксель
mov al,2
mov ah,ch ; цвет
and ah,0Fh ; приведем к диапазону 0-15
out dx,ax ; разрешить запись в соотв. плоскости
mov al,es:[bx] ; читаем байт
mov al,0FFh
mov es:[bx],al ; устанавливаем пиксель
mov ax,0FF02h
out dx,ax ; разрешить запись во все плоскости
mov ax,3
mov dx,3CEh ; графический контроллер
out dx,ax ; задать нормальный режим работы

— 69 —

mov ax,0FF08h
out dx,ax ; включить все биты
pop es
pop dx
pop cx
pop bx
pop ax
ret
Put_Pixel endp

;ЙННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма чтения цвета пикселя. є
;є Вход: CX = номер столбца (X) є
;є DX = номер строки (Y) є
;є Выход:AX = цвет пикселя є
;ИНННННННННННННННННННННННННННННННННННННННННННј

Get_Pixel proc near
push ax
push bx
push cx
push dx
push es

push dx
mov ax,205h
mov dx,3CEh
out dx,ax ; режимы: записи=01, чтения=0
pop dx
push cx
push dx
mov ax,dx
mov cx,80
mul cx ; AX = 80 * Y
pop dx
pop cx
push cx
shr cx,1
shr cx,1
shr cx,1 ; CX = X / 8
add ax,cx ; AX = 80 * Y + X / 8
mov cx,bx ; номер страницы
mov bx,PageSize
jcxz My_Page
Higher_Page:
add ax,bx ; учтем смещение до страницы
loop Higher_Page
My_Page:
mov di,ax ; DI = адрес байта, содержащего пиксель
mov ax,0A000h
mov es,ax ; ES:DI = полный адрес байта
pop cx
and cl,7 ; CL = X % 7
mov ch,80h
shr ch,cl ; CH = позиция пикселя в байте

— 70 —

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

— в цикле проверять состояние принтера до устaновки бита 7
регистра состояния (здесь возможно использование таймаута);

— проверить биты 3-5 регистра состояния на наличие ошибки;

— установить и сразу же сбросить нулевой бит регистра
управления, для этого подходит следующая последовательность
команд:

mov dx,37Ah ;адрес регистра управления
mov al,00001101b ;установить биты 0,2 и 3
out dx,al ;вывести команду
xor al,1 ;сбросить бит 0
out dx,al ;повторно вывести команду

— далее можно прочитать и запрограммировать регистр
состояния и перейти к печати следуюего символа.

Несмотря на простоту управления, принтер представляет из
себя достаточно сложное устройство, имеющее свой микропроцессор,

— 110 —

ПЗУ и ОЗУ. Микропроцессор используется для обработки управляющих
последовательностей и управления печатью. ПЗУ содержит описание
рисунков символов в зависимости от их кода и выбранной таблицы и
программы на языке используемого микропроцессора. ОЗУ
используется для временного хранения введенных данных и
спроектированных пользователем символов. Ряд принтеров, помимо
интерфейса Centronix, могут поключаться и к последовательному
интерфейсу. Принтер обрабатывает ряд спецсимволов (таких, как
звонок, забой, горизонтальная и вертикальная табуляция), а также
имеет достаточно сложную систему команд для изменения режимов
работы и управления печатью.

Обычно команды начинаются с символа ESC (шестнадцатиричный
код 1Bh) и имеют длину от двух байт и более (существуют
командные последовательности, включающие по несколько килобайт
информации, например команды загрузки спроектированных
пользователем шрифтов). Спецсимволы и байты команд передаются
принтеру так же, как и обычные символы, предназначеные для
печати, описанным выше способом. Подобный способ управления
удобен для программного изменения режимов работы устройства.
Учитывая, что выпуском принтеров для ПЭВМ занимается достаточно
большое число компаний и возможности принтеров постоянно
совершенствуются, нет смысла приводить полностью какую-либо
систему команд, так как, во-первых, она в разных марках и
моделях принтеров различна, и, во-вторых, достаточно полно
описывается в документации на каждый конкретный принтер.

Существует 2 основных стандарта на систему команд и таблицу
используемых символов (стандарты IBM и EPSON), которых в
основном придерживаются фирмы-изготовители, оставляя за собой
право вносить в них изменения и дополнения. Единого стандарта
как на систему команд, так и на расположение и рисунки символов
второй половины таблицы ASCII (коды 129-255) нет. Наиболее часто
используемые команды:

— установка вида шрифта и режима печати;

— черновой текстовый (draft) нормальной ширины (pica),
узкий (condensed) или средней ширины (elita).

— качественный шрифт (NLQ, Proportional, Orator, Script и
т. д.);

-выбор таблицы символов из ПЗУ (обычно имеется несколько
таблиц, отличающихся расположением управляющих кодов, наличием и
расположением псевдографических символов или курсива);

— загрузка в ОЗУ принтера спроектированных пользователем
шрифтов и работа с ОЗУ принтера (именно в этой группе команд,
имеются наибольшие различия между разными моделями);

— управление принтером в режиме точечной графики;

— установка служебных параметров (размеры отступов,
страницы, шаг табуляции, расстояние между строками) и изменение

— 111 —

характеристик (сброс, включение/отключение датчика конца бумаги,
печать в одну или в две стороны и т. п.).

Ряд характеристик и режимов работы может выбираться как
программно, так и аппаратно с использованием кнопок и клавиш на
лицевой панели и DIP-переключателей. Существуют характеристики,
изменить которые можно только аппаратно (например, возможность
загрузки шрифтов или размер используемого ОЗУ).

— 112 —

E11.Последовательный интерфейс RS-232F

E11.1. Общие сведенияF

В сотав IBM PC могут входить до четырех последовательных
интерфейсов, работающих в стандарте RS-232 (отечественный аналог
— стык С2) и именуемых СОМ1 — СОМ4. Им выделены следующие адреса
в области портов ввода-вывода:

СОМ1: 3F8h-3FFh COM3: 338h-33Fh
COM2: 278h-2FFh COM4: 238h-23Fh

(интерфейсы СОМ3 и СОМ4 поддерживаются только в моделях PS/2).

Каждый интерфейс связан с определенным уровнем контроллера
прерываний:

СОМ1 вызывает прерывание IRQ4 (Int 0Ch)
COM2 вызывает прерывание IRQ3 (Int 0Bh)
СОМ3 и СОМ4 не имеют стандартных векторов прерываний.

Каждое из устройств RS-232 представляет собой контроллер
8250, оснащенный 25- или 9- штырьковым разъемом на задней стенке
корпуса ПЭВМ. Этот разъем может использоваться для подключения
мыши, графопостроителя или организации связи между ПЭВМ.
Контакты стыка RS-232 имеют следующие наименования

ЪДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДВДДДДДДДДї
іНазваниеі Имя цепиіНомер контактаі Назначение іНаправ- і
ісигнала ГДДДВДДДДДЕДДДДДВДДДДДДДДґ іление і
і іEIAіCCITTі9-шт.і 25-шт. і і і
ГДДДДДДДДЕДДДЕДДДДДЕДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
і DCD іCF і 109 і 1 і 8 іСвязь модемов іВ ПЭВМ і
і і і і і іустановлена і і
і RX іBB і 104 і 2 і 3 іПринимаемые данные іВ ПЭВМ і
і TX іBA і 103 і 3 і 2 іПередаваемые данныеіИз ПЭВМ і
і DTR іCD і108/2і 4 і 20 іГотовность ПЭВМ к іИз ПЭВМ і
і і і і і іработе і і
і SG іAB і 102 і 5 і 7 іСигнальная земля і ДДДД і
і DSR іCC і 107 і 6 і 6 іГотовность модема кіВ ПЭВМ і
і і і і і іработе і і
і RTS іCA і 105 і 7 і 4 іЗапрос на передачу іИз ПЭВМ і
і CTS іCB і 106 і 8 і 5 іГотовность модема кіВ ПЭВМ і
і і і і і і к передачи і і
і RI іCE і 125 і 9 і 22 іИндикатор вызова іВ ПЭВМ і
і FG іAA і 101 і ДД і 1 іЗащитная земля і ДДДД і
АДДДДДДДДБДДДБДДДДДБДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДБДДДДДДДДЩ

Контроллер стыка RS-232 является полностью программируемым
устройством; вы можете задать следующие параметры обмена:
количество битов данных и стоп-битов, вид четности и скорость
обмена в бодах (бит/с).

— 113 —

E11.2. Описание портовF

Ниже описаны порты ввода-вывода для СОМ1, имеющего базовый
адрес 3F8h. Обратите внимание, что порты 3F8h и 3F9h имеют
разное назначение в зависимости от бита 7 порта 3F8h (т. н. бит
DLAB — Divisor Latch Access Bit).

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
3F8h Запись Регистр передатчика — сюда засылается байт для
передачи
Чтение Регистр приемника — отсюда извлекается принятый
байт
Запись Если DLAB=1, то сюда засылается младший байт
скорости обмена (см. порт 3F9h)

3F9h Запись Если DLAB=1, то сюда засылается старший байт
скорости обмена. Скорость задается значением
делителя, равным 115200/V, где V — скорость
в бодах. Например, для скорости 9600 бод
делитель равен 115200/9600=12=0Ch, поэтому
нужно вывести 0Ch в порт 3F8h и 0 в порт 3F9h.
Запись Регистр управления прерываниями (1 = разрешить
прерывание):

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і0 і0 і0 і 0і і і і і Бит:
АДДБДДБДДБДДБВДБВДБВДБВДЩ ДДДД
і і і АД> 0: прерывание по приему символа
і і АДДДД> 1: прерывание по завершению передачи
і і символа
і АДДДДДДД> 2: прерывание по обрыву линии или
і или ошибке в линии
АДДДДДДДДДД> 3: прерывание по изменению состояния
модема (любой из линий CTS, DSR, RI
и DCD)

3FAh Чтение Регистр идентификации прерывания. Когда
произошло прерывание, здесь содержится причина,
вызвавшая его:

7 6 5 4 3 2 1 0

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 1 і 0 і 0 і 0 і 0 і 0 і 0 і 0 і 1 і
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ

Если ведомый контроллер работает на уровне 4, то его ICW3 будет
таким:

— 28 —

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 1 і 0 і 0 і 0 і 0 і 0 і 1 і 0 і 0 і
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ

Последнее слово инициализации (ICW4) имеет следующий
формат:

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 1 і 0 і 0 і 0 іSFNMі BUFі M/SіAEOIі mPMі
АДДДДБДДДДБДДДДБДДДДБДВДДБДВДДБДВДДБДВДДБДВДДЩ
і і і і і
і і і і АДДД> 1=8088/8086
і і і і 0=8080/8085
і і і АДДДДДДДД> 1=AEOI
і і і 0=EOI
і і АДДДДДДДДДДДДД> 1=ведущий
і і 0=ведомый
і і (только при BUF=1)
і АДДДДДДДДДДДДДДДДДД> 1=режим
і буферизации
АДДДДДДДДДДДДДДДДДДДДДДД> 1=специальный
вложенный режим

Бит 0 (mPM) определяет, с каким микропроцессором работает
ПКП (0 — 8080/8085, 1 — 8086/8088).

Бит 1 (AEOI), равный 1, задает режим автоматического
завершения обработки прерывания, описанный выше. Если этот бит
равен 0, действует обычное соглашение: процедура обработки
аппаратного прерывания должна сама сбрасывать свой бит в ISR.

Бит 2 (M/S) игнорируется, если бит 3 (BUF) = 0. При наличии
одного контроллера и BUF = 1 устанавливается в 1. При наличии
каскада должен быть равен 1 только для ведущего контроллера.

Бит 4 (SFNM) устанавливает специальный вложенный режим,
применяемый при каскадировании для определения приоритетов
запросов от разных контроллеров (Special Fully Nested Mode).

После инициализации ПКП готов к работе в заданном режиме.
Для изменения режимов работы, задаваемых при инициализации
требуется переинициализировать его заново.

В процессе работы с ПКП Вы можете без переинициализации:

— маскировать и размаскировать аппаратные прерывания;
— изменять приоритеты уровней;
— издавать команду завершения обработки аппаратного пре-
рывания;
— устанавливать/сбрасывать режим специальной маски;
— переводить контроллер в режим опроса и считывать
состояние регистров ISR и IRR; для этого Вам потребуется вывести
в порты ПКП одно из трех слов рабочих приказов OCW1 — OCW3.

— 29 —

Формат первого слова рабочих приказов OCW1:

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 1 і M7 і M6 і M5 і M4 і M3 і M2 і M1 і M0 і
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ

Единичное значение одного из битов М0 — М7 означает, что
прерывания соответствующего уровня (IR0 — IR7) маскируются и не
будут обрабатываться контроллером.

Второе слово рабочих приказов (OCW2) предназначено для
вывода команды завершения обработки аппаратного прерывания
(EOI), циклического сдвига и явного изменения приоритетов
уровней. Назначение битов OCW2 следующее:

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 0 і R і SL і EOIі 0 і 0 і L2 і L1 і L0 і
АДДДДБДВДДБДВДДБДВДДБДДДДБДДДДБДВДДБДВДДБДВДДЩ
і і і і і АДД> Эти 3 бита опреде-
і і і і АДДДДДДД> ляют номер уровня
і і і АДДДДДДДДДДДД> прервания, если он
і і і требуется в команде.
і і і

і і і
і і АДДДДДДДДДДДДДДДДДДДДДДДДДДД> 1-команда завер-
v v шения обработки
ЪДДДДВДДДДї аппаратного
і 0 і 0 і Используется вместе с EOI=1 прерывания
ГДДДДЕДДДДґ
і 0 і 1 і Специфицированный EOI (сбрасывает бит, определя-
ГДДДДЕДДДДґ емый полями L0 — L2 в ISR)
і 1 і 0 і Циклический сдвиг приоритетов влево на одну
ГДДДДЕДДДДґ позицию
і 1 і 1 і Назначение низшего приоритета уровню, определяе-
АДДДДБДДДДЩ мому полями L0 — L2

Как уже говорилось, процедура обработки аппаратного
прерывания должна перед своим завершением очистить свой бит в
ISR выводом команды завершения обработки прерывания (End Of
Interrupt, EOI). Существует два варианта команды EOI: обычный и
специфицированный EOI. Обычный EOI очищает бит в ISR, соот-
ветствующий прерыванию с максимальным приоритетом. Специфи-
цированный EOI (R=0, SL=1, EOI=1, L0 — L2 равно номеру уровня
прерывания) очищает в ISR бит, соответствующий прерыванию с
номером, указанным в L0 — L2 независимо от его приоритета.
Команды с битом R=1 позволяют изменить приоритеты уровней.
Циклический сдвиг приоритетов сдвигает приоритеты влево на
единицу, при этом, если после обычного распределения
приоритетов, издать команду циклического сдвига, уровень 0
получит низший приоритет, уровень 1 — наивысший, уровень 2 —
следующий за ним и т.д. Команда явного назначения низшего
приоритета одному из уровней изменяет приоритеты остальных
уровней циклически. Таким образом, если Вы зададите низший

— 30 —

приоритет уровню 5, то уровень 6 получит наивысший.

Третье слово рабочих приказов OCW3 позволяет установить и
отменить режим специальной маски, перевести контроллер в режим
опроса и прочитать содержимое IRR и ISR. Назначение битов OCW3
приведено на рисунке

A0 7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і 0 і 0 іESMMі SMMі 0 і 1 і P і RR і RISі
АДДДДБДДДДБДВДДБДВДДБДДДДБДДДДБДВДДБДДВДБДВДДЩ
ЪДДДДДДДДДЩ і і і і
і ЪДДДДДДДДДДЩ АДВДДДЕДДДЕДД> 1-режим опроса
v v v v v
ЪДДДВДДДї ЪДДДВДДДВДДДї
і 1 і 0 і-Отменить режим і 0 і 1 і 0 і Чтение IRR
ГДДДЕДДДґ специальной маски ГДДДЕДДДЕДДДґ
і 1 і 1 і-Установить режим і 0 і 1 і 1 і Чтение ISR
АДДДБДДДЩ специальной маски АДДДБДДДБДДДЩ

Единичное значение бита Р (бит опроса, Polling Bit)
переводит контроллер в режим опроса. Если после этого считать
данные из порта с четным адресом, в регистр AL загрузится байт
следующего содержания:

7 6 5 4 3 2 1 0
ЪДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДї
і I і 0 і 0 і 0 і 0 і L2 і L1 і L0 і
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ

Если I = 1, значит имеются запросы на прерывания и тогда L0
— L2 — это номер уровня с наивысшим приоритетом, по которому
имеется запрос на прерывание.

Если P=0, Вы можете считать информацию из ISR или IRR. Для
этого необходимо издать команду чтения ISR или IRR (см. рисунок
выше) и затем считать значение из порта с нечетным адресом.

Единичное значение бита ESMM позволяет в зависимости от
значения бита SMM установить или отменить режим специальной
маски.

— 31 —

E4. Таймер и генерация звукаF

E4.1. Программируемый таймер 8253F

Для задания временных интервалов и формирования сигналов с
различными временными параметрами в IBM PC/XT применяется
программируемый таймер 8253 (отечественный аналог КР580ВН53), в
AT — 8254. С точки зрения программиста они идентичны. В состав
таймера входят: буфер шины данных, схема управления
вводом-выводом и три независимых канала, каждый из которых
содержит регистр режима, схему управления каналом, буфер и
16-разрядный счетчик.

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

-Режим 0- (прерывание терминального счета). После записи
управляющего слова в регистр режима канала на выходе ОUT
устанавливается напряжение низкого уровня; загрузка счетчика не

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

mov bl,7
sub bl,cl
mov cl,bl ; CL = номер бита в байте
xor bl,bl ; накопитель цвета
mov ah,3 ; счетчик битовых плоскостей
mov al,4 ; R4 = регистр выбора плоскости
mov dx,3CEh ; графический контроллер
Read_Plane:
out dx,ax ; выбираем плоскость AH
mov bh,es:[di] ; читать байт
and bh,ch ; выбрать бит
shr bh,cl ; сдвинуть цвет в бит 0
shl bl,1 ; сдвинуть выбранные цвета
or bl,bh ; и добавить считанный
dec ah ; следующая плоскость
jge Read_Plane ; повторить для всех плоскостей
mov al,bl
xor ah,ah ; AX = цвет пикселя
pop es
pop dx
pop cx
pop bx
pop ax
ret
Get_Pixel endp

— 71 —

E7.7. Графический видеомассив VGAF

Адаптер VGA (Video Graphics Array) представляет собой даль-
нейшее развитие EGA. В основном он полностью совместим с
адаптером EGA, поэтому мы приведем только его основные отличия.

1. Если EGA-дисплеи имеют цифровой вход, то VGA — это
дисплей с аналоговым входом. Поэтому при формировании цвета
пикселя из битовых плоскостей цвет слагается из трех основных
цветов (красного, зеленого и синего), интенсивность каждого из
которых может плавно варьироваться от нуля до максимального
значения.

2. VGA имеет большее разрешение, чем EGA, и предоставляет
пользователю три дополнительных режима:

640 x 480, 2 цвета
640 x 480, 16 цветов
320 x 200, 256 цветов

В режимах 640 х 480 имеется одна графическая страница
размером 153600 байт. В режиме 320 х 200 с 256 цветами
используется несколько иной метод формирования цвета пикселя,
чем в других режимах; за счет этого видеопамять разбивается на 4
страницы размером по 16К. Этот режим возможен только на
аналоговых дисплеях или дисплеях с переменной частотой.

3. Частота генератора пикселей VGA принимает значения 25
или 28 Мгц (в отличие от 14 и 16 Мгц у EGA).

4. VGA имеет дополнительный порт ввода 3CCh, позволяющий
считать содержимое многоцелевого регистра (см. описание порта
3C2h в п. 7.6). Графические позиции 3CAh и 3CCh, имеющиеся в
EGA, у VGA отсутствуют.

— 72 —

E8. Контроллер накопителей на гибких дискахF

E8.1. Основные сведения о контроллереF

Управление гибкими дисками в PC-подобных ПЭВМ
осуществляется микросхемой 8272А фирмы Intel, выполняющей
функции контроллера гибких дисков (Floppy Disk Controller, FDC).
Информация на дискете хранится на дорожках, дорожки разбиты на
сектора. В зависимости от типа дисковода число дорожек на одной
стороне дискеты может быть равно 40 или 80, число секторов на
дорожке колеблется от 8 до 26. Кроме того существуют дисководы,
имеющие одну головку чтения/записи (при этом вторая сторона
дискеты не используется). Контроллер управляет дисководами для
дискет диаметром 8, 5.25 и 3.5 дюйма, поддерживает запись на
дискету методами ЧМ и МЧМ, программируемую длину секторов (128,
256, 512 или 1024 байта), мультисекторные и мультидорожечные
операции обмена с дисками, операции поиска. Одновременно к
одному контроллеру может быть подключено до четырех дисководов
любого из поддерживаемых типов. Обмен с диском может
осуществляться как с использованием ПДП, так и без него. В
последнем случае используются 2 метода: опрос состояния
контроллера через регистры или использование аппаратных
прерывания контроллера. FDC генерирует аппаратные прерывания
уровня 6 (IRQ6), связанные с вектором прерываний 0Eh. Управление
контроллером и накопителями осуществляется через 3 порта

ввода-вывода.

— 73 —

E8.2. Порты контроллера накопителей на гибких дискахF

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

Назначение портов ввода-вывода контроллера гибких дисков
приведено в таблице.

ЪДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Порт і Режим і Назначение і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і і і
і 3F2h і запись і Передача команд по управлению режимом работыі
і і і контроллера и накопителей і
і і і і
і 3F4h і чтение і Чтение регистра состояния контроллера і
і і і і
і 3F5h і запись і Передача команд по управлению накопителями і
і і і і
і 3F5h і чтение і Чтение данных с диска в режиме работы і
і і і без ПДП і
і і і і
і 3F5h і запись і Запись данных на диск в режиме работы і
і і і без ПДП і
і і і і
і 3F5h і чтение і Чтение результатов выполнения команды во і
і і і всех режимах і
АДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

Порт 3F2h.

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і і і і Биты:
АДВДБДВДБДВДБДВДБДВДБДВДБДВДБДВДЩ ДДДДД
і і і і і і АДДДБД> 0-1: выбор накопителя:
і і і і і і 00-первый
і і і і і і 01-второй
і і і і і і 10-третий
і і і і і і 11-четвертый
і і і і і АДДДДДДДДД> 2: 0=сброс контроллера,
і і і і і 1=разблокировать контроллер
і і і і АДДДДДДДДДДДДД> 3: 1=разрешить работу с ПДП и
і і і і прерывания контроллера
АДДДБДДДБДДДБДДДДДДДДДДДДДДДДД> 4-7: включить мотор:
0001 — первый накопитель
0010 — второй
0100 — третий
1000 — четвертый

— 74 —

На АТ-подобных ПЭВМ обычно допускается не 4, а только 2
накопителя, вследствии чего комбинации, использующие третий и
четвертый накопители, игнорируются. Бит 2, равный 0, прекращает
выполнение текущей команды в момент вывода в порт. Если команда
не завершилась, ее выполнение прерывается. Если не были считаны
результаты выполнения команды, они пропадают. Если не закончился
ввод команды, он пропадает и должен быть начат заново. В любом
случае продолжение работы возможно только после установки этого
бита обратно в 1.

Порт 3F4h.
Через этот порт осуществляется чтение регистра основного
состояния FDC.

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і і і і і і і і Биты:
АДВДБДВДБДВДБДВДБДВДБДВДБДВДБДВДЩ ДДДДД
і і і і АДДДБДДДБДДДБД> 0-3: накопитель занят в режиме
і і і і поиска:
і і і і 0001-первый, 0010-второй
і і і і 0100-третий, 1000-четвертый
і і і АДДДДДДДДДДДДДДДДД> 4: 0=контроллер свободен,
і і і 1=контроллер занят выполне-
і і і нием команды чтения или
і і і записи
і і АДДДДДДДДДДДДДДДДДДДДД> 5: режим работы контроллера:
і і 0=с использованием ПДП,
і і 1=без ПДП
і АДДДДДДДДДДДДДДДДДДДДДДДДД> 6: направление обмена:
і 0=процессор —> контроллер
і 1=контроллер —> процессор
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДД> 7: готовность к обмену:
0=не готов, 1=готов

Бит 7, равный 1, говорит о том, что контроллер при вводе

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

ЪДДВДДВДДВДДВДДВДДВДДВДДї
і0 і0 і0 і 0і 0і і і Бит:
АДДБДДБДДБДДБДДБДДЕДДБВДЩ ДДДД
і і
і АДД> 0: 0=есть отложенные прерывания
АДДДДДД> 1-2: причина прерывания:
11=ошибка или обрыв линии;
сбрасывается чтением регистра
состояния линии (порт 3FDh)
10=принят символ; сбрасывается
чтением приемника (порт 3F8h)
01=передан символ; сбрасывается

— 114 —

записью символа в регистр
передатчика (порт 3F8h)
00=изменение состояния модема
(линий CTS, DSR, RI или DCD);
сбрасывается чтением регистра
состояния модема (порт 3FEh)

3FBh Чтение/ Регистр управления линией:
Запись

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і Биты:
АВДБВДБВДБДДЕДДБВДБДДЕДДЩ ДДДДД
і і і і і і
і і і і і АДДД> 0-1: число битов данных:
і і і і і 00=5, 01=6, 10=6, 11=8
і і і і АДДДДДДДД> 2: число стоп-битов:
і і і і 0=1, 1=1.5 при 5 битах данных
і і і і и 2 в противном случае
і і і АДДДДДДДДДДДД> 3-4: тип четности:
і і і X0=нет,
і і і 01=нечетная,
і і і 11=четная
і і АДДДДДДДДДДДДДДДДД> 5: постоянная четность
і і 0=отмена постоянной четности
і і 1=постоянный бит четности,
і і зависит от битов 3-4:
і і биты 3-4=01 — бит четности
і і всегда 1
і і биты 3-4=11 — бит четности
і і всегда 0
і і биты 3-4=X0 — без бита четности
і АДДДДДДДДДДДДДДДДДДДД> 6: 1=имитировать обрыв линии
і (посылка нулей)
АДДДДДДДДДДДДДДДДДДДДДДД> 7: бит DLAB:
1=порты 3F8h и 3F9h для загрузки
скорости обмена;
0=порты 3F8h и 3F9h в обычном
режиме

3FCh Запись Регистр управления модемом

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і 0і 0і 0і і і і і і Бит:
АДДБДДБДДБВДБВДБВДБВДБВДЩ ДДД
і і і і АД> 0: 1=установить выход DTR
і і і АДДДД> 1: 1=установить выход RTS
і і АДДДДДДД> 2: 1=установить OUT1 (не используется)
і АДДДДДДДДДД> 3: 1=установить OUT2 (разрешить преры-
і вания от RS-232)
АДДДДДДДДДДДДД> 4: 1=диагностический режим (посылать
выход на вход стыка).

— 115 —

3FDh Чтение Регистр состояния линии. Биты 1-4 вызывают
прерывания по ошибке, если оно разрешено:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і 0і і і і і і і і Бит:
АДДБВДБВДБВДБВДБВДБВДБВДЩ ДДД
і і і і і і АД> 0:1=данные приняты. Сбрасывается
і і і і і і чтением приемника
і і і і і АДДДД> 1:1=потеря предыдущего символа
і і і і АДДДДДДД> 2:1=ошибка четности
і і і АДДДДДДДДДД> 3:1=неверный стоп-бит
і і АДДДДДДДДДДДДД> 4:1=обнаружен обрыв линии
і АДДДДДДДДДДДДДДДД> 5:1=сдвиговый регистр передатчика пуст.
і Можно передавать след. символ
АДДДДДДДДДДДДДДДДДДД> 6:1=регистр передатчика пуст. Нет
обрабатываемых данных.

3FEh Чтение Регистр состояния модема. Биты 0-3 вызывают
прерываниe по изменению состояния модема,

если оно разрешено:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і і Бит:
АВДБВДБВДБВДБВДБВДБВДБВДЩ ДДД
і і і і і і і і
і і і і і і і АДД> 0:1=изменилось состояние линии CTS
і і і і і і АДДДДД> 1:1=изменилось состояние линии DSR
і і і і і АДДДДДДДД> 2:1=изменилось состояние линии RI
і і і і АДДДДДДДДДДД> 3:1=изменилось состояние линии DCD
і і і АДДДДДДДДДДДДДД> 4: состояние линии CTS
і і АДДДДДДДДДДДДДДДДД> 5: состояние линии DSR
і АДДДДДДДДДДДДДДДДДДДД> 6: состояние линии RI
АДДДДДДДДДДДДДДДДДДДДДДД> 7: состояние линии DCD

Примечание: «Изменилось состояние линии…» означает, что
данная линия стыка RS-232 изменила свое состояние по сравнению с
последним чтением этого регистра.

— 116 —

E11.3. Порядок инициализации 8250F

Для подготовки контроллера 8250 к работе необходимо
выполнить следующие шаги.

1. Установить бит DLAB порта 3FBh и заслать делитель,
задающий скорость обмена, в порты 3F8h и 3F9h.

2. Инициализировать регистр управления линией (порт 3FBh);
при этом сбросить бит DLAB.

3. Инициализировать регистр управления модемом (порт 3FCh).

4. Инициализировать регистр управления прерываниями (порт
3F9h) и, если прерывания разрешены, установить адрес программы
обработки прерываний от стыка RS-232.

В качестве примера приведем набор подпрограмм, обеспечива-
ющих обмен через порт COM1 в дуплексном режиме со скоростью 1200
бод.

title RS232
_DATA segment para public
Buf_Size equ 1024 ; размер буфера

Source db Buf_Size+2 dup (0) ; буфер приема символов
Src_ptr dw Source ; указатель позиции в буфере
Count dw 0 ; количество символов в буфере
Ser_ip dw 0 ; старый адрес Int 0Ch
Ser_cs dw 0
Save_ds dw 0 ; служебные переменные
Int_sts db 0
Overrun db 0
_DATA ends

_TEXT segment para public
assume cs:_TEXT, ds:_DATA
public Ser_Ini:near, Ser_Rst:near
public Get_Chr:near, Out_Chr:near
;ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
;є Подпрограмма инициализации стыка COM1. є
;ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
Ser_Ini proc near
push ax ; сохранить регистры
push dx
push bx
push es
in al,21h ; IMR 1-го контролера прерываний
or al,10h ; запретить прерывание IRQ4 от COM1
out 21h,al
mov al,0Ch
mov ah,35h
int 21h ; взять вектор Int 0Ch в es:bx
mov Ser_ip,bx ; и сохранить его
mov Ser_cs,es

— 117 —

mov al,0Ch
mov dx,offset Ser_int
push ds
mov bx,cs
mov ds,bx
mov ah,25h
int 21h ; установить Int 0Ch = ds:dx
pop ds
pop es
pop bx
cli ; запретить прерывания
in al,21h ; IMR 1-го контроллера прерываний
and al,not 10h
out 21h,al ; разрешить прерывания от COM1
mov dx,3FBh ; регистр управления линией
in al,dx
or al,80h ; установить бит DLAB
out dx,al

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

изменяет это состояние. Затем начинается декремент счетчика
(последовательное вычитание из него единицы). В момент, когда
счетчик обнулится, на выходе OUT установливается напряжение
высокого уровня и сохраняется до загрузки счетчика новым
значением. Счет возможен только при наличие сигнала высокого
уровня на входе GATE. Низкий уровень этого сигнала или
ниспадающий фронт запрещают счет.

Перезагрузка счетчика во время приводит к следующему:
загрузка младшего байта останавливает текущий счет, загрузка
старшего байта запускает новый цикл счета. Минимально допустимое
значение счетчика равно 2.

-Режим 1- (ждущий мультивибратор). На выходе OUT формируется
отрицательный импульс длительностью t=n*T, где n — число,
загруженное в счетчик, T — период тактовых импульсов. Низкий
уровень на выходе OUT устанавливается со следующего такта после
подачи на вход GATE сигнала высокого уровня.

Загрузка в счетчик нового числа не влияет на длительность
текущего импульса, а учитывается при следующем запуске.
Перезапуск счетчика производится нарастающим фронтом входа GATE
(без перезагрузки счетчика). Минимальное допустимое n=1.

-Режим 2- (генератор частоты). Каждый раз после достижения
счетчиком нуля на выходе OUT появляется отрицательный импульс с
длительностью один такт. Перезагрузка счетчика сказывается
только после перезапуска счетчика. При исчезновении сигнала
высокого уровня на входе GATE прекращается счет и на выход OUT
подается напряжение высокого уровня. Перезапуск счетчика
происходит при наличии на входе GATE сигнала высокого уровня.

-Режим 3- (генератор меандра). Аналогичен режиму 2, но
положительный уровень выходного сигнала занимает первый

— 32 —

полупериод, а отрицательный — второй полупериод. Точнее, если n
(начальное значение счетчика) четно, то длительность
положительного и отрицательного полупериодов равна n*T/2; если
же n нечетно — то (n+1)*T/2 и (n-1)*Т/2 соотвественно. Низкй
уровень сигнала на входе GATE запрещает счет, на выходе OUT
устанавливается сигнал высокого уровня. Высокий уровень GATE
разрешает счет, а нарастание его запускает счетчик начального
состояния. Отметим, что n=3 в этом режиме недопустимо.

-Режим 4- (счетчик событий). По окончании отсчета числа,
загруженного в счетчик, на выходе OUT формируется отрицательный
импульс длительностью один такт. Запись в счетчик во время счета
младшего байта не влияет на текущий счет, а запись старшего
байта перезапускает счетчик. Низкий уровень входа GATE запрещает
счет, высокий — разрешает. Минимальное допустимое значение
счетчика равно 1.

-Режим 5- (счетчик событий с автозагрузкой). Отличие от
режима 4 состоит в том, что каждое нарастание сигнала на входе
GATE перезапускает счетчик. Перезагрузка счетчика не влияет на
текущий цикл, однако следующий цикл определяется вновь
занесенным числом.

Временные диаграммы режимов таймера приведены на следующем
рисунке:

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=5 ЪДДДДДДДДДДДДДДДДїn=4 ЪДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДД
GATE ГДДДДДДДЩ АДДДЩ
ГДДДДДї ЪДДДДДДДДДї ЪДД
OUT і АДДДДДДДДДДДЩ АДДДДДДДДДДДДДДДЩ
і
n і 5 4 3 2 1 0 4 3 2 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 0

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДї ЪДї ЪДДДДДДДДДДДДД
GATE ГДДДДДДДДДЩ АДДДДЩ АДДДДЩ
ГДДДДДДДДДДДї ЪДДДДДДДї ЪДД
OUT і АДДДДДДДЩ АДДДДДДДДДДДДДДДЩ
і
n і 4 3 2 1 0 5 4 3 5 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 1

— 33 —

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДїn=3 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДДД
GATE ГДДДДДДЩ АДДДДЩ
ГДДДДДДДДДДДДДї ЪДДДДї ЪДДДДДї ЪДДДДДДДДДДї ЪДД
OUT і АДЩ АДЩ АДЩ АДЩ
і
n і 4 3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 2

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДД
GATE ГДДДДДЩ АДДДЩ
ГДДДДДДДДДДї ЪДДДДДї ЪДДДДДї ЪДДДДДДДД
OUT і АДДДДЩ АДДДДЩ АДДДДЩ
і
n і 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 5 5 4
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 3

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДД
GATE і АДДДЩ
ГДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪД
OUT і АДЩ АДЩ
і
n і 4 3 2 1 0 5 5 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 4

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ
і ЪДДДДДДДДї ЪДї ЪДДДДДДДДДДДДДДДДД
GATE ГДДДДДДДДДЩ АДДДЩ АДДДЩ
ГДДДДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДДДДДї ЪДДДДДД
OUT і АДЩ АДЩ
і
n і 4 3 2 1 0 4 3 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 5

— 34 —

В IBM PC таймер имеет базовый адрес 40h и следующие
программируемые регистры:

Адрес Операция Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
40h запись Загрузка счетчика канала 0
чтение Чтение счетчика канала 0

41h запись Загрузка счетчика канала 1
чтение Чтение счетчика канала 1

42h запись Загрузка счетчика канала 2
чтение Чтение счетчика канала 2

43h запись Запись управляющего слова
в регистр режима канала
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Управляющее слово имеет следующий формат:

7 6 5 4 3 2 1 0
ЪДВДДВДДВДДВДДВДДВДДВДДї
і і і і і Биты Маска
АДЕДДБДДЕДДБДДБВДБДДБДВЩ ДДДД ДДДДДДД
і і і А> 0: 0 = двоичный код, а & 1
і і і 1 = двоично-десятичный код
і і АДДДДДДД> 1-3: режим работы канала: а & 0Eh
і і 000 — режим 0
і і 001 — режим 1
і і X10 — режим 2
і і X11 — режим 3
і і 100 — режим 4
і і 101 — режим 5
і АДДДДДДДДДДДДДД> 4-5: вид загрузки счетчика: а & 30h
і 00 — «защелкивание»
і (биты 0-3 безразличны)
і 01 — только младший байт
і 10 — только старший байт
і 00 — младший байт, затем старший
АДДДДДДДДДДДДДДДДДДДД> 6-7: номер канала: a & C0h
00 — канал 0
01 — канал 1

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36