- •1. Паралельний і послідовний порти
- •Лабораторна робота №1 Тема: Управління об’ктами за допомогою lpt порта пк.
- •1.1. Паралельний порт
- •1.1.2. Внутрішній пристрій
- •Група даних
- •Група управління
- •Група стану
- •1.1.3. Програмне управління Отримання базової адреси паралельного порту
- •Ввід/вивід даних через паралельний порт
- •Команди принтера і процедури переривань bios
- •Безпосередній доступ до регістрів порту
- •Вага біта
- •Лабораторна робота №2 Тема: Управління об’ктами за допомогою сом порта пк.
- •1.2. Послідовний інтерфейс rs232
- •1.2.1. Послідовна передача даних
- •1.2.2. Роз'єм і кабель порту rs232
- •1.2.3. Внутрішня апаратна конструкція
- •Перетворювачі напруги
- •Базові адреси сом-портів
- •1.2.4. Програмне управління Отримання базової адреси послідовного порту
- •Ініціалізація сом-порта
- •Передача і приймання послідовних даних
- •Передача даних по лініях взаємодії
- •2.4. Експериментальні плати паралельного, послідовного та ігрового портів
- •2.4.1. Експериментальна плата паралельного порту
- •2.4.2. Експериментальна плата послідовного порту
- •3. Програми управління експериментальними платами
- •3.1. Програмне забезпечення для експериментальної плати паралельного порту
- •3.1.1. Опис програми centexp.Pas
- •Текст програми centexp.Pas
- •3.2. Програмне забезпечення для експериментальної плати послідовного порту
- •3.2.1. Опис програми rs232exp.Pas
- •Текст програми rs232exrpas
- •Лабораторна робота №3 Тема: Управління об’ктами за допомогою usb порта пк.
- •Функція
- •Механізм передачі даних
Передача даних по лініях взаємодії
Для виведення даних через лінії RTS і DTR в регістр управління модемом (зсув 04h) необхідно записувати біти 1 і 0, які відповідають сигналам RTS і DTR. Лінії управляються процедурами на мовах Тр6 і Turbo Pascal для Windows, що вимагають базову адресу вибраного СОМ-порта і стан цих ліній, - або 0, або 1. Причому RTS і DTR інвертуються перед подачею в порт з метою компенсації інверсії перетворювачами TTЛ/RS232, які також використовуються для трансформації рівня напруги.
(*-Бібліотека ресурсів № А11 (запис даних в регістр стану модему) -*)
Рrocedure write_modem_status(RS232_address, RTS, DTR:integer);
(*RTS і DTR інвертуються за допомогою Мах238 на експериментальній платі *)
(*RTS=біt 1, DTR=біт 0 регістра управління модемом, зсув 04h.*)
begin
RTS:=1-RTS,
DTR:=1-DTR;
port(RS232_address+4):=RTS*2+DTR; (*3апис в регістр 04h *)
end;
(*-Бібліотека ресурсів № А11 (запис даних в регістр стану модему).-*)
Function write_modem_status(RS232_address, RTS, DTR:integer):integer; export; (*RTS і DTR інвертуються за допомогою Мах238 на експериментальній платі.*)
(*RTS=біt 1, DTR=біт 0 регістра управління модемом, зсув 04h.*)
begin
RTS:=1- RTS;
DTR:=1- DTR;
port(RS232_address+4):=RTS*2+DTR; (*3апис в регістр 04h *)
end;
Щоб рахувати дані з ліній DSR, CTS і DCD, необхідно рахувати регістр стану модему. Для цього служать нижче наведені процедури на мовах Тр6 і TPW, що вимагають базову адресу вибраного СОМ-порта. Лінії DSR, CTS і DCD інвертуються для компенсації інверсії перетворювачами TTЛ/RS232.
(*-Бібліотека ресурсів № А13 (читання даних з регістра стану модему).-*)
Function read_modem_status(RS232_address, x:integer):integer;
(*х=1 - вибір біта DCD, х=2 - вибір бита DSR, х=3 - вибір біта CTS.*)
(*DCD = біт 7, DSR = біт 5, CTS = біт 4 регістри стану модему, зсув 06h *)
(*Всі біти інвертуються за допомогою Мах238 на експериментальній платі.*)
var
input_byte:byte;
begin
input_byte:=port(RS232_address+6);
case x of
1: Read_modem__status = 1 - round((input_byte and 128)/128);
2: Read_modem__status = 1 - round((input_byte and 32)/32);
3: Read_modem__status = 1 - round((input_byte and 16)/16),
end;
end;
(*-Бібліотека ресурсів № A13 (читання даних з регістра стану модему) -*)
Function read_modem_status(RS232_address, x:integer):integer;
export;
(*x=1 - вибір біта DCD, x=2 - вибір біта DSR, x=3 - вибір біта CTS.*)
(*DCD = біт 7, DSR = біт 5, CTS = біт 4 регістри стану модему, зсув 06h.*)
(*Всі біти інвертуються за допомогою Мах238 на експериментальній платі.*)
var
input_byte:byte;
begin
input_byte:=port(RS232_address+6);
case x of
1: Read_modem_status: = 1 - round((input_byte and 128)/128);
2: Read_modem_status: = 1 - round((input_byte and 32)/32);
3: Read_modem_status: = 1 - round((input_byte and 16)/16);
end;
end;
2.4. Експериментальні плати паралельного, послідовного та ігрового портів
Експериментальні плати служать сполучною ланкою між комп'ютером і призначеними для користувача схемами. Вони забезпечені світлодіодами для індикації логічного стану кожного входу і виходу, що покращує наочність операції вводу/виводу. Крім того, на кожній платі є клемна колодка, до якої можна підключити експериментальну схему користувача. Всі вхідні цифрові лінії під'єднуються до комп'ютера через тригер Шмітта. Для роботи плат необхідне нестабілізоване джерело постійного струму 8-15 В. Розміщений на платах стабілізатор 7805 перетворить вхідну напругу в напругу +5 В. Струм джерела живлення обмежується за допомогою вбудованого запобіжника на 1 А. У платах використані поширені електронні компоненти, монтаж виконаний на односторонніх друкованих платах, що дозволяють проводити різні експерименти по з’єднанню зовнішніх пристроїв з комп'ютером.