Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антонов О.С., Хiхловська I.В. Обчислювальна тех...doc
Скачиваний:
15
Добавлен:
01.09.2019
Размер:
4.12 Mб
Скачать

10.3 Приклади реалізації простих вузлів телекомунікацій

10.3.1 Ініціалізація послідовного асинхронного адаптера rs-232-c

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

Для протоколу обміну даними, який застосовується у розділі 6.2, керувальне слово становить 1ЕН. Цей режим забезпечує довжину надсилання у бітах – 7 біт, два стопових біти та контроль на парність.

Для завдання нового значення швидкості обміну даними треба встановити старший біт керувального слова у 1 та вивести 80Н за адресою 3FBH. Після цього двома послідовними командами виведення треба завантажити подільник частоти. Молодший байт подільника завантажується у порт 3FBH, а старший – у порт 3F9H. Виберемо швидкість обміну 1200 Бод, якій відповідає подільник 96D = 60H. Перед початком роботи ініціалізується регістр керування перериваннями (порт 3F9H), якщо у програмі навіть не використовуються переривання від самого адаптера. Якщо переривання не потрібні, у порт записується нуль.

Для дозволу переривань необхідно встановити в 1 біти порту керування перериваннями 3F9H, відповідні тим перериванням, які треба опрацьовувати. Коли відбулося переривання, програма-опрацьовувач переривання повинна проаналізувати його причину за значенням вмісту порту ідентифікації переривання з адресою 3FАH.

Якщо водночас виникають декілька запитів на переривання, біт 0 регістру ідентифікації буде встановлено в 1. У такому разі перед завершенням опрацювань переривань треба знов прочитати регістр ідентифікації переривань і опрацювати наступне переривання. Процес повторюється доти, доки біт 0 регістру ідентифікації переривань не дорівнюватиме 0. На цьому ініціалізація завершується.

Нижче наведено фрагмент програми ініціалізації асинхронного адаптера на мові Асемблер-86.

MOV DX,3FBH ; Завантаження адреси керувального регістра у DX

MOV AL,80H ; Порт керування настроюється на забезпечення

; передавання подільника: D7=1, інші біти дорівнюють

; 0, керувальне слово дорівнює 80Н

OUT DX,AL ; Виведення керувального слова

MOV DX,3F8H ; Завантаження адреси порту 3F8H

; та

MOV AL,60H ; завантаження молодшого байта

OUT DX,AL ; подільника частоти

MOV DX,3F9H ; Завантаження адреси порту 3F9H

; та

MOV AL,00H ; завантаження старшого байта

OUT DX,AL ; подільника частоти

M3: MOV AL,1EН ; Завантаження керувального слова в AL

MOV DX,3FBH ; Завантаження адреси керувального регістра

OUT DX,AL ; Виведення керувального слова

MOV AL,00H ; Заборона переривань від RS-232-C

MOV DX,3F9H ;Завантаження адреси керувального регістра переривань

OUT DX,AL ; Виведення керувального слова

10.3.2 Фрагмент програми передавання даних через асинхронний адаптер rs-232-c

M1: MOV DX,3FDH ; Завантаження адреси регістра стану лінії

IN AL,DX ; Введення слова стану лінії

AND AL,20H ; Регістр зберігання даних є

JZ M1 ; порожній, D5=1?

MOV AL,41H ; Так, завантаження даного в AL

MOV DX,3F8H ; Завантаження адреси порту передавання даних

OUT DX,AL ; Виведення даних

NOP