Реферат: Программирование - интерфейс RS-232

<span Courier New"">              ПРОГРАММИРОВАНИЕПОСЛЕДОВАТЕЛЬНОГО ПОРТА

<span Courier New"">

<span Courier New"">    Последовательный порт в системе MS-DOSобеспечивает  вход  во

<span Courier New"">внешний  мир. Основной  задачейпоследовательного порта является

<span Courier New"">направление иполучение данных по шине в виде потока  битов.  (В

<span Courier New"">противоположностьпараллельному порту,  в которомвнутренний байт

<span Courier New"">передаетсяцеликом). Вы можете использовать последовательный порт

<span Courier New"">для  подключения к системе «мыши»,  направления данных на принтер

<span Courier New"">или дляустановления автоматической телефонной связи с использо-

<span Courier New"">ванием модема.Хотя системы MS-DOS не нуждаются для работы в пос-

<span Courier New"">ледовательномпорте,  эти порты стали стандартнойпериферией сис-

<span Courier New"">темы.

<span Courier New"">    Последовательный порт в системах MS-DOSспособен поддерживать

<span Courier New"">стандартасинхронной передача данных RS-232C. Хотя даже посредс-

<span Courier New"">твом ROM-BIOS,стандартной части всех систем MS-DOS, MS -DOS сама

<span Courier New"">по  себе включает  некоторую  поддержку программирования портов

<span Courier New"">RS-232C(например,  прерывание номер 14h), этаподдержка не отве-

<span Courier New"">чает требованиямвысокоскоростной связи.  Если Вы хотитевключить

<span Courier New"">в свою прикладнуюпрограмму  эффективные  возможности последова-

<span Courier New"">тельнойсвязи,  Вы должны осуществлять доступ кпоследовательному

<span Courier New"">порту нааппаратном уровне.  В этой главепоказано, как это дела-

<span Courier New"">ется.

<span Courier New"">

<span Courier New"">

<span Courier New"">            Основы асинхронной последовательнойсвязи

<span Courier New"">

<span Courier New"">    Говоря о передаче данных,  мы интересуемся  передачей байтов

<span Courier New"">данных от одногоустройства к другому, например, от персонального

<span Courier New"">компьютера кмодему или к  последовательному  принтеру. Если  мы

<span Courier New"">имеем  восемь линий между двумя устройствами,  то мы можем назна-

<span Courier New"">чить каждой линиибит и послать сразу один байт данных. Это будет

<span Courier New"">параллельная  передача. Таким образом работает параллельный порт

<span Courier New"">персональногокомпьютера, кроме того, в дополнение к восьми лини-

<span Courier New"">ям  данных имеются другие сигнальные линии,  оказывающие помощь в

<span Courier New"">передаче данных.

<span Courier New"">    С другой стороны,  если мы имеем одну линию для передачи сиг-

<span Courier New"">налов, тонеобходимо посылать каждый байт данных последовательно,

<span Courier New"">по одномубиту.  Более того,  мы может посылать данные синхронно,

<span Courier New"">такимобразом,  что каждый байт посылаетсяв  ранее определенное

<span Courier New"">время (скажем,один байт каждые х секунд), или асинхронно со ско-

<span Courier New"">ростью, которуюпредварительно определять необязательно.

<span Courier New"">    Последовательная связь  дешевле, чем  параллельная,  так как

<span Courier New"">требует меньшелиний передачи данных — минимум две для двусторон-

<span Courier New"">ней связи. Крометого режим асинхронной передачи оказывает значи-

<span Courier New"">тельно меньшеевоздействие на аппаратуру ввиду того, что не тре-

<span Courier New"">буется  дополнительное  специальное оборудование  для  поддержки

<span Courier New"">синхронизациимежду передатчиком и приемником.

<span Courier New"">    Таким образом,  асинхронная последовательная  связь является

<span Courier New"">предпочтительнымрешением ввиду низкой стоимости и простоты  ис-

<span Courier New"">пользуемых аппаратныхсредств. Конечно, в этом режиме передачи мы

<span Courier New"">должныпреобразовывать каждый байт данных в серию битов и  указы-

<span Courier New"">вать приемникуначало и конец каждого байта.  На рисунке8-1 про-

<span Courier New"">иллюстрированаконцепция асинхронной последовательной связи.

<span Courier New"">    Предположим, что мы умеем преобразовыватькаждый байт в поток

<span Courier New"">единиц инулей,  то есть биты,  которые могут быть переданы через

<span Courier New"">среду связи(например,  телефонную линию).  В самом деле, универ-

<span Courier New"">сальныйасинхронный приемопередатчик (UART), как мы увидим в сле-

<span Courier New"">дующемразделе,  выполняет точно такую жефункцию.  Обычно,  в то

<span Courier New"">время как линиянаходится в режиме ожидания, для демонстрации то-

<span Courier New"">го, что линия впорядке, по ней передается единица, обозначая не-

<span Courier New"">занятость линии.С другой стороны, когда линия находится в состо-

<span Courier New";mso-fareast-font-family: Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:RU;mso-fareast-language: EN-US;mso-bidi-language:AR-SA">

<span Courier New"">

<span Courier New""> ┌ ─ ─ ─ ── ─ ─ ─ ─ ─ ─ ─ ─ ── ─ ─ ─ ─ ─ ─ ─ ─ ── ─ ─ ─  ┐

<span Courier New"">                                Восстанавливается один байт

<span Courier New""> │                               └  7 6  5  4 3  2  2  1┘└──┐

<span Courier New"">   ┌───Принимается одинсимвол────┐└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘┌─┐|

<span Courier New""> │ |A||B||7||6||5||4||3||1||0||C| ^  ^  ^ ^  ^  ^ ^  ^    ||

<span Courier New"">-->└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘┌─────┬─────────┬─────┐  |─┘└┐

<span Courier New"">┌──────────────────────────────────|  D |         |     | |   |

<span Courier New"">|│    от модема                    └─────┴─────────┴─────┘  |───|

<span Courier New"">|  UART на приемном конце             скорость в бодах      |  |

<span Courier New"">|└ ── ─ ─ ─ ─ ─ ─ ─ ─ ── ─ ─ ─ ─ ─ ─ ─ ─ ── ─ ─ ─ ─ ─ ─ ─|   |

<span Courier New"">|                                                          |───|

<span Courier New"">| ┌───────┐                                                |   |

<span Courier New"">└──|       |──┐                                            |───|

<span Courier New"">  └───────┘  │                                     Принимающий

<span Courier New"">              │        Телефонная линия                 компьютер

<span Courier New"">             ┌┼┐___________________________┌─┐

<span Courier New"">             └─┘      <--                  └┼┘

<span Courier New"">                                           │

<span Courier New"">                                           │

<span Courier New"">                                           │

<span Courier New"">                                            │      ┌───────┐

<span Courier New"">                                           └───────| модем|───|

<span Courier New"">     ┌────────┐                                   └───────┘   |

<span Courier New"">      │        │                                               |

<span Courier New"">      │  PC   │                                                |

<span Courier New"">  ┌──┴────────┴──┐                                             |

<span Courier New"">   │              │                                             |

<span Courier New"">  └┐┌────────────┘                                             v

<span Courier New"">    || ┌ ─ ─ ─ ─ ─ ─ ─ ── ─ ─ ─ ─ ─ ─ ─ ─ ── ─ ─ ─ ─ ─ ─ ───┐

<span Courier New"">    || │ ┌────────Байт───────────┐

<span Courier New"">    ||     7  6  5 4  3  2 2  1                              |

<span Courier New"">    |└──┘ └─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘┌───Посылаемый  один символ──┐

<span Courier New"">    └───┐                          |A||B||7||6||5||4||3||1||0||C|

<span Courier New"">          ┌─────┬─────────┬─────┐└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘

<span Courier New"">        | |     |         | D |──────────────────────────────┘

<span Courier New"">          └─────┴─────────┴─────┘         к модему -->         |

<span Courier New"">        | скорость в бодах   UART впоследовательном адаптере PC

<span Courier New"">        └ ─ ─ ─ ── ─ ─ ─ ─── ─ ─ ── ─ ─ ─ ─ ─ ─ ─ ─ ── ─ ─ ─ ┘

<span Courier New"">        A-стоп; B-четность; C-начало;D-сдвиговый регистр

<span Courier New"">янии   логического нуля,  говорится,  что она  стоит  в режиме

<span Courier New"">выдерживанияинтервалов. Таким образом, логические единица и ноль

<span Courier New"">рассматриваются,соответственно, как MARK и SPACE.

<span Courier New"">

<span Courier New"">          Рис.8-1. Асинхронная последовательнаясвязь.

<span Courier New"">

<span Courier New"">

<span Courier New"">    В асинхронной  связи изменение условия состояния линии сMARK

<span Courier New"">на SPACE означаетначало символа (смотри рисунок 8-2).  Этоназы-

<span Courier New"">вается стартовымбитом. За стартовым битом следует комбинация би-

<span Courier New"">тов,  представляющая символ, и затем бит контролячетности. Нако-

<span Courier New"">нец,   линия  переходит   в  состояние ожидания  MARK,  которая

<span Courier New"">представляетсобой стоповый бит и означает конец текущего симво-

<span Courier New"">ла.  Число битов, используемых для представлениясимвола, называ-

<span Courier New"">ется длиной словаи обычно бывает равно семи  или  восьми. Конт-

<span Courier New"">рольный  бит используется для выполнения элементарнойпроверки на

<span Courier New"">наличие ошибки.

<span Courier New"">

<span Courier New"">            <---------     Направление передачи

<span Courier New"">Линия                                     Линиявозвращается в

<span Courier New"">свободна                                   свободноесостояние

<span Courier New"">        A

<span Courier New"">B────┐ ┌ ─ ┬ ─ ┬ ─ ┬ ─ ┬─ ┬ ─ ┬ ─ ┬ ─ ┬ ─┬───┬───────┐  ┌ ─ ─

<span Courier New"">      │ │ 0   1   2   3   4  5   6   7    │           │

<span Courier New"">C ─ ─└──┘ ─ ┴ ─ ┴ ─ ┴─ ┴ ─ ┴ ─ ┴ ─ ┴ ─ ┴─ ┴ ─ ┴ ─ ─ ─ └──┘─ ─

<span Courier New"">       ^└──────── 7 или 8 битданных ───┘ ^  ^           ^

<span Courier New"">   Стартовый                       бит четности│   Начало другого

<span Courier New"">     бит                                      │      символа

<span Courier New"">                                        битстоповый

<span Courier New"">                Время ----->

<span Courier New"">

<span Courier New"">          A-длительность 1 бита; B-MARK или 1;C-SPACE или 0

<span Courier New"">

<span Courier New"">        Рис.8-2. Представление васинхронной  последовательной

<span Courier New"">                   связи формата одиночногосимвола

<span Courier New"">

<span Courier New"">

<span Courier New"">    Как передатчик  (или приемник) узнают о длительности каждого

<span Courier New"">бита?  Действительно,  и передатчик, и приемник должны знать его

<span Courier New"">длительность илидетектирование битов будет невозможно. Длитель-

<span Courier New"">ность каждогобита определяется генераторами тактовых  импульсов

<span Courier New"">приемника ипередатчика. Отметим, однако, что генераторы в прием-

<span Courier New"">нике ипередатчике должны иметь одну и ту же частоту, но не тре-

<span Courier New"">буется, чтобы онибыли синхронизированы. Выбор частоты генератора

<span Courier New"">зависит отскорости передачи в бодах,  котораяозначает число из-

<span Courier New"">менений состояниялинии каждую секунду. Номинально тактовая час-

<span Courier New"">тота«16-кратная скорость передачи в бодах» означает,  что линия

<span Courier New"">проверяется  достаточно часто для надежного распознаваниястарто-

<span Courier New"">вого бита.

<span Courier New"">    Существует одно  обычное состояние линии,  которое иногда ис-

<span Courier New"">пользуется дляпривлечения внимания приемника. Нормальным состоя-

<span Courier New"">нием  линии является  MARK (или 1) и началосимвола определяется

<span Courier New"">переходом SPACE(0). Если линия находится в состоянии SPACE в те-

<span Courier New"">чение периодавремени большем,  чем время,  которое она затратила

<span Courier New"">бы на получениевсех битов символа,  тогда мы говорим,что насту-

<span Courier New"">пило  состояние BREAK.  В  кодах ASCII отсутствует представление

<span Courier New"">BREAK — этоозначает,  что линия  «умерла»  на непродолжительный

<span Courier New"">промежутоквремени, который составляет BREAK.

<span Courier New"">

<span Courier New"">

<span Courier New"">            Контроль по четности и обнаружениеошибок

<span Courier New"">

<span Courier New"">    Ранее мы упоминали, что бит контроля четностиполезен для об-

<span Courier New"">наружения  ошибок. Например,  если выбрана проверкана четность,

<span Courier New"">этот битустанавливается таким образом,  что общеечисло единиц в

<span Courier New"">текущем  слове является четным (такая же логика используется для

<span Courier New"">проверки нанечетность).  В приемнике четностьвычисляется заново

<span Courier New"">и сравнивается сбитом контроля четности.  Если они неравны,  то

<span Courier New"">приемниксообщает,  что имеет место ошибкачетности.  Главный не-

<span Courier New"">достатокобнаружения ошибки посредством проверки на четность зак-

<span Courier New"">лючается втом,  что можно только обнаружить ошибки,которые вли-

<span Courier New"">яют на одинединственный бит.  Например,  битовая комбинация 0100

<span Courier New"">0001 0 (ASCIIA),  переданная восемью битами спроверкой на  чет-

<span Courier New"">ность, можетизмениться (скажем, из-за шума в линии) на 0100 01110

<span Courier New"">(ASCII G), однакоприемник  не  обнаружит ошибку, так как провер-

<span Courier New"">ка на четностьвыполняется.

<span Courier New"">

<span Courier New"">

<span Courier New"">            Связь с использованием стандартаRS-232C.

<span Courier New"">

<span Courier New"">    Ранее мы упоминали  о  передаче по телефонной линии единиц и

<span Courier New"">нулей.   Несмотря на то,  что в персональном компьютере мы  пред-

<span Courier New"">ставляем единицыи нули посредством уровней напряжения, сигналы,

<span Courier New"">передаваемые потелефонной линии обычно являются тонами различной

<span Courier New"">частоты.  Устройство, которое находится между аппаратурой персо-

<span Courier New"">нальногокомпьютера и передающей линией и делает возможной  пере-

<span Courier New"">дачу данных,   называется модемом(модулятор/демодулятор).  Модем

<span Courier New"">можетпреобразовывать информацию в представление «напряжение/нет

<span Courier New»">напряжения"цифровых схем и обратно,  а так жеаналоговые сигналы

<span Courier New"">(например,  тоны), предназначенные для передачи потелефонной ли-

<span Courier New"">нии.  Стандарты, такие как RS-232C (выдвинутыйАссоциацией элект-

<span Courier New"">роннойпромышленности,  EIA),  описывают метод обмена информацией

<span Courier New"">между  модемом (или,  в  соответствии с терминологией ассоциации

<span Courier New"">EIA,  «аппаратура передачи данных,  DCE») и связной  аппаратурой

<span Courier New"">персонального  компьютера (или  «оконечная  аппаратура обработки

<span Courier New»">данных,  DTE"). Модем может работать в двухрежимах: полудуплекс-

<span Courier New"">ном  и дуплексном.  В полудуплексномрежиме модем может осущест-

<span Courier New"">влять передачутолько в одном направлении в один промежуток вре-

<span Courier New"">мени,   в  то   время   как  при  работе  в дуплексном  режиме

<span Courier New"">осуществляетсянезависимая двухсторонняя связь. Стандарт RS-232C

<span Courier New"">обеспечиваетуправление такими сигналами, как «запрос-на-передачу

<span Courier New»">(RTS)" и«открыт-для -передачи (CTS)», которые могут быть исполь-

<span Courier New"">зованы  для координации процесса передачи и приемаданных. Термин

<span Courier New"">«квитированиеустановления связи» используется для описания коор-

<span Courier New"">динации приема ипередачи сигналов.  Как показано нарисунке 8-3,

<span Courier New"">стандарт RS-232Cсоответствует кабелю и соединителям, используе-

<span Courier New"">мым для связиперсонального компьютера и модема.

<span Courier New"">    Несмотря на то, что мы использовали модем в качестве примера

<span Courier New"">аппаратурыпередачи данных (DCE),  другиеустройства,  такие  как

<span Courier New"">«мышь»или принтер с соответствующей схемой, также могут обмени-

<span Courier New"">ваться данными сперсональным компьютером  черезпоследовательный

<span Courier New"">порт.  Таким образом, в этой главе все упоминания омодеме прием-

<span Courier New"">лемы в равнойстепени как к последовательному принтеру так  и  к

<span Courier New"">последовательной«мыши».

<span Courier New";mso-fareast-font-family: Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:RU;mso-fareast-language: EN-US;mso-bidi-language:AR-SA">

<span Courier New"">

<span Courier New"">          ┌ ─ ─ ── ─ ─ ─ ─ ─ ─ ─ ─ ── ─ ─  ─ ── ─ ─ ┐

<span Courier New"">           ОАОД  ┌─────   Номер контакта──────┐   DCE

<span Courier New"">          | ┌─────┐                         ┌─────┐  |

<span Courier New"">             |   2|─────────────ПД───────────|2   |

<span Courier New"">          | |   3|──────────────П───────────|3   | |

<span Courier New"">             |   4|─────────────ЗП───────────|4   |

<span Courier New"">          | |   5|────────────ОДП───────────|5   | |

<span Courier New"">             |   6|────────────ГПД───────────|6   |         к

<span Courier New"">          | |┌──7|───────────Общий──────────|7──┐|  телефонной

<span Courier New"">             |   8|───────────ДСПЛ───────────|8   |       линии

<span Courier New"">          | |  20|────────────ТДГ───────────|20   | |        ^

<span Courier New"">             |  22|─────────────RI───────────|22   |          |

<span Courier New"">          | |    .|                          | .   | |────┐  |

<span Courier New"">             |    .|                          | .   |      |   |

<span Courier New"">        ┌─|  |   .|                          |.   | |    |   |

<span Courier New"">RS ---> |   └─────┘                          └─────┘       |  |

<span Courier New"">        | └ ─ ─ ── ─ ─ ─ ─ ─ ─ ─ ─ ── ─ ─  ─ ── ─ ─ ┘    |   |

<span Courier New"">   ┌───┴────┐                                             |   |

<span Courier New"">    │        │                                          |--|   |

<span Courier New"">    │       │                                          |   ---|

<span Courier New""> ┌──┴────────┴──┐                                     ┌─┴───┴─┐

<span Courier New""> │              │                                      |       |

<span Courier New""> └──────────────┘                                     └───────┘

<span Courier New"">    PC или ОАОД                                          Модемил

<span Courier New"">

<span Courier New"">     ОАОД-оконечная аппаратура обработкиданных;RS-кабельRS-232C;

<span Courier New"">     ПД — передача данных; П-прием данных; ЗП-запрос на передачу;

<span Courier New"">     ОДП — открыт для передачи; ГПД — готов кпередаче данных;

<span Courier New"">     ДСПЛ — детектор сигнала приемной линии;ТДГ -терминал данных

<span Courier New"">     готов; АПД — или аппаратура передачи данных

<span Courier New"">

<span Courier New"">                          Рис.8-3. СвязьRS-232C.

<span Courier New"">

<span Courier New"">

<span Courier New"">              Управление потоком с помощьюXON/XOFF

<span Courier New"">

<span Courier New"">    В дополнение к квитированию  установления связи  посредством

<span Courier New"">аппаратныхсигналов RTS/CTS,  для достиженияуправления потоком с

<span Courier New"">использованиемпрограммного обеспечения применяются  специальные

<span Courier New"">управляющие  символы ASCII  (Control-Q/Control-S илиXON/ XOFF).

<span Courier New"">Управлять потокомнеобходимо ввиду того, что иногда либо передат-

<span Courier New"">чик  либо приемник не могут поддерживать скорость передачи и они

<span Courier New"">должны иметьвозможность информировать другую сторону о необходи-

<span Courier New"">мости  остановки на время,  требуемое длятого,  чтобы отставшая

<span Courier New"">сторона смогладогнать другую.

<span Courier New"">    Предположим, что приемник имеет буфер дляхранения  поступаю-

<span Courier New"">щих символов. Кактолько буфер после заполнения закрывается, при-

<span Courier New"">емник можетпослать символ XOFF  передатчику,  сигнализируя, что

<span Courier New"">передача должнабыть приостановлена. Конечно, приемник должен по-

<span Courier New"">нять значениеXOFF и прекратить передачу символов. Затем,  когда

<span Courier New"">приемникобработает символы (скажем,  запишет их вфайл на диске)

<span Courier New"">и буферосвободится,  тогда посылается символXON,  показывающий,

<span Courier New"">что передачаможет быть продолжена.  Эта схемауправления потоком

<span Courier New"">широкоприменяется ввиду ее простоты. Большинство связных  прог-

<span Courier New"">раммпредоставляют возможность дуплексной связи с управлением по-

<span Courier New"">током, основанномна применении символов XON/XOFF.

<span Courier New"">

<span Courier New"">

<span Courier New"">       Последовательный порт с точки зрения программиста

<span Courier New"">

<span Courier New"">    Аппаратура последовательного порта всистемах MS-DOS известна

<span Courier New"">какпоследовательный адаптер или асинхронный связной адаптер (да-

<span Courier New"">лее  мы будем называть его последовательным адаптером).  Адаптер

<span Courier New"">основан на Intel8259 UART (универсальный асинхронный приемопере-

<span Courier New"">датчик), имеетпорт RS-232C для подключения к модему и, как адап-

<span Courier New"">тер дисплея,  программируется посредством наборарегистров.  Мик-

<span Courier New"">ропроцессор  имеет доступ  к  регистрам через ранее определенные

<span Courier New"">адреса портаввода/вывода.

<span Courier New"">    Универсальный асинхронный  приемопередатчик Intel 8250 управ-

<span Courier New"">ляетсяпосредством записи в набор восьмибитовых регистров и  чте-

<span Courier New"">ния из них.  Эти регистры доступны программисту черезадреса пор-

<span Courier New"">та.  Адреса портов задаются последовательно,  поэтому достаточно

<span Courier New"">знать  адрес первого порта.  Он также известенкак базовый адрес

<span Courier New"">последовательногоадаптера. В персональном компьютере IBM PC двум

<span Courier New"">последовательнымпортам COM1 и COM2 присвоены базовые адреса пор-

<span Courier New"">та 3F8h и 2F8hсоответственно. Так, для последовательного адапте-

<span Courier New"">ра COM1 первыйрегистр имеет адрес 3F8h, следующий 3F9h и так да-

<span Courier New"">лее.

<span Courier New"">    В 8250 имеется семь физических регистров и они описываются в

<span Courier New"">порядкевозрастания начального номера, начиная с базового адреса.

<span Courier New"">Как показанона  рисунке 8-4,  базовый адрес порта имеет один ре-

<span Courier New"">гистр,  который делится на два,  как приемный буферный регистр  и

<span Courier New"">регистр храненияпередачи (THR),  который используется дляхране-

<span Courier New"">ния одногопередаваемого или принимаемого символа. Затем следует

<span Courier New"">регистрразрешения прерываний,  которыйиспользуется для разреше-

<span Courier New"">ния илиблокировки генерации прерываний последовательным  адапте-

<span Courier New"">ром.  Третий регистр, называемый регистромидентификации прерыва-

<span Courier New"">ний,    содержит   сообщение     универсального     асинхронного

<span Courier New"">приемопередатчика  об идентичности прерывания.  Затем следует ре-

<span Courier New"">гистр управлениялинией,  используемый для установленияразличных

<span Courier New"">связных  параметров, таких как длина слова,  количествостоповых

<span Courier New"">битов,  четность и скорость передачи в бодах. Пятыйрегистр — это

<span Courier New"">региструправления модемом, который используется для передачи мо-

<span Courier New"">демусигналов,  таких как DTR (терминал готов)и RTS  (запрос  на

<span Courier New"">передачу).Наконец, два последних регистра, регистр состояния ли-

<span Courier New"">нии и регистрсостояния модема, показывают соответственно состоя-

<span Courier New"">ние линии имодема.

<span Courier New"">    Первые два регистра применяются также дляустановки  скорости

<span Courier New"">передачи  в бодах.  Скорость  передачи в бодах определяется как

<span Courier New"">16-битовыйделитель тактовой частоты, используемой для последова-

<span Courier New"">тельного адаптера(1.8432 МГц в большинстве систем MS -DOS). Зна-

<span Courier New"">чение делителявычисляется по формуле

<span Courier New"">

<span Courier New"">                        1,843,200

<span Courier New"">    делитель= ------------------------------

<span Courier New"">              16 Х скорость передачи в бодах

<span Courier New"">

<span Courier New"">    Чтобы установить скорость передачи вбодах,  Вы должны проде-

<span Courier New"">лать следующее:

<span Courier New"">    1. Установить в 1 наиболее значимыйбит  регистра  управления

<span Courier New"">       линией (он  называется битом защелкидоступа делителя или

<span Courier New"">       DLAB).

<span Courier New"">    2.Загрузить младший и старший байтыделителя соответственно в

<span Courier New"">       приемный буфер и регистр разрешенияпрерываний.

<span Courier New"">    3. Установить DLAB в 0 для обеспечениянормальной работы уни-

<span Courier New"">       версального асинхронногоприемопередатчика.

<span Courier New";mso-fareast-font-family: Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:RU;mso-fareast-language: EN-US;mso-bidi-language:AR-SA">

<span Courier New"">

<span Courier New"">   A    Приемный буфер/регистр хранения передачи

<span Courier New"">   B    ┌───┬───┬───┬───┬───┬───┬───┬───┐

<span Courier New"">(COM1-3F8|1.|   |  |   |   |   |   | 2.|

<span Courier New"">COM2-2F8)└───┴───┴───┴───┴───┴───┴───┴───┘

<span Courier New"">

<span Courier New"">         Регистр разрешения прерывания

<span Courier New"">   B+1  ┌───┬───┬───┬───┬───┬───┬───┬───┐

<span Courier New"">         | 0 | 0 | 0 | 0 | 3.| 4.| 5.| 6.|

<span Courier New"">        └───┴───┴───┴───┴───┴───┴───┴───┘

<span Courier New"">         Установить бит в 1 для разрешения

<span Courier New"">

<span Courier New"">         Регистр идентификации прерывания

<span Courier New"">   B+2  ┌───┬───┬───┬───┬───┬───┬───┬───┐

<span Courier New"">         | 0 | 0 | 0 | 0 | 0 |   |   |7.|

<span Courier New"">        └───┴───┴───┴───┴───┴───┴───┴───┘

<span Courier New"">                            └─3-битовый идентификатор прерывания

<span Courier New"">                              110 = состояниелинии

<span Courier New"">                              100 = приемныеданные

<span Courier New"">                              010 = буферпередачи свободен

<span Courier New"">                              000 = состояниемодема

<span Courier New"">         Регистр управления линией

<span Courier New"">   B+3  ┌───┬───┬───┬───┬───┬───┬───┬───┐

<span Courier New"">         | 8.|  |    9.     |10.| 11.  |

<span Courier New"">        └───┴───┴───┴───┴───┴───┴───┴───┘

<span Courier New"">               └─BREAK: 1 устанавливаетлинию в SPACE

<span Courier New"">         Регистр управления модемом

<span Courier New"">   B+4  ┌───┬───┬───┬───┬───┬───┬───┬───┐  a. — OUT2

<span Courier New"">         | 0 | 0 | 0 |12.| a.| b.| c.| d.|  b. — OUT1

<span Courier New"">        └───┴───┴───┴───┴───┴───┴───┴───┘  c. — RTS

<span Courier New"">                           └──13.          d. — DTR

<span Courier New"">         Регистр состояния линии

<span Courier New"">   B+5  ┌───┬───┬───┬───┬───┬───┬───┬───┐

<span Courier New"">         | 0 |14.|15.|16.|17.|18.|19.|20.|

<span Courier New"">        └───┴───┴───┴───┴───┴───┴───┴───┘

<span Courier New"">

<span Courier New"">         Регистр состояния модема           a. — RLSD

<s

еще рефераты
Еще работы по программированию, базе данных