Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Паралельний інтерфейс IEEE 1284 (інтерфейс Centronics)

Тип Реферат
Предмет Информатика и программирование
Просмотров
1349
Размер файла
124 б
Поделиться

Ознакомительный фрагмент работы:

Паралельний інтерфейс IEEE 1284 (інтерфейс Centronics)

Реферат на тему:

«Паралельний інтерфейс IEEE 1284 (інтерфейс Centronics)»

1. Загальні положення

1.1 Призначення інтерфейсу

В ПК традиційно використовується паралельний інтерфейс IEEE 1284 (більше відомий під назвою Centronics, названий в честь фірми яка першою розробила даний інтерфейс), реалізований LPT – портом. Основним призначенням інтерфейсу IEEE 1284 є підключення до комп’ютера периферійних пристроїв (ПП), здебільшого принтерів різноманітних типів [1]. Тому розподіл контактів рознімача, призначення сигналів, програмні засоби керування налаштовані саме на це використання.

1.2 Характеристика інтерфейсу

Інтерфейс Centronics є радіальним, асинхронним, паралельним інтерфейсом. Його використовують для підєднання ПП з невеликою швидкістю. Аналогічним можна вважати інтерфейс ИРПР-М, який використовували для спряження із ЕОМ друкуючих пристроїв [1]. Інтерфейс реалізує паралельне передавання 8-ми бітів (1 байта). Лінії інтерфейсу однонапрямлені і забезпечують передавання даних між одним передавачем (ПРД) і одним приймачем (ПРМ).

В LPT-порті використовуються логічні рівні ТТЛ, що обмежує допустиму довжину кабелю через невелику завадостійкість ТТЛ-інтерфейсу.

Максимальна довжина з’єднувального кабелю по стандарту -1.8 м. Швидкість передачі даних при стандартних налаштуваннях 100–150 Кбайт/с.

1.3 Лінії інтерфейсу

Призначення 25-контактого рознімача IEEE 1284-A (рис. 1) приведено в таблиці 1 [2].


Рис. 1. Рознімач IEEE 1284-ADB-25 (DB (DataBus) – шина даних, 25 – кількість контактів)

Таблиця 1. Призначення контактів рознімача IEEE 1284-A

Контакт DB-25 (LPT)Напрям передачі

Регістр,

№ біта в регістрі

СигналПризначення
1CR.0Strobe#Спроб даних. Дані фіксуються по низькому рівню сигналу.
2DR.0D0Дані 0
3DR.1D1Дані 1
4DR.2D2Дані 2
5DR.3D3Дані 3
6DR.4D4Дані 4
7DR.5D5Дані 5
8DR.6D6Дані 6
9DR.7D7Дані 7
10SR.6Ack#Імпульс підтвердження прийому байта даних.
11SR.7BusyЗайнятість. Прийом даних можливий тільки при низькому рівні сигналу.
12SR.5PEPaper End. Низький рівень сигналізує про закінчення паперу.
13SR.4SelectСигналізує про включення принтера
14CR.1AutoLF#Автоматичний перевід каретки
15SR.3Error#Помилка
16CR.2Init#Ініціалізація пристрою
17CR.3SelectIn#Вибір принтера (низьким рівнем)
18–25--GNDЗаземлення (нульовий потенціал 0V)

Сигнали IEEE 1284 мають таке призначення:

←- вхідний сигнал від периферійного пристрою до ПК;

→- вихідний сигналвід ПК до периферійного пристрою;

1.4 Пам’ять інтерфейсу

LPT-порт містить три 8-бітних регістра, розміщених по сусідніх адресах в просторі пам'яті вводу-виводу, починаючи з базової адреси порту BASE. В комп'ютері може використовуватись декілька LPT-портів, що позначаються LPT1, LPT2 і т.д., відповідно адреси в них будуть різними. В табл. 2 показано адреси для 3-х LPT-портів.

Таблиця 2. Адреси LPT-портів

Базова адреса (BASE)

Регістр даних

(DataRegister)

Регістр стану

(StatusRegister)

Регістр управління

(ControlRegister)

3BCh3BDh3BEh
378h379h37Ah
278h279h27Ah

Регістр даних (DataRegister, DR), 8-бітний регістр, дані, що записуються в цей регістр, виводяться на вихідні лінії (DR. [0:7]), адреса = BASE.

Регістр стану (StatusRegister, SR) призначений тільки для зчитування. Регістр відображає 5-бітовий (SR. [3:7]) порт вводу сигналів стану, адреса = BASE+1.

Регістр управління (ControlRegister, CR), 4-бітний (CR. [0:3]) порт виводу управляючих сигналів, адреса = BASE+2.

З’єднання регістрів пам’яті із рознімачем DB-25 показано на рис. 2.


Рис. 2. З’єднання регістрів пам’яті з рознімачем DB-25

1.5 Робота інтерфейсу

Формування і прийом сигналів проводиться шляхом запису і читання виділених для конкретного порту регістрів за певними адресами. При вмиканні обладнання відбувається процедура послідовність погодження режиму передачі даних (рис. 3).

Послідовність погодження режиму передачі

Послідовність погодження режиму передачі складається з наступних кроків:

1. ПК виставляє так званий байт розширення на лінії даних.

2. ПК виставляє високий рівень сигналу SelectIn# і низький – AutoLF#, що означає початок послідовності погодження.

3. ПП відповідає встановленням низького рівня сигналу Ack# і низького – Error#, PE і Select.

4. ПК встановлює низький рівень сигналу Strobe# для запису байту розширення в ПП.

5. ПК встановлює високий рівень сигналу Strobe# і AutoLF#.

6. ПП відповідає встановленням в низький рівень PE і Error#, якщо ПП має зворотній канал передачі даних. Якщо режим, що запитується, підтримується пристроєм, то на лінії Select встановлюється високий рівень, а якщо не підтримується – низький.

7. ПП встановлює високий рівень на лінії Ack# для вказівки на завершення погодження, після чого контролер встановлює потрібний режим роботи.

Рис. 3. Послідовність погодження режимів передачі IEEE 1284

Послідовність побудована так, що старі пристрої, які не розраховані на застосування IEEE 1284, на неї не дадуть відповіді і контролер ПК залишиться в стандартному режимі. Під час фази погодження контролер ПК встановлює на лінії даних байт розширення, тим самим даючи запит на перевід інтерфейсу в потрібний режим [3] (табл. 3).

Таблиця 3. Біти в байті розширення

БитОписДопустимі комбінації бітів [7:0]
7Зарезервовано1000 0000
6Запит режиму EPP0100 0000
5Запит режиму ECP з RLE0011 0000
4Запит режиму ECP без RLE0001 0000
3Зарезервовано0000 1000
2

Запит ідентифікатора пристрою з відповіддю в режимі:

півбайтовий

байтовий

ECP без RLE

ECP з RLE

0000 0100

0000 0101

0001 0100

0011 0100

1Зарезервовано0000 0010
0Запит півбайтового режиму0000 0001
noneЗапит байтового режиму0000 0000

Передача даних

Після узгодження режиму передачі можна здійснювати передачу даних. На рис. 4 показано передачу даних по протоколу Centronics.

Рис. 4. Передача даних по протоколу Centronics

1.6 Програмна частина інтерфейсу

Програмувати розробку інтерфейсу можна на нижчому рівні (наприклад із використанням мови Assembler), на середньому рівні та на мовах високого рівня (наприклад в середовищі Delphi).

Для програмування LPT портів в середовищі Delphi використовується модуль LPTIO.pas в якому описана вся взаємодія з драйвером LPT-порту lptwdmio.sys (Увага!!! Драйвер повинен знаходитись в папці c:WINDOWSsystem32drivers або в тій же папці що і програма) [4].

Для роботи з LPT-портом оголошуємо об’єкт:

Lpt: TLptPortConnection;

В процедурі створення форми створюємо об’єкт Lpt

procedure TForm1. FormCreate (Sender: TObject);

var

msg: AnsiString;

begin

Lpt:= TLptPortConnection. Create;

В тій же процедурі занесемо в регістр даних і у регістр управління заносимо 0 і 3 відповідно, що в результаті приведе до виключення всіх світлодіодних індикаторів.

Lpt. WritePort (GetCurrentPort, 0,0);

Lpt. WritePort (GetCurrentPort, 2,3);

Регістри є 8-бітні тому максимально можливе десяткове число, яке може бути записане в них, це 255 або 11111111 в двійковому форматі. Для запису використовується функція WritePort,де в параметрах вказується порт, в який записуються дані, його можна взнати використавши процедуруGetCurrentPort. Номера регістру: 0 – регістр даних, 1 – регістр стану, 2 – регістр управління. Число яке записується від 0 до 255.

Для зчитування значень з регістру використовується функція ReadPort в параметрах якої вказується поточний порт і номер регістру (аналогічно з функцією запису).

Lpt. ReadPort (GetCurrentPort, 0)

Зчитується все значення регістру і тому, для того, щоб отримати значення певної комірки регістру, над зчитаним значенням потрібно виконати наступні дії:

var

d: boolean;

begin

d:= true;

d:= d and (1 = (1 and Lpt. ReadPort((GetCurrentPort), 0)));

Над зчитаними даними і степенем двійки, відповідно до номера регістра, значення якого потрібно взнати, виконується логічна операція and (логічне множення). Потім прирівнюємо до того ж числа в результаті виходе логічне значення true – якщо значення рівні і false – якщо ні. Значення булевої змінної можна використати наприклад для перемикання прапорця чи зміни кольору фігури, яка символізує діод. Повний текст програми яка зчитує і записує значення в LPT-порт дивіться в додатку.

1.7 Перспективи інтерфейсу IEEE 1284

Зараз практично всі сучасні системні плати не мають LPT-порту. Але на старіших системних платах цей порт досить поширений. Це пов’язане з вичерпанням портом свого ресурсу як такого. На заміно йому прийшов більш зручний і функціональний USB-порт. [5]. Порівняльні характеристики інтерфейсу IEEE 1224 та USB приведено в табл. 4

інтерфейс аналог асинхронний передача

Таблиця 4. Порівняльні характеристики інтерфейсу IEEE 1224 та USB

IEEE 1284USB 2.0USB 3.0
Швидкість1,2 Мбіт/c

Low-speed: 10– 1500 Кбіт/c

Full-speed: 0,5 – 12 Мбіт/с

Hi-speed: 25 – 480 Мбіт/с

4,8 Гбит/с
Довжина лінії3 м3–5 м3–5 м

Додаток

Код програми написаний на мові Delphi для зчитування і запису даних в LPT-порт.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, LPTIO, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Shape1: TShape;

Shape2: TShape;

Shape3: TShape;

Shape4: TShape;

Shape5: TShape;

Shape6: TShape;

Shape7: TShape;

Shape8: TShape;

Shape9: TShape;

Shape10: TShape;

Shape11: TShape;

Shape12: TShape;

Shape13: TShape;

Shape14: TShape;

Shape15: TShape;

Shape16: TShape;

Shape17: TShape;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Shape18: TShape;

Shape19: TShape;

Shape20: TShape;

Shape21: TShape;

Shape22: TShape;

Shape23: TShape;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

Label24: TLabel;

Label25: TLabel;

Label26: TLabel;

Label27: TLabel;

Label28: TLabel;

Label29: TLabel;

Label30: TLabel;

Label31: TLabel;

Label32: TLabel;

Label33: TLabel;

Label34: TLabel;

Label35: TLabel;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

Button14: TButton;

Button16: TButton;

Button17: TButton;

Shape24: TShape;

Shape25: TShape;

Shape26: TShape;

Label18: TLabel;

Label36: TLabel;

Label37: TLabel;

ComboBox1: TComboBox;

Timer1: TTimer;

CheckBox1: TCheckBox;

CheckBox2: TCheckBox;

CheckBox3: TCheckBox;

CheckBox4: TCheckBox;

CheckBox5: TCheckBox;

CheckBox6: TCheckBox;

CheckBox7: TCheckBox;

CheckBox8: TCheckBox;

CheckBox9: TCheckBox;

CheckBox10: TCheckBox;

CheckBox11: TCheckBox;

CheckBox12: TCheckBox;

CheckBox13: TCheckBox;

CheckBox14: TCheckBox;

CheckBox15: TCheckBox;

CheckBox16: TCheckBox;

CheckBox17: TCheckBox;

Edit1: TEdit;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

procedure Button6Click (Sender: TObject);

procedure Button7Click (Sender: TObject);

procedure Button8Click (Sender: TObject);

procedure Button9Click (Sender: TObject);

procedure Button14Click (Sender: TObject);

procedure Button16Click (Sender: TObject);

procedure Button17Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure FormDestroy (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

private

{Private declarations}

Lpt: TLptPortConnection;

public

{Public declarations}

function GetCurrentPort: byte;

function Pin2: boolean;

function Pin3: boolean;

function Pin4: boolean;

function Pin5: boolean;

function Pin6: boolean;

function Pin7: boolean;

function Pin8: boolean;

function Pin9: boolean;

function Pin1: boolean;

function Pin14: boolean;

function Pin16: boolean;

function Pin17: boolean;

function Pin10: boolean;

function Pin11: boolean;

function Pin12: boolean;

function Pin13: boolean;

function Pin15: boolean;

procedure ButtonPin2;

procedure ButtonPin3;

procedure ButtonPin4;

procedure ButtonPin5;

procedure ButtonPin6;

procedure ButtonPin7;

procedure ButtonPin8;

procedure ButtonPin9;

procedure ButtonPin1;

procedure ButtonPin14;

procedure ButtonPin16;

procedure ButtonPin17;

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1. FormCreate (Sender: TObject);

var

msg: AnsiString;

begin

Lpt:= TLptPortConnection. Create;

if not Lpt. Ready then

begin

msg:= 'Помилка при створенні обєкта Lpt, драйвер ERROR, код = ' + Application. MessageBox (PChar(msg), 'ERROR', MB_OK);

Application. Terminate;

end;

ComboBox1. Items. Clear;

if Lpt. IsPortPresent(LPT1) then

ComboBox1. Items. Add ('$3BC');

if Lpt. IsPortPresent(LPT2) then

ComboBox1. Items. Add ('$378');

if Lpt. IsPortPresent(LPT3) then

ComboBox1. Items. Add ('$278');

if 0=ComboBox1. Items. Count then

begin

ComboBox1. Items. Add ('LPT ïîðò³â íå çíàéäåíî');

ComboBox1. ItemIndex:= 0;

end

else

ComboBox1. ItemIndex:= 0;

Lpt. WritePort (GetCurrentPort, 0,0);

Lpt. WritePort (GetCurrentPort, 2,3);

end;

procedure TForm1. FormDestroy (Sender: TObject);

begin

Lpt. Destroy;

Timer1. Enabled:= false;

end;

function TForm1. GetCurrentPort:byte;

begin

if '$3BC' = ComboBox1. Text then

GetCurrentPort:=LPT1

else

if '$378' = ComboBox1. Text then

GetCurrentPort:=LPT2

else

GetCurrentPort:=LPT3;

end;

procedure TForm1. Timer1Timer (Sender: TObject);

begin

CheckBox1. Checked:= Pin1;

CheckBox2. Checked:= Pin2;

CheckBox3. Checked:= Pin3;

CheckBox4. Checked:= Pin4;

CheckBox5. Checked:= Pin5;

CheckBox6. Checked:= Pin6;

CheckBox7. Checked:= Pin7;

CheckBox8. Checked:= Pin8;

CheckBox9. Checked:= Pin9;

CheckBox10. Checked:= Pin10;

CheckBox11. Checked:= Pin11;

CheckBox12. Checked:= Pin12;

CheckBox13. Checked:= Pin13;

CheckBox14. Checked:= Pin14;

CheckBox15. Checked:= Pin15;

CheckBox16. Checked:= Pin16;

CheckBox17. Checked:= Pin17;

if Pin1=true then

Shape1. Brush. Color:=clRed

else

Shape1. Brush. Color:=clWhite;

if Pin2=true then

Shape2. Brush. Color:=clRed

else

Shape2. Brush. Color:=clWhite;

if Pin3=true then

Shape3. Brush. Color:=clRed

else

Shape3. Brush. Color:=clWhite;

if Pin4=true then

Shape4. Brush. Color:=clRed

else

Shape4. Brush. Color:=clWhite;

if Pin5=true then

Shape5. Brush. Color:=clRed

else

Shape5. Brush. Color:=clWhite;

if Pin6=true then

Shape6. Brush. Color:=clRed

else

Shape6. Brush. Color:=clWhite;

if Pin7=true then

Shape7. Brush. Color:=clRed

else

Shape7. Brush. Color:=clWhite;

if Pin8=true then

Shape8. Brush. Color:=clRed

else

Shape8. Brush. Color:=clWhite;

if Pin9=true then

Shape9. Brush. Color:=clRed

else

Shape9. Brush. Color:=clWhite;

if Pin10=true then

Shape10. Brush. Color:=clRed

else

Shape10. Brush. Color:=clWhite;

if Pin11=true then

Shape11. Brush. Color:=clRed

else

Shape11. Brush. Color:=clWhite;

if Pin12=true then

Shape12. Brush. Color:=clRed

else

Shape12. Brush. Color:=clWhite;

if Pin13=true then

Shape13. Brush. Color:=clRed

else

Shape13. Brush. Color:=clWhite;

if Pin14=true then

Shape14. Brush. Color:=clRed

else

Shape14. Brush. Color:=clWhite;

if Pin15=true then

Shape15. Brush. Color:=clRed

else

Shape15. Brush. Color:=clWhite;

if Pin16=true then

Shape16. Brush. Color:=clRed

else

Shape16. Brush. Color:=clWhite;

if Pin17=true then

Shape17. Brush. Color:=clRed

else

Shape17. Brush. Color:=clWhite;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

ButtonPin1;

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

ButtonPin2;

end;

procedure TForm1. Button3Click (Sender: TObject);

begin

ButtonPin3;

end;

procedure TForm1. Button4Click (Sender: TObject);

begin

ButtonPin4;

end;

procedure TForm1. Button5Click (Sender: TObject);

begin

ButtonPin5;

end;

procedure TForm1. Button6Click (Sender: TObject);

begin

ButtonPin6;

end;

procedure TForm1. Button7Click (Sender: TObject);

begin

ButtonPin7;

end;

procedure TForm1. Button8Click (Sender: TObject);

begin

ButtonPin8;

end;

procedure TForm1. Button9Click (Sender: TObject);

begin

ButtonPin9;

end;

procedure TForm1. Button14Click (Sender: TObject);

begin

ButtonPin14;

end;

procedure TForm1. Button16Click (Sender: TObject);

begin

ButtonPin16;

end;

procedure TForm1. Button17Click (Sender: TObject);

begin

ButtonPin17;

end;

procedure TForm1. ButtonPin2;

begin

Lpt. WritePort (GetCurrentPort, 0, (1 xor Lpt. ReadPort((GetCurrentPort), 0)));

end;

procedure TForm1. ButtonPin3;

begin

Lpt. WritePort (GetCurrentPort, 0, (2 xor Lpt. ReadPort((GetCurrentPort), 0)));

end;

procedure TForm1. ButtonPin4;

begin

Lpt. WritePort (GetCurrentPort, 0, (4 xor Lpt. ReadPort((GetCurrentPort), 0)));

end;

procedure TForm1. ButtonPin5;

begin

Lpt. WritePort (GetCurrentPort, 0, (8 xor Lpt. ReadPort((GetCurrentPort), 0)));

end;

procedure TForm1. ButtonPin6;

begin

Lpt. WritePort (GetCurrentPort, 0, (16 xor Lpt. ReadPort((GetCurrentPort), 0)));

end;

procedure TForm1. ButtonPin7;

begin

Lpt. WritePort (GetCurrentPort, 0, (32 xor Lpt. ReadPort((GetCurrentPort), 0)));

end;

procedure TForm1. ButtonPin8;

begin

Lpt. WritePort (GetCurrentPort, 0, (64 xor Lpt. ReadPort((GetCurrentPort), 0)));

end;

procedure TForm1. ButtonPin9;

begin

Lpt. WritePort (GetCurrentPort, 0, (128 xor Lpt. ReadPort((GetCurrentPort), 0)));

end;

procedure TForm1. ButtonPin1;

begin

Lpt. WritePort (GetCurrentPort, 2, (1 xor Lpt. ReadPort((GetCurrentPort), 2)));

end;

procedure TForm1. ButtonPin14;

begin

Lpt. WritePort (GetCurrentPort, 2, (2 xor Lpt. ReadPort((GetCurrentPort), 2)));

end;

procedure TForm1. ButtonPin16;

begin

Lpt. WritePort (GetCurrentPort, 2, (4 xor Lpt. ReadPort((GetCurrentPort), 2)));

end;

procedure TForm1. ButtonPin17;

begin

Lpt. WritePort (GetCurrentPort, 2, (8 xor Lpt. ReadPort((GetCurrentPort), 2)));

end;

function TForm1. Pin2: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (1 = (1 and Lpt. ReadPort((GetCurrentPort), 0)));

Pin2:= d;

end;

function TForm1. Pin3: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (2 = (2 and Lpt. ReadPort (GetCurrentPort, 0)));

Pin3:= d;

end;

function TForm1. Pin4: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (4 = (4 and Lpt. ReadPort (GetCurrentPort, 0)));

Pin4:= d;

end;

function TForm1. Pin5: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (8 = (8 and Lpt. ReadPort (GetCurrentPort, 0)));

Pin5:= d;

end;

function TForm1. Pin6: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (16 = (16 and Lpt. ReadPort (GetCurrentPort, 0)));

Pin6:= d;

end;

function TForm1. Pin7: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (32 = (32 and Lpt. ReadPort (GetCurrentPort, 0)));

Pin7:= d;

end;

function TForm1. Pin8: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (64 = (64 and Lpt. ReadPort (GetCurrentPort, 0)));

Pin8:= d;

end;

function TForm1. Pin9: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (128 = (128 and Lpt. ReadPort (GetCurrentPort, 0)));

Pin9:= d;

end;

function TForm1. Pin1: boolean;

var

d: boolean;

begin

d:= true;

d:= d xor (STROBE = (STROBE and Lpt. ReadPort (GetCurrentPort, 2)));

Pin1:= d;

end;

function TForm1. Pin14: boolean;

var

d: boolean;

begin

d:= true;

d:= d xor (AUTOFEED = (AUTOFEED and Lpt. ReadPort (GetCurrentPort, 2)));

Pin14:= d;

end;

function TForm1. Pin16: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (INIT = (INIT and Lpt. ReadPort (GetCurrentPort, 2)));

Pin16:= d;

end;

function TForm1. Pin17: boolean;

var

d: boolean;

begin

d:= true;

d:= d xor (SELECTIN = (SELECTIN and Lpt. ReadPort (GetCurrentPort, 2)));

Pin17:= d;

end;

function TForm1. Pin10: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (ACK = (ACK and Lpt. ReadPort (GetCurrentPort, 1)));

Pin10:= d;

end;

function TForm1. Pin11: boolean;

var

d: boolean;

begin

d:= true;

d:= d xor (BUSY = (BUSY and Lpt. ReadPort (GetCurrentPort, 1)));

Pin11:= d;

end;

function TForm1. Pin12: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (PAPEREND = (PAPEREND and Lpt. ReadPort (GetCurrentPort, 1)));

Pin12:= d;

end;

function TForm1. Pin13: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (SELECT = (SELECT and Lpt. ReadPort (GetCurrentPort, 1)));

Pin13:= d;

end;

function TForm1. Pin15: boolean;

var

d: boolean;

begin

d:= true;

d:= d and (ERROR = (ERROR and Lpt. ReadPort (GetCurrentPort, 1)));

Pin15:= d;

end;end.

Додаток2

Код програми написаний на мові Delphi для виводу двійкового числа 10000000 на світлодіодні індикатори лабораторного макету із періодом зміни інформації в 1 секунду.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, LPTIO, ExtCtrls, StdCtrls, Spin;

type

TForm1 = class(TForm)

Button1: TButton;

Timer1: TTimer;

SpinEdit1: TSpinEdit;

CheckBox1: TCheckBox;

Label1: TLabel;

Label2: TLabel;

procedure FormCreate (Sender: TObject);

procedure FormDestroy (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure SpinEdit1Change (Sender: TObject);

private

{Private declarations}

Lpt: TLptPortConnection;

public

{Public declarations}

function GetCurrentPort: byte;

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1. FormCreate (Sender: TObject);

var

msg: AnsiString;

begin

Lpt:= TLptPortConnection. Create;

if not Lpt. Ready then

begin {объект не готов – покажем код ошибки}

msg:= 'Ошибка при создании объекта Lpt, драйвер ERROR, код = ' + IntToStr (GetLastError());

Application. MessageBox (PChar(msg), 'ERROR', MB_OK);

Application. Terminate;

end;

Lpt. WritePort (GetCurrentPort, 0,0);

Lpt. WritePort (GetCurrentPort, 2,3);

end;

procedure TForm1. FormDestroy (Sender: TObject);

begin

Lpt. Destroy;

Timer1. Enabled:= false;

end;

function TForm1. GetCurrentPort:byte;

begin

if Lpt. IsPortPresent(LPT1) then

GetCurrentPort:=LPT1

else

if Lpt. IsPortPresent(LPT2) then

GetCurrentPort:=LPT2

else

if Lpt. IsPortPresent(LPT3) then

GetCurrentPort:=LPT3;

end;

procedure TForm1. Timer1Timer (Sender: TObject);

begin

Lpt. WritePort (GetCurrentPort, 0, (1 xor Lpt. ReadPort((GetCurrentPort), 0)));

if CheckBox1. Checked=false then

CheckBox1. Checked:=true

else

CheckBox1. Checked:=false;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

if Timer1. Enabled=false then

begin

Timer1. Enabled:=true;

Button1. Caption:='Stop';

end

else

begin

Timer1. Enabled:=false;

Button1. Caption:='Start';

end;

end;

procedure TForm1. SpinEdit1Change (Sender: TObject);

begin

Timer1. Interval:=SpinEdit1. Value;

end;

end.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно