Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
56
Добавлен:
02.05.2014
Размер:
1.08 Mб
Скачать

Использование асинхронного связного адаптера.

Для реализации интерфейса RS-232C корпорация IBM предоставляет пользователям асинхронный связной адаптер. В его качестве она использует интегральную схему UART типа 8250 фирмы Intel или других фирм. Этот адаптер способен передавать данные с различными скоростями - от 50 до 9600 бод. С помощью операционной системы или специальных программ пользователь может самостоятельно задавать скорость передачи двоичной информации, длину передаваемого сигнала, тип контроля по четности и число стоповых разрядов в символе.

Операционная система IBM PC поддерживает 2 порта коммуникации, поэтому в машине имеются 2 микросхемы. Их базовые адреса хранятся в ячейках 0040: 0000 для СОМ1 и 0040: 0002 для СОМ2. (Базовый адрес - это двухбайтовый адрес порта, который является младшим из группы адресов портов, дающих доступ к UART.) На всех машинах, кроме РСjr, СОМ1 имеет базовый адрес 3F8H, а СОМ2 - 2F8H. Для удобства мы в дальнейшем будем всегда нумеровать регистры 3FхH, но все сказанное в равной степени применимо и к регистрам 2FхH.

Микросхема 8250 (см. рис.1) имеет 10 программируемых однобайтовых регистров, с помощью которых управляется и контролируется порт коммуникации. Доступ к этим 10 регистрам осуществляется через семь портов с адресами 3F8H - 3FEH (или 2F8H - 2FEH) . В пяти случаях доступ к регистру через соответствующий порт зависит от того, как установлен бит 7 в регистре контроля линии, который является единственным регистром с адресом порта 3FBH. Вот эти регистры:

Адрес: Назначение: Обозн. рис.1: 3F8H (OUT, бит 7 = 0 в 3FBH) Регистр хранения передатчика THR 3F8H (IN, бит 7 = 0 в 3FBH) Регистр данных приемника RBR 3F8H (OUT, бит 7 = 1 в 3FBH) Делитель скорости обмена (млад.) DLL 3F9H (IN, бит 7 = 1 в 3FBH) Делитель скорости обмена (стар.) DLH 3F9H (OUT, бит 7 = 0 в 3FBH) Регистр разрешения прерывания IER.

Остальные регистры: 3FAH (IN) Регистр идентификации прерывания IIR 3FBH (OUT) Регистр управления линии LCR 3FCH (OUT) Регистр управления модемом MCR 3FDH (IN) Регистр статуса линии LSR 3FEH (IN) Регистр статуса модема MSR

Рис.1.

Функции блоков: DBB (Data Bus Buffer) - буфер шины данных, RCHR (Re- ceiver Shift Register) - регистр сдвига приемника, RT&C (Receiver Timing & Control) - синхронизация и управление приемом данных, BG (Baud Generator) - генератор бодовой частоты, TT&C (Transmitter Timing & Control) - синхронизация и управление передачей данных, TCHR (Transmitter Shift Register) - сдвиговый регистр приемника, MCL (Modem Control Logic) - логика управления модемом, ICR (Interrupt Control Logic) - логика управления прерываниями.

Расшифровка входных и выходных сигналов: D0/7 - шина данных 0..7 разр., +5V - шина питания +5 вольт, GND - шина питания 0 вольт ("земля"); CS0, CS1 - прямые входы выбора кристалла; -CS2 - инверсный вход выбора кристалла: выбор микросхемы происходит при совпадении высоких уровней CS0, CS1 и низкого уровня -CS2, при этом вырабатывается выходной сигнал CSOUT; -ADC - строб адреса: адрес дешифрируется при низком уровне ADC; DISTR, -DISTR - прямой и инверсный стробы чтения данных: данные читаются из 8250 при совпадении высокого уровня DISTR и низкого уровня -DISTR; DOSTR, -DOSTR - прямой и инверсный стробы записи данных в 8250; XTAL1, XTAL2 - входы для подключения внешнего генератора (к XTAL1) или кварцевого резонатора; A0, A1, A2 - входы адреса;

DDIS - выходной сигнал логики управления; SIN - вход данных приемника; BCLK - вход бодовой частоты приемника; BAUDOUT - выход бодовой частоты внутреннего делителя; SOUT - последовательный выход передатчика; OUT1, OUT2 - специальные выходы управления модема; INTRPT - выход прерывания. Остальные сигналы были рассмотрены выше.

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

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

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

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

Независимо от того, занимаемся мы вводом или выводом, как минимум, 4 регистра микросхемы 8250 должны быть инициализированы для операций обмена. Это регистры делителя скорости обмена, регистр контроля линии и регистр разрешения прерывания.

Инициализация скорости обмена.

Делитель скорости обмена - это число, на которое надо разделить частоту системных часов (1190000 Гц), чтобы получить желаемую скорость обмена. Чем больше делитель, тем меньше скорость обмена. Скорость обмена 300 бод и меньше требует двухбайтового числа для делителя. Старший байт посылается в 3F9H (или 2F9H) , а младший - в 3F8H (или 2F8H) . В обоих случаях бит 7 регистра управления линии должен быть установлен в 1 перед засылкой значений, в противном случае по этим двум адресам значения будут адресованы в другие регистры (см. выше). Вот некоторые значения, требуемые для обычных скоростей обмена:

Скорость обмена: Адрес 3F9H: Адрес 3F8H:

50 09H 00H

110 04H 17H

300 01H 80H

600 00H C0H

1200 00H 60H

1800 00H 40H

2400 00H 30H

3600 00H 20H

4800 00H 18H

9600 00H 0CH

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

Инициализация регистра контроля линии.

Значения битов регистра контроля линии, адрес порта которого равен 3FBH (или 2FBH) , могут быть следующими:

Биты: Назначение: 1-0 длина символа. 00 = 5 бит, 01 = 6 бит, 10 = 7 бит, 11 = 8 бит; 2 число стоп-битов. 0 = 1, 1 = 1, 5, если длина символов равна пяти, иначе -2; 3 четность: 1 = генерируется бит четности, 0 = нет; 4 тип четности: 0 = нечетная, 1 = четная; 5 фиксация четности: 0 = отменена; 1 = всегда 1, если бит 3 = 1 & бит 4 =0; или 1 = всегда 0, если бит 3 = 1 & бит 4 = 1; или 1 = нет четности, если бит 3 = 0; 6 установка перерыва. Вызывает вывод строки нулей в качестве сигнала отдаленной станции:

0 = запрещено, 1 = перерыв; 7 меняет адреса портов других регистров.

Обычно биты 5-7 сброшены в 0. Остальные описывают значения, определяемые протоколом обмена.

Регистр разрешения прерывания.

Даже если вы не используете прерывания, все равно нужно произвести запись в регистр разрешения прерывания, чтобы быть уверенным, что прерывания запрещены. Просто поместите в этот регистр 0. Регистр идентификации прерывания можно игнорирования.

Инициализация остальных регистров связана с модемами. Ясно, что модемы нужны только для связи с удаленными устройствами, а не для управления близлежащими, такими, как последовательный принтер. В [1, стр.] объяснено, как инициализировать регистр контроля модема.

В следующем примере на ассемблере используется базовый адрес COM1, после чего различные регистры инициализируются для скорости обмена 300 бод, семибитовых данных, четной четности и одного стоп-байта:

MOV DX, 3FBH

MOV AL, 80H

OUT DX, AL ;БИТ D7 ПОРТА 3FBH УСТАНОВИТЬ В 0

MOV DX, 3F9H

MOV AL, 1H

OUT DX, AL

DEC DX

MOV AL, 80H

OUT DX, AL ;ЗАГРУЗИТЬ ДЕЛИТЕЛЬ БОДОВОЙ ЧАСТОТЫ

MOV DX, 3FBH

MOV AL, 1AH

OUT DX, AL ;СТРУКТУРА ДАННЫХ

DEC DX

DEC DX

MOV AL, 0

OUT DX, AL ;ЗАПРЕТ ПРЕРЫВАНИЙ

Определение статуса коммуникационного порта.

Регистр статуса линии микросхемы UART 8250 определяет протокол связи. Этот регистр имеет адрес порта на 5 больше, чем базовый адрес данного канала. Обычно он постоянно просматривается в процессе коммуникационного обмена.

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

Значения битов этого регистра следующие:

Биты: 0 1 = байт данных получен; 1 1 = полученные данные были перезаписаны (предыдущий символ не был вовремя считан); 2 1 = ошибка четности (вероятно, из-за шума в линии); 3 1 = ошибка окружения (передача не синхронизирована); 4 1 = обнаружен перерыв (получена длинная строка единиц, индицирующая, что другая станция запрашивает конец передачи); 5 1 = регистр хранения передатчика пуст (в этот регистр должны помещаться передаваемые данные); 6 1 = регистр сдвига передатчика пуст (этот регистр получает данные из регистра хранения и преобразует их в последовательный вид); 7 1 = тайм-аут (устройство не связано с машиной).

Инициализация и управление модемом.

Имеется 6 линий, по которым модемы связываются с компьютером (усовершенствованные модели могут иметь добавочные линии по интерфейсу RS232) . Их названия, сокращения и функции приведены ниже:

От компьютера к модему:

Data Terminal Ready (DTR) Информирует модем, что компьютер включен (готовность компьютера) и готов к связи Request To Send (RTS) Информирует модем, что компьютер ожидает (запрос на посылку) посылки данных От модема к компьютеру:

Data Set Ready (DSR) Информирует компьютер, что модем включен (готовность модема) и готов Clear To Send (CTS) Информирует компьютер, что модем готов (готовность к посылке) начать передачу данных

Data Carrier Detect (DCD) Информирует компьютер, что модем связан с (обнаружен носитель данных) другим модемом

Ring Indicator (RI) Информирует компьютер, что по телефонной (индикатор звонка) линии, к которой присоединен модем, передается звонок

Сначала компьютер устанавливает сигнал DTR, а затем инструктирует модем связаться с удаленной станцией. После того как модем установил связь, он устанавливает сигнал DSR. Этот сигнал информирует компьютер, что модем готов к связи и в этот момент компьютер может установить сигнал RTS. И если модем ответит сигналом CTS, начнется передача. Две стандартные линии, по которым компьютер управляет модемом, доступны через регистр контроля модема микросхемы UART 8250. Этот регистр имеет адрес порта на 4 больше, чем базовый адрес используемого коммуникационного канала.

Значения его битов таковы:

биты 7-5 (всегда 0) 4 1 = выход UART замкнут на вход 3 добавочный пользователь назначен на вывод #2 2 добавочный пользователь назначен на вывод #1 1 1 = "запрос на посылку" активен 0 1 = "готовность компьютера" активна Обычно биты 0 и 1 регистра контроля модема установлены, а остальные - равны 0. Бит 2 равен 0, за исключением случаев, когда производитель модема предназначил его для специальных нужд. Бит 3 установлен только в случае, когда используются прерывания. Наконец, бит 4 предоставляет возможность тестирования коммуникационных программ без установления реальной связи. Выходной сигнал микросхемы UART подается на вход, как будто UART принимает последовательные данные. Это свойство можно применять для тестирования правильности работы самой микросхемы. Однако при использовании коммуникационных процедур прерывания 14H BIOS оно недоступно.

Четыре линии, по которым модем посылает информацию компьютеру, управляются регистром статуса модема. Этот регистр расположен по адресу порта на 6 больше, чем базовый адрес используемого коммуникационного адаптера. Значение его битов следующие:

Биты: 7 1 = DCD 6 1 = RI 5 1 = DSR 4 1 = CTS 3 1 = изменение в DCD 2 1 = изменение в RI 1 1 = изменение в DSR 0 1 = изменение в CTS

Методика.

Перед началом работы ТЩАТЕЛЬНО ознакомьтесь с теоретическим материалом, приведенном в разделе "Теория" (вызывается нажатием клавиш <Alt>+<T>) . После этого полезно попытаться ответить на контрольные вопросы, приведенные в соответствующем разделе (вызываются клавишами <Alt>+<Q>) .В зависимости от типа вопросов отвечать нужно либо путем выбора правильного ответа из подмножества приведенных ответов, нажимая для переключения варианта выбора (подсвеченный текст) на клавишу <Tab> и для выбора ответа - на клавишу <Enter>, либо путем ввода конкретного значения или слова, дающего верный ответ. При этом ведется подсчет верных и неверных ответов без показа итога. (Эти данные станут видимы на следующем этапе работы – когда Вы начнете создавать структурную схему установки). В случае неверного ответа раздается звуковой сигнал.

Для выполнения работы войдите в окно выполнения с помощью клавиш <Alt>+<E> или через основное меню (по F10) . На экране должно появиться изображение основных узлов исследуемой подсистемы ввода/вывода.

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

Для перехода по окнам ввода используется клавиша <Tab>. Названия сигналов приводите полностью и теми буквами, которые использованы в изображениях блоков (как правило, латинские). Если названия источников и приемников соединяемых цепей заданы по Вашему мнению правильно - нажмите <Enter>. Старайтесь не ошибаться, поскольку машина ведет подсчет сделанных Вами ошибок, суммируя их с ошибками, сделанными при ответах на вопросы.

Если структурная схема собрана полностью, на экране появится соответствующее сообщение, после чего полученную структурную схему можно перерисовать или распечатать для отчета и перейти в окно программирования нажатием клавиш <Shift>+<Tab>, затем <Enter>.

Основной задачей после набора структурной схемы является задача программирования реальной микросхемы 8250 на передачу какого-либо символа с заданными характеристиками (частота, количество бит, тип контроля, сам символ, - все эти параметры задаются преподавателем). Рекомендуемая частота передачи - 50 или 110 бод.

Программирование выполняется на ассемблере микропроцессора Intel 8086. При программировании используйте ТОЛЬКО НЕОБХОДИМЫЕ ВАМ КОМАНДЫ из следующего подмножества команд: MOV, IN, OUT, ADD, DEC, OR, AND, JNZ, SHR, JMP, TEST и различные конфигурации регистров A, B, C и D. Можно использовать НЕБОЛЬШОЕ ЧИСЛО МЕТОК, НО ТОЛЬКО В ВИДЕ ЦИФР (например, 4:). При программировании можно редактировать неверно набранные строки стандартными средствами клавиатуры IBM PC. Длина программы не должна превышать 40 команд.

Запрограммируйте вывод символа (по заданию преподавателя) через порт COM1. Если Вы решили, что программирование закончено, запустите программу, нажав одновременно клавиши <Shift>+<Tab>, а затем - когда текст "построить диаграмму" внизу станет более ярким - клавишу <Enter>. При этом с небольшой задержкой на экране появится временная диаграмма выходных сигналов RS- 232. Если диаграмма соответствует решаемой задаче, зарисуйте ее и приложите к отчету с интерпретацией событий в соответствии с программой. Возврат в окно программирования по клавише <Esc>.

Окончание работы - нажатием клавиш <Alt>+<F3>. Для справок по оформлению отчета и по литературе - см. добавочный раздел "Дополнение" (вызывается нажатием клавиш <Alt>+<A>) .

Завершение работы и выход из оболочки - по <Alt>+<X> ПОСЛЕ закрытия окон построения диаграмм и программирования.

Пример учебной программы.

Программа приведена для порта COM1:

MOV DX, 3FBH ;АДРЕС РЕГИСТРА КОНТРОЛЯ ЛИНИИ

MOV AL, 80H

OUT DX, AL

MOV DX, 3F9H ;СТАРШИЙ БАЙТ ДЕЛИТЕЛЯ ЧАСТОТЫ

MOV AL, 4H

OUT DX, AL

DEC DX ;МЛАДШИЙ БАЙТ ДЕЛИТЕЛЯ

MOV AL, 17H ;110 БОД

OUT DX, AL

MOV AL, 0FH

MOV DX, 3FBH

OUT DX, AL

MOV AL, 0

DEC DX

DEC DX ;РЕГИСТР ПРЕРЫВАНИЙ

OUT DX, AL ;ЗАПРЕТ ПРЕРЫВАНИЙ

MOV DX, 3F8H

ADD DX, 5 ;РЕГИСТ СТАТУСА ЛИНИИ 1: IN AL, DX

TEST AL, 20H

JNZ 2

JMP 1 ;ЖДАТЬ ГОТОВНОСТИ 2: MOV AL, 5AH ;ПЕРЕДАВАЕМЫЙ БАЙТ

MOV DX, 3F8H

OUT DX, AL ;ПЕРЕДАТЬ В ЛИНИЮ

Список контрольных вопросов с ответами.

  1. Для чего могут использоваться UART (универсальные асинхронные приемопередатчики)?

  • для организации режима ПДП

  • для сопряжения с периферийным оборудованием

  • для ввода аналоговых сигналов

  • для записи/чтения ОЗУ

  • в качестве контроллера прерываний

  1. Какова максимальная разрядность передаваемого символа в RS-232?

8

  1. Какова минимальная разрядность передаваемого символа в RS-232?

5

  1. Сколько адресуемых рабочих регистров в составе одной микросхемы 8250?

10

  1. Сколько адресных входов у микросхемы 8250?

3

  1. Чем определяется доступ к регистрам 3F9H, 3F8H делителя бодовой частоты?

  • битом D7 регистра управления линии

  • регистром режима

  • битами D0... D3 регистра статуса линии

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

  • битом D7 регистра управления модема

  1. Возможно ли задание приемной и передающей секциям микросхемы различных режимов работы?

да

  1. Какую функцию выполняет вывод SIN микросхемы 8250?

  • синхронизации приемника

  • ввода последовательных данных

  • синхронизации передатчика

  • синхронизации прерываний

  • синхронизации обращений к микросхеме

  1. Какую функцию выполняет вывод SOUT микросхемы 8250?

  • синхронизации передатчика

  • синхронизации выводимой информации

  • вывода последовательных данных

  • синхронизации прерываний

  • синхронизации обращений к микросхеме по записи

  1. Какую функцию выполняет вывод BAUDOUT микросхемы 8250?

  • синхронизации передатчика

  • синхронизации выводимой информации

  • вывода последовательных данных

  • вывода бодовой частоты

  • синхронизации "границ" выводимых символов

  1. Какую функцию выполняет вывод BCLK микросхемы 8250?

  • синхронизации приемника

  • синхронизации выводимой информации

  • ввода последовательных данных

  • синхронизации "границ" вводимых символов

  • синхронизации обращений к микросхеме

  1. Какую функцию выполняет вывод XTAL1 микросхемы 8250?

  • синхронизации приемника

  • синхронизации вводимой информации

  • ввода "внешней" опорной частоты

  • ввода последовательных данных

  • синхронизации обращений к микросхеме

  1. Какую функцию выполняет вывод DOSTR микросхемы 8250?

  • синхронизации приемника

  • синхронизации записываемой в 8250 информации

  • ввода сигнала стробирования

  • синхронизации читаемой из 8250 информации

  • ввода "внешней" опорной частоты

  1. Какую функцию выполняет вывод DISTR микросхемы 8250?

  • синхронизации приемника

  • синхронизации записываемой в 8250 информации

  • ввода сигнала стробирования

  • синхронизации читаемой из 8250 информации

  • синхронизации обращений к микросхеме

  1. Какую функцию выполняют выводы CS0, CS1, -CS2 микросхемы 8250?

  • синхронизации записываемой в 8250 информации

  • синхронизации обращений к микросхеме

  • ввода сигнала стробирования

  • синхронизации читаемой из 8250 информации

  • ввода "внешней" опорной частоты

  1. Какую функцию выполняет вывод MR микросхемы 8250?

  • синхронизации записываемой в 8250 информации

  • признака обращения к памяти

  • синхронизации читаемой из 8250 информации

  • сброса микросхемы

  • синхронизации обращений к микросхеме

  1. Какую функцию выполняет вывод -ADC микросхемы 8250?

  • синхронизации внутреннего делителя бодовой частоты

  • синхронизации записываемой информации

  • синхронизации адреса

  • признака прямого доступа к памяти

  • синхронизации читаемой информации

Рекомендации по программированию.

Программирование выполняйте на ассемблере микропроцессора Intel 8086 с использованием ТОЛЬКО СЛЕДУЮЩИХ КОМАНД: MOV, IN, OUT, ADD, DEC, AND, TEST, OR, SHR, JNZ, JMP и различных конфигураций регистров A, B, C и D. Можно использовать МЕТКИ В ВИДЕ ЦИФР (например, 1:). Длина программы не должна превышать 40 команд и не содержать комментариев. Переключение режимов "Текст программы" и "Построить диаграмму" - клавишами <Shift>+<Tab>, сама диаграмма снимается по нажатию клавиши <Enter>. Возврат в окно программирования - по <Esc>.

Дополнительная информация.

Требования к отчету по лабораторной работе.

Соседние файлы в папке Методические указания