Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uart.doc
Скачиваний:
2
Добавлен:
23.04.2019
Размер:
216.58 Кб
Скачать

2.2. Програмування мікросхеми uart 8250

Послідовний зв'язок настільки складний, що були розроблені спеціальні мікросхеми, що виконують роботу по формуванню і синхронізації рядків бітів, що складають послідовні дані. Такі мікросхеми називають універсальним асинхронним приймачем-передавачем (universal asynchronous receiver transmitter або UART). IBM PC використовує UART 8250 фірми Intel.

Операційна система підтримує 2 порти комунікації, тому в машині є 2 мікросхеми. Їх базові адреси зберігаються в комірках 0040:0000 для СОМ1 і 0040:0002 для COM2. (Базова адреса - це двобайтова адреса порту, яка є молодша із групи адрес портів, що дають доступ до UART.) На всіх машинах, крім PCjr, COM1 має базову адресу 3F8H, а COM2 - 2F8H; PCjr має свій внутрішній модем за адресою 3F8H, а COM1 - за адресою 2F8H. Для зручності ми надалі будемо завжди нумерувати регістри 3FxH, але все сказане в рівній мірі можна застосовувати і до регістрів 2FxH.

Мікросхема 8250 має 10 програмованих однобайтових регістрів, за допомогою яких керується і контролюється порт комунікації. Більшість з них займається ініціалізацією порту, процесом, в якому виникає багато ускладнень. Доступ до цих 10 регістрів здійснюється через сім адрес портів з номерами 3F8H - 3FEH (або 2F8H - 2FEH). У п'яти випадках регістр, до якого отримуємо доступ через даний порт, залежить від того, як встановлений біт 7 в регістрі контролю лінії, який є єдиним регістром з адресою порту 3FBH. Ось ці регістри:

3F8H (OUT, біт 7 = 0 в 3FBH) Регістр зберігання передавача

3F8H (IN, біт 7 = 0 в 3FBH) Регістр даних приймача

3F8H (OUT, біт 7 = 1 в 3FBH) Дільник швидкості обміну (молодший)

3F9H (IN, біт 7 = 1 в 3FBH) Дільник швидкості обміну (старший)

3F9H (OUT, біт 7 = 0 в 3FBH) Регістр дозволу переривання

3FAH (IN) Регістр ідентифікації переривання

3FBH (OUT) Регістр управління лінії

3FCH (OUT) Регістр управління модемом

3FDH (IN) Регістр статусу лінії

3FEH(IN) Регістр статусу модему

Із десяти регістрів тільки шість необхідні для простого послідовного зв'язку. Регістр зберігання передавача містить байт даних, які будуть надіслані [6.], а регістр даних приймача - останній отрийнятий байт даних [7.]. Регістри управління і статусу лінії ініціалізують і управляють лінією зв'язку, використовуючи швидкість обміну, що міститься у двох регістрах дільника швидкості обміну [2.]. З чотирьох регістрів, що залишилися, регістри управління і статусу модему необхідні тільки для зв'язку через модем [5.], а два регістри, пов'язаних з перериваннями - тільки в процедурах, керованих перериваннями [8. ].

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]