Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Проектування апаратури для спряження з Centronics

Стробування

Швидкість обміну через порт принтера залежить від швидкодії комп’ютера. Тому для зовнішніх пристроїв низької і середньої швидкодії потрібно забезпечувати затримку сигналів (наприклад, стробу) на певні проміжки часу (затримка 1 мс: в Паскалі : Delay(1) , в – Delphi : Sleep(1)).

Функції BIOS для LPT порту

У процесі початкового тестування POST BIOS перевіряє наявність паралельних портів LPT1-LPT4 по адресах 3BCh, 378h, 278h і поміщає базові адреси виявлених портів в пам’ять за адресами: 0:0408h, 040Ah, 040Ch, 040Eh. Після виявлення порти ініціалізуються – на порт подається сигнал Init і в порт записуються нульові значення.

Програмне переривання BIOS int 17h забезпечує наступні функції підтримки LPT-порту:

00h - вивід символу з регістру AL, строб формується після готовності принтера

01h - ініціалізація принтера

02h - опитування стану принтера

При виклику INT 17h номер функції задається в регістрі AH, а номер порту – у регістрі DX (0 – LPT1, 1 – LPT2..). Дані з порта повертаються у регістр AH.

Використання переривань: LPT1 – IRQ7, LPT2 – IRQ5.

 

Для Centronics характерні такі особливості:

1) обмін даними є програмно-керованим (для стандартного порта обробка переривань і прямий доступ до пам’яті неможливі).

2) невисока швидкість обміну

3) обмеження на довжину лінії зв’язку (2м)

4) немає шини живлення.

Розглянемо підключення до комп’ютера найпростішого пристрою – набору світло діодів і кнопок. Для керування використано сигнали Strobe – стробування запису даних та Init – очистка регістру.

Після світлодіода сигнал з напругою (0, +5В ) і струмом 10мА можна подати на підсилювач напруги та струму і далі на виконавчий пристрій. Для безпосереднього керування виконавчими пристроями використовують тиристори, оптопари, реле.

Рис. 2. Під’єднання до комп’ютера зовнішнього пристрою через Centronics

Для збільшення розрядності вхідних даних використовують мультиплексори (наприклад, вхід – 16 біт, вихід – 4 ), а для збільшення розрядності вихідних даних – демультиплексори (наприклад, вхід – 4 біт, вихід – 16 біт). Для побудови мультиплексорів використовують буфери з трьома станами (0В, 5В, відключено), наприклад К155ЛП8.

5.6. Програмування паралельного порту під 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, ..

dwDesiredAccess - тип доступу до файлу: GENETIC_READ - файл для зчитування, GENETIC_WRITE - файл для запису, GENETIC_READ | GENETIC_WRITE - файл для зчитування / запису.

dwSharedMode - параметр спільного доступу до файлу (=0 – монопольний режим)

lpSecurityAttributes - атрибут захисту файлу (=Null)

dwCreationDistribution – визначає поведінку функції, якщо об’єкт вже існує

DwFlagsAndAttributes – атрибути об’єкту

HTemplateFile – дескриптор з доступом до об’єкту

 

5.7. Використання бібліотеки IO.DLL для доступу до портів у Windows 95/98/NT/2000/XP

При використанні DOS і Windows 95/98 доступ до портів вводу/виводу (I/O ports) комп’ютера був відносно простим. Проте у Windows NT/2000/XP (захищена операційна система) доступ до портів вв./вив. значно ускладнився за рахунок віртуалізації апаратного забезпечення (virtualize hardware). Тому команди вводу/вив в порт (IN and OUT) у Windows NT/2000/XP не працюють, а операційна система працює із зовнішніми пристроями як з файлами (команди запису/зчитування з файлу). Для роботи з портами розроблена динамічно під’єднувана бібліотека IO.DLL, що дозволяє зручно виконувати команди вв/вив. даних у порти для 95/98 and NT/2000/XP:

C/C++ Prototypes

void WINAPI PortOut(short int Port, char Data);void WINAPI PortWordOut(short int Port, short int Data);void WINAPI PortDWordOut(short int Port, int Data);char WINAPI PortIn(short int Port);short int WINAPI PortWordIn(short int Port);int WINAPI PortDWordIn(short int Port);void WINAPI SetPortBit(short int Port, char Bit);void WINAPI ClrPortBit(short int Port, char Bit);void WINAPI NotPortBit(short int Port, char Bit);short int WINAPI GetPortBit(short int Port, char Bit);short int WINAPI RightPortShift(short int Port, short int Val);short int WINAPI LeftPortShift(short int Port, short int Val);short int WINAPI IsDriverInstalled();

Delphi Prototypes

procedure PortOut(Port : Word; Data : Byte);procedure PortWordOut(Port : Word; Data : Word);procedure PortDWordOut(Port : Word; Data : DWord);function PortIn(Port : Word) : Byte;function PortWordIn(Port : Word) : Word;function PortDWordIn(Port : Word) : DWord;procedure SetPortBit(Port : Word; Bit : Byte);procedure ClrPortBit(Port : Word; Bit : Byte);procedure NotPortBit(Port : Word; Bit : Byte);function GetPortBit(Port : Word; Bit : Byte) : WordBool;function RightPortShift(Port : Word; Val : WordBool) : WordBool;function LeftPortShift(Port : Word; Val : WordBool) : WordBool; function IsDriverInstalled : Boolean; procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';stdcall – параметр, що визначає режим передачі параметрів процедурі (через стек). По замовчуванню параметри передаються зліва направо (Left-to-right), а для параметра – справа наліво (Right-to-left). Для виклику зовнішніх процедур використовується stdcall (calls to external code)

Опис функцій / Function Descriptions

Please refer to the prototype for the particular language you are using.

PortOut –Вивід байта у спеціальний порт / Outputs a byte to the specified port.

PortWordOut –Вивід слова (16 біт) у порт / Outputs a word (16-bits) to the specified port.

PortDWordOut –Вивід подвійного слова у порт / Outputs a double word (32-bits) to the specified port.

PortIn –Зчитування байту з порта / Reads a byte from the specified port.

PortWordIn –Зчитування слова / Reads a word (16-bits) from the specified port.


Читайте також:

  1. Active-HDL як сучасна система автоматизованого проектування ВІС.
  2. VII. Етап проектування
  3. VII. Етап проектування
  4. Автоматизація проектування напівзамовлених ВІС.
  5. Варіантне проектування будівельного виробництва.
  6. Варіантне проектування технології зведення будівель та споруд.
  7. Вибір мікропроцесорного комплекту для проектування обчислювальних пристроїв і систем
  8. Вибір способу виготовлення заготовки. Попереднє проектування заготовки.
  9. Види архітектурного проектування
  10. Вимоги щодо проектування електрообладнання для пожежонебезпечних і вибухонебезпечних зон
  11. Виникнення і розвиток землевпорядного проектування
  12. Вихідні дані для проектування




Переглядів: 728

<== попередня сторінка | наступна сторінка ==>
Режими пар. порту | Послідовна передача даних

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.