Використання інтерфейсу Centronics для керування зовнішніми пристроями

при цьому DR, CR служать для виводу даних з компютера, а SR для вводу (табл.1). Кожному біту (розряду) порту

Використання інтерфейсу Centronics для керування зовнішніми пристроями

Информация

Компьютеры, программирование

Другие материалы по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Реферат

Використання інтерфейсу Centronics для керування зовнішніми пристроями

1. Порядок обміну даними через порт принтера (інтерфейсу Centronics)

 

Для багатьох практичних задач потрібно звязати компютер із зовнішніми пристроями. Без цього неможлива ні автоматизація фізичного експерименту, ні компютерне управління технологічними процесами. Зовнішні пристрої можуть бути як стандартними (принтер), так і нестандартними (пристрої для наукових досліджень, крокові двигуни, роботи-маніпулятори). Основне призначення Centronics (аналог ИРПР-М) це підєднання до компютера принтерів різних типів. Тому розміщення контактів розєму, призначення сигналів та програмні засоби орієнтовані на це застосування. В той же час через Centronics можна керувати й нестандартними зовнішніми пристроями. Перевагами Centronics є стандартність, простота та паралельність (рис.1) та низька ймовірність вивести компютер з ладу (порівняно з ISA). Для звязку компютера із зовнішніми пристроями служать порти. Одні порти служать для вводу даних в компютер, а інші - для виводу. Дані в порт записуються і зчитуються по шині даних D0-D7 (8 біт), а для вибору конкретного порту використовується шина адреси A0-A15 (16 біт).

 

 

 

 

 

 

 

 

 

Кабель (25/DB-25S/ - 36)

Рис.1. Ввід-вивід даних через паралельний порт

Фактично паралельний порт складається з трьох 8-бітних портів/ регіcтрів:

1) DR Data Register, 8 бітний регістр даних (вивід з комп.)

2) SR - Status Register, 5-бітний регістр стану (ввід)

3) CR Control Register , 4-бітний регістр контролю (вивід, але можливо ввід)

при цьому DR, CR служать для виводу даних з компютера, а SR для вводу (табл.1). Кожному біту (розряду) порту принтера фізично відповідає один контакт в розємні. Використовується такі адреси портів принтера: LPT1 ($00378), LPT2 ($00278) і LPT3($003BC). Для більшості компютерів адреси портів принтера (LPT1) в шістнадцятковій системі наступні: DR ($00378); SR ($00379), CR ($0037А), тобто адреса наступного регістра на 1 більша від попереднього, проте адреса першого порта може бути різною. Визначити адресу в BIOS. Логічній одиниці на розряді паралельного порту відповідає напруга +5В, а логічному нулю 0 В. Проте, якщо розряд інверсний, то логічній одиниці відповідає 0 В, а логічному нулю 5В. SR дозволяє зчитувати дані із зовнішніх пристроїв, наприклад цифрові сигнали з різноманітних датчиків. Для SR не використовуються всі розряди, тому розряди вхідних сигналів DI звичайно зчитуються по 4 біти зі зсувом вліво на 3 біти (табл.1). Відповідно після зчитування потрібно програмно зсунути розряди SR7-SR3 вправо на 3 біти (поділити на 8). (рис. DI4-0 SR7-3 D4-0)

 

Таблиця 1. Розряди паралельного порту (піни).

Позначення розрядів (для компютера)Позначення розрядів (для порту принтера)Контакт розєму на компютері Контакт розєму на принтеріВвід (1) / вивід (0);

іінверсіяРозряди вхідних сигналівPort1DR0D0220DR1D1330DR2D2440DR3D3550DR4D4660DR5D5770DR6D6880DR7D7990Port2SR3Error15321DI0SR4Slct13131DI1SR5Pe12121DI2SR6Ask10101DI3SR7Busy11111 / іDI4Port3CR0Strobe110 / iCR1Auto fd14140 / iCR2Init16310CR3Scltin17360 / iЗемляGndGnd18 2516,17,19-30,33

Решту розрядів заземлення.

Немає сигналів живлення як перевага.

Непідєднані контакти високий рівень

Призначення розрядів порту принтера:

Регістр DR

D0-D7 : 8 розрядна шина даних, служить для передачі даних з компютера в принтер.

Регістр SR

Error : Помилка

SLCT : Сигнал готовності принтера

PE : Сигнал закінчення паперу

Ask : Підтвердження принтера про прийом даних

Busy : Сигнал зайнятості принтера

Регістр CR

Strobe : Сигнал стробування даних (дозвіл приймати дані, які вже встановлені на шині та виконувати певні дії; передача даних або підготовка строб (команда на виконання) пасивний стан)

Auto fd : Сигнал переходу на новий рядок

Init : Ініціалізація принтера (очищення його буфера)

SLCT In : Сигнал принтеру про початок передачі даних

 

 

 

 

 

 

Рис.5.1. Діаграма передачі даних

 

В порті принтера використовується ТТЛ-логіка (0 5В), довжина кабелю 1,8м.

 

2. Протоколи та типи паралельного порта

 

Типи паралельного порту

Тип паралельного портуРежим вводуРежим виводу Приміткистандартнийпівбайтовийсуміснийввід 4біт, вивід 8 бітДвонаправленийбайтовийсуміснийввід/вивід по 8 бітВдосконалений (ЕРР Enchanced PP)ЕРР ЕРР ввід/вивід по 8 бітРозширений (ЕСР)ЕСР ЕСРввід/вивід по 8 біт , прямий доступ до памяті

Режими пар порту

РежимНапрямШвидкість, Кбайт/сПівбайтовий (4біт)ввід50байтовийввід50суміснийвивід150ЕРРввід/вивід500-2000ЕСРввід/вивід500-2000

Після 1993 ЕРР/ЕСР

 

Двонаправлений порт 1 (Type1 parallel port), вперше використаний в компютерах PS/2. Дозволяє передачу і прийом через регістр даних. Напрям передачі вказує спеціальний біт регістру управління CR5 (від 0) (=0 вивід, 1 - ввід).

Порт з прямим доступом до памяті (Type 3 DMA parallel port), для PS/2 моделей 57, 90, 95.

Для введення даних звичайно використовується режим півбайтного обміну (4біт Nible Mode) Паралельний порт розміщений на материнській платі або на платі розширення (мультикарті).

Протоколи

1) Стандартний протокол LPT-порта (SPP Standard Parallel Port) однонапрявлений порт, на базі якого програмно реалізується протокол обміну Centronics.

2) протокол порта з розширеними можливотсями (ECP Extended Capability Port).

Протокол SPP / ECP в BIOS.

 

3. Фізичний і електричний інтерфейс

 

Фізичні характеристики передавачів і приймачів сигналів визначає стандарт ІЕЕЕ 1284 (1994 рік).

Вимоги до передавачів:

1) рівні сигналів без навантаження повинні бути в межах від -0,5В до +5,5В.

2) рівні сигналів при струмі навантаження 14 мА повинні бути не нижчі +2,4В для високого рівня (VOH, Volt Out H) і +0,4В для низького рівня (VOL).

3) вихідний опір 50 Ом (+/- 5).

4) Швидкість наростання (спаду) імпульсу у межах 0,05 0,4 В/нс.

Вимоги до приймачів:

1) допустимі пікові значення сигналу від -2,0 до 7 В.

2) поріг спрацьовування 2,0 В для високого рівня (VIH) і 0,8 В для низького рівня (VIL).

3) вхідний струм не більше 20 мА.

4) вхідна ємність не більше 50 пФ.

Стандарт визначає три типи розємів:

А - розєм в компютері (DB-25) / ІЕЕЕ 1284-А

В - на принтері (Centronics-36) / ІЕЕЕ 1284-В

С - малогабаритний розєм (36 контактів)/ ІЕЕЕ 1284-С

Вимоги до кабелів:

1) кожна лінія повинна мати хвильовий опір (імпеданс) 62 Ом( +/- 6 Ом) у частотному діапазоні 4 16 МГц.

2) рівень перехресних перешкод між парами провідників не більше 10%.

3) вита пара (для принтерів НР)

Якщо кабель фольгований і всі сигнальні лінії перевиті, то довжина до 10м (до 2 Мбайт/с).

Хост компютер, що володіє паралельним портом.

Програмне управління портами принтера

Управління портами можливе мовою асемблера, але більш зручно використовувати асемблері вставки на мові високого рівня (Turbo Pascal 7.0). Асемблерний блок може розміщуватися як в тесті основної програми, так і в тексті процедури. Початок асемблерного блоку позначається службовим словом asm, кінець блоку позначається службовим словом end. У такому випадку в асемблерній вставці можна писати безпосереднього арифметичні і логічні команди, команди переходу і вводу-виводу.

Простота програмування доступ до кожного біта.

Розглянемо програму Port.pas, яка повинна записати в порт принтера 1 байт даних, а потім зчитати з порта принтера 1 байт. Процедура Write_Port1(Bout) виконує запис 1 байту в порт, процедура Read_Port2(Bin) зчитує 1 байт з порта.

PROGRAM Port;

USES Crt; CONST Port1=$00378; Port2=$00379; { Адреси портiв } VAR Bin,BOut:byte;

Procedure Write_Port1(BOut:byte);

Begin

asm

mov dx,port1 { Адреса порта } mov al,bOut

out dx,al { вивід даних bOut в порт }

end;

End;

Procedure Read_Port2(var Bin:byte); Var b0:byte;

Begin

asm

mov dx,port2 in al,dx { зчитування даних з порта }

mov b0,al

end; Bin:=b0;

End;

BEGIN

ClrScr; writeln('Програма з асемблерними вставками для роботи з портами '); bOut:=$08;

Write_Port1(BOut); writeln(' В порт записано значення BOut = ',BOut);

Read_Port2(Bin); writeln(' З порта зчитано значення Bin = ',Bin); readln;

END.

 

Для зчитування /запису даних через порти зручно написати спеціалізовані процедури, які будуть також проводити первинну обробку даних. Обробка бітів можна приводити в Асемблері, або ж перетворити байт b1 даних у масив бітів mb[7],.. mb[0] (у двійкове число, 7 - 0111) на мові високого рівня (Паскаль) і оперувати тільки елементами цього масиву (зменш. Швидкість).

1. Маскування встановлення фільтру, тобто операції виконуються тільки з певними бітами.

 

Asm

Mov al,ba

And al,0100 0000b

Mob b2,al

end

 

2. Інверсія виконується на рівні асемблеру () або нарівні Паскалю.

 

neg al

 

3. Зсув. В асемблері зсув , у Паскалі зсув на n бітів в

Похожие работы

1 2 3 > >>