m
Mov al, ba
And al, 0100 0000b
Mob b2, al
end
2. Інверсія віконується на Рівні Асемблер () або Нарівні Паскалю. br/>
neg al
3. Зсув. У асемблері Зсув, у Паскалі Зсув на n бітів вправо означає ділення на 2 n .
У Паскалі є такоже наступні відряд роботи з портами:
Adres: = $ 00378;
Port [Adres]: = 255;// Запис 1111 1111
B1: = port [Adres +1];// Зчітування
Стробування
ШВИДКІСТЬ обміну через порт принтера поклади від швідкодії комп'ютера. Тому для зовнішніх прістроїв нізької и середньої швідкодії нужно Забезпечувати затримки сігналів (Наприклад стробу) на певні проміжкі годині (затримка 1 мс: в Паскалі: Delay (1), в - Delphi: Sleep (1)). p> У процесі початкових тестування POST BIOS перевіряє наявність паралельних портів LPT1-LPT4 по адресах 3BCh, 378h, 278h и поміщає базові адреси виявленості портів в пам'ять за адресами: 0:0408 h, 040Ah, 040Ch, 040Eh. После Виявлення псуй ініціалізуються - на порт подається сигнал Init и в порт запісуються нульові значення.
Програмне переривані BIOS int 17h Забезпечує наступні Функції ПІДТРИМКИ LPT-порту:
00h - вивід символу з регістру AL, строб формується после готовності принтера
01h - ініціалізація принтера
02h - опитування стану принтера
При виклику INT 17h номер Функції задається в регістрі AH, а номер порту - у регістрі DX (0 - LPT1, 1 - LPT2 ..). Дані з порту повертаються у Регистр AH. p> Використання переривані: LPT1 - IRQ7, LPT2 - IRQ5. br/>
4. Проектування апаратури для спряження з Centronics
Для Centronics характерні Такі Особливості:
1) обмін Даними є програмно-керованих (обробка переривані и прямий доступ до пам'яті неможліві).
2) Невісока ШВИДКІСТЬ обміну
3) Обмеження на Довжину Лінії зв'язку (2м)
4) Немає шини живлення.
Розглянемо Підключення до комп'ютера найпростішого пристрою - набору світло діодів и кнопок.
Для Керування Використана сигналі Strobe - стробування записами даніх та Init - очистка регістру. p> После світло діода сигнал з напругою (0, +5 В) i Струмило 10мА можна податі на підсилювач напруги та Струму и далі на виконавчий Пристрій. Для безпосередно Керування виконавчими прилаштувався Використовують тиристори, оптопари, реле.
В
Ріс.9.2. Під'єднання до комп'ютера зовнішнього пристрою через Centronics
Для Збільшення розрядності вхідніх даніх Використовують мультиплекс ори (вхід - 16 біт, вихід - 4), а для Збільшення розрядності вихідних даніх - Демультиплексор (вхід - 4 біт, вихід - 16 біт). Для побудова мультіплексорів Використовують буфер з трьома станами (0В, 5В, відключено), Наприклад К155ЛП8.
Для Формування команд - Дешифратор (напр.. К155ІД3: на вхід біті D0-D3, на віході відряд K0-K15). br/>В
Рис. 2. Роз'єм інтерфейсного адаптера Cetronics DB-25S
5. Програмування паралельного порту под Windows NT/2000/XP
Windows працює з портами як з файлами и вімагає точного Дотримання протоколу обміну Даними. Наприклад при передачі даже одного біту на паралельний порт система вімагає такоже відпрацювання сігналів Strobe и Ask (відповідь - підтвердження).
Спочатку порт нужно Відкрити як файл функцією CreateFile, что надається Win32 API i прототип Якої:
HANDLE CreateFile (
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwSharedMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagAndAttributes,
HANDLE hTemplateFile ); Де:
lpFileName - назва порту: COM1, COM2, ..., LPT1, LPT2, ..
вказівнік на рядок з Нульовий символом у кінці (PCHAR), яка візначає Назву об'єкту, что створюється (Файл, канал, поштовий слот, ресурс зв'язку (в даному випадку порти), дисковий пристрій, приставка, або каталог)
dwDesiredAccess - тип доступу до файлу: GENETIC_READ - файл для зчітування, GENETIC_WRITE - файл Для запису, GENETIC_READ | GENETIC_WRITE - файл для зчітування/запису.
dwSharedMode - параметр Спільного доступу до файлу (= 0 - монопольно режим)
lpSecurityAttributes - Атрибут захисту файлу (= Null)
dwCreationDistribution
Визначає поведінку функції якщо об'єкт вже існує і як він буде відкритий в цьому випадку Приймає одне з таких значень:
CREATE_NEW
Створює новий об'єкт (Файл) Видає помилку якщо вказаний об'єкт (файл) вже існує. p> CREATE_ALWAYS
Створює новий об'єкт (Файл) Функція перезаписує існуючий об'єкт (файл)
OPEN_EXISTING
Відкриває об'єкт (файл) Видає помилку якщо вказаний об'єкт (файл) не існує. (Для більш детального дивіться SDK)
<...