Справочник программиста на персональном компьютере фирмы IBM. Ввод/вывод
Страница 2. Программирование микросхемы UART 8250



     7.1.1 Программирование микросхемы UART 8250.


   Последовательная  связь настолько сложна, что были разработаны
специальные  микросхемы,  выполняющие  работу  по  формированию и
синхронизации строк битов, составляющих последовательные  данные.
Такие  микросхемы  называют  универсальным  асинхронным  приемни-
ком-передатчиком (universal asynchronous receiver transmitter или
UART). IBM PC использует UART 8250 фирмы Intel.
   Операционная система поддерживает 2 порта коммуникации, поэто-
му  в машине имеются 2 микросхемы.  Их базовые адреса хранятся  в
ячейке 0040:0000 для COM1 и  0040:0002  для  COM2. (Базовый адрес
это  2-хбайтовый адрес порта, который является младшим из  группы
адресов портов, дающих доступ к UART.) На всех машинах кроме PCjr
COM1  имеет  базовый адрес 3F8H, а COM2 - 2F8H; PCjr  имеет  свой
внутренний модем по  адресу  3F8H,  а  COM1 - по адресу 3F8H. Для
удобства,  мы в дальнейшем будем всегда нумеровать регистры 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)                      Регистр статуса модема

   Из десяти регистров только шесть необходимы для простой после-
довательной связи.  Регистр  хранения  передатчика  содержит байт
данных, которые будут посланы [7.1.6], а регистр данных приемника
- последний полученный байт данных [7.1.7]. Регистры управления и
статуса линии инициализируют и управляют линией связи,  используя
скорость обмена, содержащуюся в  двух регистрах делителя скорости
обмена [7.1.2]. Из оставшихся четырех регистров регистры управле-
ния и статуса  модема  используются  только для связи через модем
[7.1.5],  а  два регистра, связанных с прерываниями  используются
только в процедурах, управляемых прерываниями [7.1.8].
   Прерывания используются при связи в целях эффективности. Обыч-
ная коммуникационная процедура непрерывно проверяет регистр  ста-
туса линии, ожидая вводимого символа или указаниия, что все гото-
во  для  передачи следующего байта данных.   Поскольку  процессор
намного быстрее, чем обычные скорости  с которыми передаются пос-
ледовательные данные, то этот метод напрасно расходует процессор-
ное время, которое может использоваться для обработки поступающих
или  передаваемых данных.  По этой причине микросхема 8250  может
быть установлена в  режим,  вызывающий  прерывание  при появлении
символа,  возникновении ошибки и т.п.  Это прерывание моментально
вызовет процедуру Вашей программы, которая, скажем, будет переда-
вать следующий символ из коммуникационного буфера.

 
« Предыдущая статья   Следующая статья »