Самострой
- otyptm во все» *
отделениях свяли
А
рлины
*
И РОССИИ
подписные индексы:
Украина -08219
Россия-84452
!
МОЙ КОМПЬЮТЕР
Port[378]:=data
Л истинг
1
Ш
*
Л истинг
2
самый правый (нулевой бит) отвечает за второй контакт, вто-
рой справа (первый бит) — за третий и т.д. Наконец, самый
левый бит (седьмой) отвечает за девятый контакт. Это видно
из таблицы.
Каким же образом биты соответствуют контактам? Все
очень просто! Если определенный бит равен 1, то на кон-
такте, которому он соответствует, появляется напряжение
~+5 В. Если же определенный бит равен 0, то на контакте,
котором у он соответствует, появляется напряжение =0
(0.5-0.6 В).
Разберемся со всем этим на примерах:
Пример №1
Пусть нам нужно включить только третий контакт — тогда,
значит, область памяти по адресу 378h
должна выглядеть
так: 00000010, так как первый бит соответствует третьему
контакту (см. таблицу). Это обычное двоичное число, кото-
рое легко перевести в шестнадцатеричное методом тетрад
или на калькуляторе:
0 0 0 0 0 0 1 0 b = 2 h = 2 d
где буква в конце обозначает систему счисления: b — дво-
ичная, h — шестнадцатеричная, d — десятичная.
Таким образом, нужное нам число — 2.
Пример Ns2
Усложним задачу. Пусть необходимо запитать несколько
контактов, например: 2-й, 5-й и 8-й. По табли-
це ищем, каким битам они соответствуют, и
ставим там единицы: 2-й контакт соответству-
ет нулевому биту, 5-й — третьему биту, 8-й —
шестому биту. Таким образом, у нас получа-
ется вот такое двоичное число — 0 1 0 0 1 0 0 1 b ,
которое равно 49h.
Теперь мы научились правильно формировать
запрос, осталось только послать этот запрос в
нужное место © . Таюке неплохо было бы нау-
читься считывать значение с порта Как это все
сделать? Существует несколько решений.
Решение номер раз
Самое просто решение — использовать стан-
дартную функцию/процедуру в языке програм-
мирования. Например, в Паскале посылка зна-
чения в порт будет выглядеть так, как показано
в листинге 1. Где
d a ta
— это то число, кото-
рое мы будем посылоть в десятичном формате.
А считывание значения будет выглядеть, как
в листинге 2, где
d a ta
— это переменная, в
которую запишется значение DR в десятичном
формате.
Решение номер
два-с ©
А что делать, если стандартной функции нет?
Ну, тогда для посылки значения в порт делаем
в коде программы вставку на Ассемблере. Как
выглядит такая вставка, показано в листинге 3.
Здесь
d a ta
— это то число, которое мы бу-
дем посылать в регистр. Это число может быть
в любой системе счисления, нужно только ука-
зать, в какой, — буковку в конце поставить со-
ответственно
Ь, d
или
h.
А чтобы считывать значения с порта, встав-
ляем код из листинга
4,
где
d a ta
— перемен-
ная, в которую будем считывать значение.
Только в последнем случое нужно быть пре-
дельно аккуратным, так как вы измените зна-
чения регистров. А, например, Делфи их по-
том не восстанавливает и может — и даже не
может, а точно произойдет сбой программы.
Поэтому сначала давайте запомним изначаль-
ные значения используемых регистров, а по-
том их восстановим. В листинге 5 дана встав-
M OV DX, 0378Н
MOV AL, data
OUT DX, AL
MOV DX, 0378H
IN AL,DX
MOV data, AL
В . Листинг 3
B k Листинг 4
ка для записи значения в порт, а в листинге 6 — вставка для
считывания значения из порта. Здесь d a ta
— переменная,
которая заносится в порт, либо в которую заносится значе-
ния из порта. Команды
p u s h
и p o p ,
соответственно, зано-
сят значения регистров в стек и считывают их оттуда.
PUSH DX
PUSH АХ
MOV DX, 0378H
IN AL,DX
MOV data, AL
POP A X
POP DX
PUSH DX
PUSH AX
MOV DX, 0378H
MOV AL, data
OUT DX, AL
POP A X
POP DX
Листинг 5
Листинг 6
data :-Port[378]
ОН ЧИТАЕТ
реальностью^
шантастиии”
Л У Ч Ш И Й Ф А H I \C I И Ч » ( M i l l Ж > Г И Д I Е В Г О П Ы 2 0 0 4
ве д ущ и е а в т о р ы
л у ч ш и е п р о и з в е д е н и я
в е д и н с т в е н н о м
V
ф а н т а с т и ч е с к о м
Л
л и т е р а т у р н о м Ж ур н а л е
~
У к р а “ ИВ
о п е р т Ш ПУЛИ-
-г*т
,
.
,
* '
А
-*.я
(уолЪшпс удовольствие
п‘уб-4иковаты ч в “Реальности (фантастики“
предыдущая страница 25 Мой Компьютер 2004 43 читать онлайн следующая страница 27 Мой Компьютер 2004 43 читать онлайн Домой Выключить/включить текст