Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_2011.doc
Скачиваний:
64
Добавлен:
09.12.2018
Размер:
1.15 Mб
Скачать
            1. Пример программы инициализации порта

Программа устанавливает следующие параметры порта:

  • скорость передачи 1200бит/с,

  • количество бит в сигнале -7,

  • 2 стоп-бита,

  • бит контроля,

  • контроль на четность,

  • запет прерываний

В программе используются:

  • регистр управления.

  • регистры делителя скорости,

  • регистр разрешения прерывания com-порта.

mov ax, 40h

mov es, ax ; начало сегмента памяти с базовым адресом com-порта в es

mov dx, es:[0] ;базовый адрес com-порта в dx

add dx, 3 ;получаем адрес регистра управления

mov al, 10000000b

out dx, al ; 7-й бит регистра установим в состояние 1

dec dx

dec dx ;получили адрес регистра делителя скорости (старший)

mov al, 0

out dx, al ;записываем 0 в делитель скорости

dec dx ; вычисляем адрес порта делителя скорости (младший байт)

mov al, 60h ; загружаем в регистр

out dx, al ;60h (скорость 1200 бит/с)

; установка регистра управления

mov al, 0

or al, 10b ; 7 бит

or al, 100b ; 2 стоп-бита

or al, 1000b ; бит контроля

or al, 10000b ; четность

add dx, 3 ;вычисляем адрес регистра управления

out dx, al ; загрузка параметров в регистр управления

; запрет прерываний

dec dx

dec dx ;вычисляем адрес регистра разрешения прерываний

mov al, 0 ; в al загружаем 0

out dx, al ; установка запрета прерываний

  1. Регистр статуса линии (порта)

Выполняет следующие функции:

  • фиксирует аварийные ситуации в порту,

  • момент прихода байта из линии связи,

  • момент готовности передавать очередной байт

Бит 0 – байт данных получен; порт готов к приему

Бит 1 – предыдущий символ не был вовремя считан (переполнение)

Бит 2 – ошибка четности

Бит 3 – передача не синхронизирована (ошибка по стоп-биту)

Бит 4 – обрыв канала, получена длинная последовательность единиц

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

Бит 6 – регистр сдвига передатчика пуст (конец передачи)

Бит 7 – фиксация тайм-аута, устройство не связано с машиной

Биты 4, 3, 2, 1 несут функцию фиксации аварийной ситуации

Работа порта без использования механизма прерываний

            1. Получение данных

Программа обязана постоянно следить и проверять регистр статуса порта (линии). Проверяется при этом нулевой бит.

Если он равен «1», программа должна немедленно читать байт из регистра приема (иначе он будет затерт следующей принимаемой информацией). Если бит равен «0», то байт не принят портом, и процессор должен выполнять следующую команду программы.

Передача данных

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

Чтобы узнать, свободен регистр хранения или нет, следует проверить 5-й бит в регистре статуса линии. Если он равен «1», то в регистр хранения можно загрузить очередной байт. Если -- «0», то следует подождать освобождения регистра хранения.

Передача байта происходит автоматически.

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