Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Паралельні інтерфейси Centronics і LPT-порт

Реферат Паралельні інтерфейси Centronics і LPT-порт





но стало 8-ми розрядним. Ця операція змістом не суперечить, тому що наприклад, що 23 руб. так і 00023 руб. - Одне і теж. p> Ну що, мозок опух поки прочитали? Зараз стане зрозуміліше. Давайте в регістр Data запишемо число 245. Пишемо код:

int Address = 888;

int data = 245;

Out32 (Address, data);

Знову переводимо 245 в двійкову систему числення і справа на ліво записуємо розряди числа у відповідні біти регістра. У результаті отримаємо, що на висновках LPT порту під номерами 2,4,6-9 присутня напруга +5 В, на висновках 3,5 нуль.


В 

Ну що, тепер я думаю, з записом даних в регістр Data ми розібралися. Треба відзначити, що діапазон десяткових чисел, які можна записати в регістр Data лежить в межах від 0 до 255 . Регістр він у нас 8-ми розрядний, значить максимальне число комбінації 0 і 1 на його висновках становить 2 8 -1 = 256-1 = 255.

Читання даних


Тепер давайте отримаємо дані з порту, а саме з його регістра Data, до нас в програму. Ми хоти дізнатися, на яких висновках регістра Data зараз високий рівень напруги, а на яких низький. Пам'ятайте, вище ми записали в порт число 245? Давайте його зараз отримаємо з порту. Пишемо код:

int Address = 888;

int data;

data = Inp32 (Address);

Inp32 це функція для читання даних з порту бібліотеки inpout32.dll. Єдиним параметром для неї є адреса того регістра, звідки ми хочемо прочитати дані. На виході вона повертає десяткове число, відповідне поточного вмісту регістра. Виконавши цей код, мінлива data буде містити число 245. Що це означає? Щоб розібратися, переводимо число 245 з десяткової в двійкову і сміливо можемо сказати що на висновках порту 2,4,6-9 зараз +5 В а на висновках 3,5 0 В. (див. рис. вище)

Як я вже згадав вище, в регістр Data дані записати може і зовнішній пристрій. Однак розгляд цього питання поки залишимо, тому що це зажадає зовнішніх джерел живлення. Спочатку, давайте повністю розберемося з базовими операціями. br/>В 

Запис/читання даних в регістр Control


Тепер по керуємо регістром Control. Він односпрямований, дані в нього може записати тільки наша програма. Зверніть увагу на кілька особливостей цього регістра. По-перше, про містить всього чотири робочих виводу. Значить в нього можна записати число в діапазоні від 0 до 2 4 -1 = 16-1 = 15. По-друге, він має дуже неприємну особливість: деякі з його висновків інвертовані, тобто якщо Ви на цей висновок пишете 1, то на ній встановлюється 0. І навпаки, читаєте 1, а насправді там 0. Тому, значення записуваних даних і читаних дані не зовсім очевидні. Для розбору необхідно просто спробувати писати в регістр різні дані і дивитися, що виходить. Наведу приклад запису числа в регістр Control. Пишемо код:

int Address = 890;// адреса регістра Control

int data = 10;

Out32 (Address, data);

І приклад читання:

int Address = 890;// адреса регістра Control

int data;

data = Inp32 (Address);


Запис/читання даних в регістр Status


Нарешті, дісталися до регістра Status. Він односпрямований, дані в нього може записати тільки зовнішнє пристрій , тобто ми в програмі можемо тільки читати вміст цього регістра. Належні дані з Status, і перевівши їх у двійкове число, відразу досить важко зрозуміти що ж реально коїться з напруженнями на виходах цього регістра. По-перше, він теж має інвертовані висновки, а по-друге робочими є біти під номерами 4-7, а 0-3 не використовуються, і отже число записується досить хитро. Щоб розібратися, краще просто кілька разів робити читання при різних даних у регістрі.

Виникає питання, а як ці дані на ньому встановити? Досить просто. В якості зовнішнього пристрою, поки, будете виступати Ви. Виконайте такий код. p> int Address = 889;// адреса регістра Status

int data;

data = Inp32 (Address);

Ви отримаєте деякий число. Тепер візьміть провідник і з'єднайте їм будь-який з земляних висновків порту (18-25) з яким-небудь висновком регістра Status (10-13, 15), наприклад з десятим. І знову виконайте читання. Ви отримаєте інше число. Приберіть провідник. Прочитавши, отримуєте вихідне число. Як це працює? Початково, на всіх висновках цього регістра знаходиться високий рівень напруги +5 В. Коли ми з'єднали один з його висновків із землею, то на ньому, відповідно, напруга стало рівним нулю, тобто логічний нуль. Тепер двійковим даними в регістрі відповідає інше десяткове число. Можна спробувати замикати і інші висновки регістра Status на землю, замикати відразу декілька. Щоразу при читанні вийде різний результат.

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


Назад | сторінка 7 з 8 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Аналіз даних за допомогою технології Data Mining
  • Реферат на тему: Технології аналізу даних (Text Mining, Data Mining)
  • Реферат на тему: Data mining
  • Реферат на тему: Опробування знімків Landsat Climate Data Record
  • Реферат на тему: Creating a Data Mart for an Online E-Book Store