Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы (лекции) (4 семестр).doc
Скачиваний:
11
Добавлен:
04.11.2018
Размер:
728.06 Кб
Скачать

Программирование последовательного порта

Изначально микросхема 8250 отвечает за программирование последовательного порта.

Для доступа к последовательному порту существует базовый адрес (в ячейках 0040:0000 для COM1 и 0040:0002 для COM2).

Для 0040 со смещением 1 – 1 порт.

Для 0040 со смещением 2 – 2 порт.

Базовый адрес для порт 1 – 3F8, 2F8.

Микросхема имеет 10 программируемых однобайтовых регистров, которые занимаются инициализацией и передачей данных.

3F8 – передает байт, если байт 7 в регистре 3FB равен 0. Из 3FB может читать байт. Регистр 3F8 является младшим делителем в скорости обмена при бите, установленном в регистре 3FB.

3F7 – ……………………..

3F9 – при установке бита 7 в 0 в 3FB – регистр разрешения прерывания.

3FА – регистр идентификации прерывания

3FВ – регистр управления линией

3FС – регистр управления модемом

3FD – регистр статуса линии

3FE – регистр статуса модема

Скорость обмена:

Делитель скорости – число, на которое нужно разделить частоту системных часов для получения скорости обмена

Частота системных часов – 100 190 000 Гц

Скорость обмена:

Минимальная – 110 бт\ с

Максимальная – 115- 200 бт\ с

……………………………………………………………………………………………………………

Для скорость 1200 – значения регистра 3F90.???????????

Регистр контроля линии

Биты 10 (один – ноль) задают длину символов. Можно закодировать 005……………………………….., 118……………….

Второй бит – количество стопоковых бит.

Если 0 – 1

Если 1 – 2

Бит четности:

Если 0 – генерировать

Если 0 – нет

Тип четности: 0 – нечетный, 1 – четный.

Фиксация четности заставляет бит четности быть либо 1, либо 0.

Установка перерыва – данный бит приводит к передаче строке нулей.

Бит 7 – меняет адреса ……………..

Регистр статуса линии

Установка бита 0 в 1 означает, что получен байт данных.

Бит 1 – установка в 1 означает, что поученные данные перезаписаны.

Бит 2 – установка в 1 означает, что произошла ошибка в четности

Бит 5 – установлен в 1, когда регистр хранения передатчика пуст

Бит 6 – установлен в 1, если регистр сдвига передатчика пуст

Физические линии:

  1. DTR – готовность компьютера

  2. RTS – запрос на посылку

  3. DSR – готовность модема

  4. CTS – готовность к посылке

  5. DCD – обнаружен носитель данных

  6. RI – индикатор звонка

Регистр статуса модема

Бит 0 – устанавливает в 1: изменение CTS

Бит 1 – устанавливает в 1: изменение в DSR

Бит 2 – устанавливает в 1: изменение в RI

Бит 3 – устанавливает в 1: изменение в DCD

Бит 4 – устанавливает в 1: устанавливает сигнал в CTS

Бит 5 – устанавливает в 1: устанавливает сигнал в DSR

Бит 6 – устанавливает в 1: устанавливает сигнал в RI

Бит 7 – устанавливает в 1: устанавливает сигнал в DCD

При чтении данного регистра значения обнуляются.

Регистр контроля модема

Бит 0 установлен в 1, если готовность компьютера активна

Бит 1 установлен в 1, если запрос на посылку активен

Бит 4 установлен в 1, если мы хотим ………………………..

Лекция №9

4 класса прерываний:

Биты, содержащиеся в регистре (адрес 3F2) 1, 2 содержат коды.

0 – изменения в регистре статуса модема

1 – регистр хранения прерывания датчика получен

1 0 – данные получены

0 1 – ошибка приема

Бит 0 установлен в 1, когда происходит событие.

Чтобы выбрать одно или несколько прерываний, нужно запрограммировать регистр прерывания (адрес 3F9).

Установка бита 0 в 1 говорит о том, что необходимое прерывание сгенерировано:

1 – ……….

2 – прерывание по ошибке

3 – прерывание при изменении регистра статуса модема

При чтении 3FA обнуляются.

Приоритеты:

  1. ошибка

  2. получение данных

  3. пустой буфер передатчика

  4. регистр изменения статуса модема

Устанавливаем вектор:

push ds ; помещение в стек

mov dx, offset IO_INT ; смещение

mov dx, seg IO_INT ; вектор

mov 01s, ax

mov al, 0b

mov ah, 25 ; 25 функция

int 21h

mov dx, 3F8h ; базовый адрес в dx

inc dx

mov ah, …..

out dx, al

pop ds

Затем обработка:

ID_INT proc far

NEXT_INT:

mov dx, 2F8h ;установили по приему

add dx, 2 ;и передаче

in al, dx

test al, 1Øb

inz TRANSMIT

RECEIVE:

ПРИЕМ

jmp another

TRANSMIT

…………..

ANOTHER:

mov dx, 3F8h

add dx, 2

in al, dx

test al, 1

jmp NEXT_INT

mov al, 20h

IRET:

Out 20h, al