Програма, яка реалізує контроль передачі даних через паралельний порт LPT

 

ЗМІСТ


ВСТУП

1. ОПИС ПРЕДМЕТНОГО СЕРЕДОВИЩА

1.1Опис LPT порта

1.1.1 Інтерфейс Centronics і стандарт IEEE 1284

1.1.2 Розєми

1.1.3 Фізичний інтерфейс

1.1.4 Фірмові розширення

1.1.5 Режими роботи

1.1.6 Опції BIOS для LPT-порту

1.1.7 Стандарт IEEE-1284

1.2 Опис програмного середовища

2. РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

ВИСНОВКИ


ВСТУП


Перший контролер був розроблений в 1971 <#"222" src="doc_zip1.jpg" />

Рис. 1.1


Існують також CC-кабелю з роз'ємами MiniCentronics на обох кінцях, призначені для підключення приладів в стандарті IEEE 1284-II, який застосовується рідко.

Довжина з'єднувального кабелю не повинна перевищувати 3 метрів. Конструкція кабелю: виті пари в загальному екрані, або кручені пари в індивідуальних екранах. Зрідка використовуються стрічкові кабелі.

Для підключення сканера, та деяких інших пристроїв використовується кабель, у якого замість роз'єму (IEEE 1284-B) встановлений роз'єм DB-25-male. Зазвичай сканер оснащується другим інтерфейсом з роз'ємом DB-25-female (IEEE 1284-A) для підключення принтера (оскільки зазвичай комп'ютер оснащується тільки одним інтерфейсом IEEE 1284). Схемотехніка сканера побудована таким чином, щоб при роботі з принтером сканер прозоро передавав дані з одного інтерфейсу на інший.


1.1.3 Фізичний інтерфейс

Базовий інтерфейс Centronics (рис. 1.2) є односпрямованим паралельним інтерфейсом, містить характерні для такого інтерфейсу сигнальні лінії (8 для передачі даних, строб, лінії стану пристрою).


Рис. 1.2


Дані передаються в один бік: від комп'ютера до зовнішнього пристрою. Але повністю односпрямованим його назвати не можна. Так, 4 зворотні лінії використовуються для контролю за станом пристрою. Centronics дає змогу підключати один пристрій, тому для спільного чергового використання декількох пристроїв потрібно додатково застосовувати селектор.

Швидкість передачі даних може варіюватися і досягати 1,2 Мбіт / с.

1.1.4 Фірмові розширення

Більшість фірмових розширень початкового інтерфейсу згодом було стандартизовано індустрією, якою процес завершився прийняттям серії стандартів IEEE-1284.

Однак, слід зазначити, що повної відповідності між цим стандартом і попередніми йому фірмовими розширеннями немає. Найбільш відомими фірмовими розширеннями є їх до від фірми Hewlett-Packard. Це Bitronics, що забезпечує двосторонню передачу інформації (застосовується перш за все для зняття розширеної інформації про стан принтера) і протокол мультиплексування шини від HP, призначений для того щоб підключати до одного LPT-порту безліч пристроїв за схемою "ланцюжок". На основі цього протоколу були розроблені стандарти 1284.3-2000 і 1284.4-2000, але повної сумісності досягнуто не було.

У результаті деякі дуже старі пристрої від HP можуть не цілком коректно працювати із портами, зконфігурований в режим IEEE-1284. Переважна більшість сучасної техніки не відчуває такої проблеми.


1.1.5 Режими роботи

Стандарт дозволяє використовувати інтерфейс в декількох режимах: (Standart Paralell Port) - односпрямований порт, повністю сумісний з інтерфейсом Centronics. Mode - дозволяє організувати двонаправлений обмін даними в режимі SPP шляхом використання керуючих ліній (4 біт) для передачі даних від периферійного пристрою до контролера. Історично це був єдиний спосіб використовувати Centronics для двостороннього обміну даними. Mode - рідко використовуваний режим двостороннього обміну даними. Використовувався в деяких старих контролерах до прийняття стандарту IEEE 1284. (Enhanced Parallel Port) - розроблений компаніями Intel, Xircom і Zenith Data Systems - двонаправлений порт, зі швидкістю передачі даних до 2МБайт/сек. (1 991)

ЕСР (Extended Capabilities Port) - розроблений компаніями Hewlett-Packard і Microsoft - на додаток з'явилися такі можливості, як наявність апаратного стиснення даних, наявність буфера і можливість роботи в режимі DMA.


.1.6 Опції BIOS для LPT-порту забезпечує підтримку LPT-порту, необхідну для організації висновку по інтерфейсу Centronics.

У процесі початкового тестування POST BIOS перевіряє наявність паралельних портів за адресами ЗВСЬ, 378h і 278h і поміщає базові адреси виявлених портів в осередку BIOS DATA AREA 0:0408 h, 040Ah, 040СП, 040ЕП. Ці осередки зберігають адреси портів з логічними іменами LPT1-LPT4. У комірки 0:0478, 0479, 047А, 047В заносяться константи, які визначають витримку тайм-ауту для цих портів.

Пошук портів зазвичай ведеться за базовим адресою. Якщо лічений байт збігся із записаним, вважається, що знайдено LPT-порт, і його адресу поміщають у клітинку BIOS DATA AREA. Адреса порту LPT4 BIOS самостійно встановити не може, оскільки в списку стандартних адрес пошуку є лише три вищевказаних.

Виявлені порти ініціалізувалися - записом в регістр управління формується і знімається сигнал Initff, після чого записується значення 00h, відповідне вихідного стану сигналів інтерфейсу.

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

h - висновок символу з регістра AL по протоколу Centronics. Дані поміщаються у вихідний регістр і після готовності принтера формується строб.

h - ініціалізаія інтерфейсу та принтера.

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

Коли Ви INT 17h номер функції задається в регістрі АН, номер порту - в регістрі DX (0 - LPT1, 1 - LPT2 ...). При поверненні після будь-якої функції регістр АН містить код стану - біти регістра стану SR [7:3] (біти 6 і 3 інвертувати) і прапор тайм-ауту в біті 0. Прапор тайм-ауту встановлюється при невдалій спробі виведення символу.


1.1.7 Стандарт IEEE-1284

Стандарт на паралельний інтерфейс IEEE 1284, прийнятий 1994 року, описує порти SPP, ЕРР і ЕСР. Стандарт визначає 5 режимів обміну даними, метод узгодження режиму, фізичний і електричний інтерфейси. Згідно IEEE 1284, можливі наступні режими обміну даними через паралельний порт:

Режим сумісності (Compatibility Mode) - однонаправлений (висновок) по протоколу Centronics. Цей режим відповідає SPP-порту.

Полубайтний режим (Nibble Mode) - введення байта в два циклу (по 4 біти), використовуючи для прийому лінії стану. Цей режим обміну підходить для будь-яких адаптерів, оскільки задіює тільки можливості стандартного порту.

Байтний режим (Byte Mode) - введення байта цілком, використовуючи для прийому лінії даних. Цей режим працює тільки на портах, що допускають читання вихідних даних (Bi-Directional або PS / 2 Турі 1, див. вище).

Режим ЕРР (ЕРР Mode) - двонаправлений обмін даними (ЕРР означає Enhanced Parallel Port). Керуючі сигнали інтерфейсу генеруються ап апаратні під час циклу звернення до порту. Ефективний при роботі з устрій чують зовнішньої пам'яті і адаптерами локальних мереж.

Режим ЕСР (ЕСР Mode) - двонаправлений обмін даними з можливістю апаратного стиску даних за методом RLE (Run Length Encoding) і використання FIFO-буферів і DMA (ЕСР означає Extended Capability Port). Керуючі сигнали інтерфейсу генеруються апаратно. Ефективний для принтерів і сканерів (тут може використовуватися стиск) і різних пристроїв блочного обміну.

Стандарт визначає спосіб, за яким ПЗ може визначити режим, доступний і хосту (PC), і периферійні пристрої (або приєднання другого комп'ютера). Режими нестандартних портів, що реалізують протокол обміну Centronics апаратно (Fast Centronics, Parallel Port FIFO Mode), можуть і не бути режимами IEEE 1284, незважаючи на наявність у них рис ЕРР і ЕСР.

У комп'ютерах з LPT-портом на системній платі режим - SPP, ЕРР, ЕСР або їх комбінація - задається в BIOS Setup. Режим сумісності повністю відповідає SPP-порту. Решта режими докладно розглянуті нижчі.

При описі режимів обміну фігурують такі поняття:

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

ПП - периферійний пристрій, що підключається до цього порту; - в назвах сигналів позначає передавальний ПП;

Прямий канал - канал виведення даних від хоста у ПП;

Зворотний канал - канал введення даних у хост з ПП.


1.2 Опис програмного середовища


Для реалізації даної задачі було використано мову програмування С++.

Звідси - програмне середовище, що використовувалось Microsoft Visual C++ 6.0Visual Studio - лінійка продуктів компанії Майкрософт, що включають інтегроване середовище розробки програмного забезпечення і ряд інших інструментальних засобів.Studio 6.0 - випущена в червні 1998 - остання версія Visual Studio, що працює на платформі Win9x. Як і раніше популярна серед програмістів, що використовують Visual Basic. Дана версія була основним середовищем розробки програм під Windows від Microsoft, до появи платформи. NET.

2. РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ


Для реалізації поставленої задачі необхідно в першу чергу скласти алгоритм по якому і буде виконуватись програма. Оскільки дії виконуються як на ММК так і на ПК, то проект розділено на 2 програми.

Алгоритм роботи програми, встановленої на ММК:

Підготовка ММК до запису числових значень;

Запис даних до регістрової памяті ММК;

Якщо на пінах регістру Control є номер цифри - передача на регістр даних цієї цифри;

Запис до регістру статусу номеру наступної цифри.

Завдяки роботі такого алгоритму забезпечується передача цифр «без плутанини».

Тепер складемо блок-схему, котра відображатиме роботу логічної частини передачі даних на LPT (рис. 2.1).


Рис. 2.1

Тепер, згідно з наведеною блок-схемою розроблюємо саму програму, яка виконуватиме перечисленні функції і працюватиме за створеним алгоритмом. інтерфейс паралельний порт

Дана частина проекту буде розроблятись у AVR Studio 4 на мові програмування Assembler.

Друга частина проекту - програма для ПК. Спочатку складемо алгоритм:

Перевірка значень на вході регстру статусу порта LPT;

Запис вмісту регістру даних до відповідної змінної;

Вивід номеру цифри до регістру Control порта LPT;

Перетворення змінних у вигляд гг:хх;

Зміна системного часу.

Складемо блок-схему алгоритму (Рис. 2.2).

Рис. 2.2


Як було зазначено в пункті 1.2 (див. вище), розробка програми буде здійснюватись в Microsoft Visual C++ 6.0, на мові програмування - С++. Тому для коректної роботи програми з апаратною частиною компютера, тобто з LPT, необхідно додатково підключити зовнішню бібліотеку ввода-виводу для LPT порта INPOUT32.lib i INPOUT32.dll (динамічна та статична бібліотеки роботи з LPT). Копіюємо ці бібліотеки до папки Debug що створилася після компіляції програми, а також прописуємо їх в коді самої програми (див. додаток).

Приклад виконання програми показаний на рис. 2.3.


Рис. 2.3


Код програми:

.include "8535def.inc"

.def Temp1=R16

.def M1=R17

.def M2=R18

.def M3=R19

.def M4=R20

.def Delay1=R21

.def Delay2=R22

.def Delay3=R23

.org 0ResetINT_0INT_1

;Опис переривань:_0:rcall Record_1:rcall Clear

;Налаштування портів вводу\виводу::ldi Temp1,0DDRA,Temp1DDRB,Temp1Temp1,0b00001111DDRC,Temp1Temp1,0b11111111DDRD,Temp1Temp1,0b11000000GIMSK,Temp1Temp1,low(RAMEND)SPL,Temp1Temp1,high(RAMEND)SPH,Temp1M1,1M2,2M3,3M4,4

;Головний код програми::clr Temp1PORTD,Temp1CheckMAIN

;Підпрограма перевірки коду::rcall ReadyTemp1,M1Error:rcall ReadyTemp1,M1ET1ER1:cp Temp1,M2Error:rcall ReadyTemp1,M2ET2ER2:cp Temp1,M3Error:rcall ReadyTemp1,M3ET3ER3:cp Temp1,M4ErrorShow

;Реалізація затримки::ldi Delay1,0x20Delay2,0xBFDelay3,0x02

:subi Delay1,1Delay2,1Delay2,1LOOP

;Підпрограма якщо код «ВІРНИЙ»::in Temp1,PortATemp1,0b00001111Temp1,1GO1 Temp1,2GO2 Temp1,3GO3 Temp1,4GO4 Delay

;Підпрограма якщо код «НЕ ВІРНИЙ»::ldi Temp1,8PORTD,Temp1DelayMAIN

;Мітки для передачі числа на вхід LPT:ldi Temp1, 0b00100000PortD, M1PortC, Temp1Show:ldi Temp1, 0b00110000PortD, M2PortC, Temp1Show:ldi Temp1, 0b01000000PortD, M3PortC, Temp1Show:ldi Temp1, 0b00000000PortD, M4PortC, Temp1Show

;Підпрограма зчитування клавіш::sbic PINA,0ROU11PINA,1ROU21PINA,2ROU31PINA,3ROU41PINA,4ROU51PINA,5ROU61PINA,6ROU71PINA,7ROU81PINB,1ROU91PINB,2ROU01Ready:ldi Temp1,1:ldi Temp1,2:ldi Temp1,3:ldi Temp1,4:ldi Temp1,5:ldi Temp1,6:ldi Temp1,7:ldi Temp1,8:ldi Temp1,9:ldi Temp1,0

;Підпрограма переривання INT_0, за допомогою якої змінюється стандартний час::rcall ReadyM1,Temp1:rcall ReadyTemp1,M1EY1EW1 :mov M2,Temp1:rcall ReadyTemp1,M1EY2EW2 :mov M3,Temp1:rcall ReadyTemp1,M2EY3EW3 :mov M4,Temp1

;Підпрограма переривання INT_1, скидання перевірки часу на початок::clr Temp1PORTD,Temp1MAIN

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

#include <windows.h>

#include "h.h"SetNewTime(WORD hour, WORD minutes);GetDigit(int num);GetDigit(int num){Adress = 890;(Adress, num);= 888;Inp32(Adress);

}SetNewTime(WORD hour, WORD minutes)

{st;(&st); // получаем текущее время(st.wMonth>3 && st.wMonth<11){.wHour = hour-3; // устанавливаем час

}{.wHour = hour-2; // устанавливаем час

}.wMinute = minutes; // и минуты(!SetSystemTime(&st)) // устанавливаем системное времяFALSE;TRUE;

}main()

{Address=889;hours, h_h, h_l, minutes, m_h, m_l;=h_h=h_l=minutes=m_h=m_l=0;<<"This program changes system time"<<endl;<<"Connect device to LPT"<<endl;<<"To exit press any key."<<endl;<<" "<<endl;(!kbhit())

{(h_h!=0 && h_l!=0 && m_h!=0 && m_l!=0);(Inp32(Address)){ 2: {h_l = GetDigit(2);;}3: {m_h = GetDigit(3);;}4: {m_l = GetDigit(4);;}'e': {return; break;}: {h_h = GetDigit(1);;}

}

}= h_h*10 +h_l;= m_h*10 + m_l;(hours, minutes);<< "System time is changed!"<<endl;

getch();

}


ВИСНОВКИ


Під час виконання даної курсової роботи набув досвіду роботи з портами вводу-виводу ПЕОМ, в даному випадку з LPT портом. Розроблена програма, яка реалізує контроль передачі даних з ОМК до ПК через паралельний порт LPT.

Стало зрозуміло, що LPT порт можна використовувати не тільки для підключення принтерів, сканерів та зовнішніх пристроїв зберігання даних, але й при правильній та продуманій реалізації ПЗ, спектр використання цього порта значно розширюється.




ЗМІСТ ВСТУП 1. ОПИС ПРЕДМЕТНОГО СЕРЕДОВИЩА 1.1Опис LPT порта 1.1.1 Інтерфейс Centronics і стандарт IEEE 1284 1.1.2 Розєми 1.1.3 Фізичний і

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ