Интерпретация сигналов управления
Остальные комбинации сигналов переводят тристабильные выходы D7-DO в высокоимпедансное состояние.
Выбор регистров режима, управления или символа синхронизации зависит от последовательности обращения, схема которой представлена на рис. 9.14. После аппаратного сброса или приказа с установленным в 1 битом сброса следующий вывод с АО = 1 (т. е. с C/D = 1, RD = 1 и WR = 0) предназначен для регистра режима. Форматы регистра режима для асинхронного и синхронного случаев показаны на рис. 9.15. Если два младших бита режима содержат нули, интерфейс переводится в синхронный режим и старший бит определяет число символов синхронизации. При этом следующие один или два байта, выводимые с АО = 1, становятся символами синхронизации. Если два младших бита режима не равны 0, интерфейс работает в асинхронном режиме. В любом случае все последующие байты до другого сброса направляются в регистр управления (если АО = 1) или в буферный регистр выходных данных (если АО = 0).
В синхронном режиме скорости в бодах передатчика и приемника, равные частотам сдвига регистров сдвига, совпадают с частотами сигналов на входах ТхС и RxC соответственно. При работе в асинхронном режиме три оставшиеся комбинации младших бит в регистре режимов определяют множитель скорости. Взаимосвязь между частотами Т\С и RxC входов синхронизации и скоростями в бодах передатчика и приемника имеет следующий вид
частота синхронизации = множитель X скорость в бодах.
Рис. 9.14. Схема размещения выводимых байт.
Когда младшие биты регистра режима содержат 10 и скорости в бодах передатчика и приемника равны 300 и 1200, частота на входе ТхС должна быть 4800 Гц, а на входе RxC - 19,2 кГц
В обоих режимах биты 2 и 3 показывают число информационных бит в каждом символе, бит 4 определяет наличие или отсутствие бита паритета, а бит 5 - тип паритета (нечетный или четный). В асинхронном режиме два старших бита показывают число стоповых бит. Для синхронного режима бит 6 показывает, каким является сигнал SYNDET-входным или выходным, а бит 7 задает число символов синхронизации
Рис. 9.15. Форматы регистра режима: асинхронный (а) и синхронный (б)
Если контакт SYNDET служит выходом, его сигнал становится активным, когда обнаружено соответствие входного двоичного потока и символа (ов) синхронизации. Когда же поиск символов синхронизации осуществляется внешним устройством, на вход SYNDET подается сигнал о фиксации соответствия. Этот же контакт, но только в качестве выхода применяется и при асинхронной работе. Сигнал на этом выходе называется сигналом обнаружения разрыва и он высоким уровнем отмечает прием символа, состоящего из одних нулей.
Формат регистра управления приведен на рис. 9.16. Бит 0 этого регистра должен содержать 1 до вывода данных, а бит 2 должен быть в состоянии 1 до приема данных. Программный ответ модему осуществляется установкой в 1 бита 1, так как при этом на выходе DTR формируется 0, а инверсия DTR обычно подключается к линии CD модема. Состояние 1 бита 3 формирует TxD = 0, вызывая передачу символов разрыва.
Рис. 9.16. Формат регистра управления
Примечание. Во всех случаях действие предпринимается, когда бит установлен в 1
Установка в 1 бита 4 вызывает сброс всех бит ошибок в регистре состояния. Бит 5 применяется для выдачи сигнала "запрос передачи" (RTS) в модем. Если инверсия сигнала на контакте RTS подключена к линии СА модема, то загрузка 1 в бит 5 вызывает высокий уровень на линии СА. Установка бита 6 в состояние 1 вызывает реинициализацию 8251А и переход к последовательности сброса (т. е. осуществляется возврат в начало схемы на рис. 9.14 и следующий вывод производится в регистр режима). Бит 7 применяется только в синхронном режиме; установка его в 1 заставляет 8251А начать поиск символа (ов) синхронизации
На рис. 9.17 показаны типичные схемы подключения к модемам для асинхронной и синхронной передач. При синхронной передаче предполагается, что синхронизацией управляет модем и его связное оборудование. Кроме того, если это же оборудование применяется для обнаружения символа (ов) синхронизации, оно информирует 8251А об их обнаружении по линии SYNDET. С другой стороны, если символ (ы) синхронизации отыскивает сам 8251А, он может использовать линию SYNDET, чтобы сообщить модему об успешном поиске Для удовлетворения требований стандарта RS-232-C необходимы драйверы и приемники, преобразующие ТТЛ-совместимые сигналы TxD и RxD в требуемые уровни напряжения (см рис. 9.10)
Ниже приведен программный фрагмент, который инициализирует регистр режима и содержит приказ разрешения передатчика и запуска асинхронной передачи со следующим форматом: 7 бит символа, бит четного паритета и 2 стоповых бита.
MOV AL,11111010B
OUT 51H,AL
MOV AL,00110011B
OUT 51H,AL
Здесь предполагается, что регистры режима и управления имеют адрес 51Н, а частоты синхронизации в 16 раз больше соответствующих скоростей в бодах.
Следующий фрагмент переводит 8251А в синхронный режим и заставляет его начать поиск двух смежных символов синхронизации:
MOV AL,00111000B
OUT 51H,AL
MOV A1_,16H
OUT 51H,AL
MOV AL,10010100B
OUT 51H,AL 338
Можно также использовать для выбора скорости - линия модема СН
б)
Рис. 9.17. Подключения микросхемы 8251А к асинхронному (а) и синхронному (б) модему Примечание. Подключения линий управления зависят от спецификаций модема
Как и в первом примере, символы содержат 7 информационных бит и бит четного паритета, но, разумеется, стоповые биты отсутствуют.
Формат регистра состояния приведен на рис. 9.18. Биты 1, 2 и 6 отражают состояния сигналов RxRDY, TxE и SYNDET. Бит TxRDY показывает, что буфер выходных данных
Рис. 9.18. Формат регистра состояния
пустой. В отличие от контакта TxRDY на этот бит не влияет входной сигнал CTS или бит управления TxEN. Бит RxRDY показывает, что символ принят и готов для ввода в процессор. Биты TxRDY и RxRDY можно использовать для программного ввода-вывода, а сигналы с соответствующих контактов можно подключить к линиям запросов прерываний для организации ввода-вывода по прерываниям. Бит TxRDY автоматически сбрасывается, когда имеется символ для передачи, а бит RxRDY - когда установивший его символ введен процессором. Бит 2 показывает, что регистр сдвига передатчика ожидает загрузки символа из буферного регистра выходных данных. В синхронной передаче, пока этот бит установлен, передатчик будет брать данные из регистров символов синхронизации до загрузки данных в буферный регистр выходных данных. Биты 3, 4 и 5 показывают ошибки паритета, перегрузки и кадра. Когда обнаруживается ошибка, соответствующий ей бит устанавливается в 1. Если инверсию выхода DSR подключить к линии СС, то бит 7 отражает состояние модема - он устанавливается в 1, когда модем включен и находится в рабочем режиме.
На рис. 9.19 приведена типичная программа, в которой используется программный ввод-вывод для ввода 80 символов из 8251А (адрес буферного регистра данных равен 0050) и размещения их в буфере памяти, начинающегося с LINE. Внутренний цикл непрерывно проверяет бит RxRDY до тех пор, пока он не устанавливается символом, принятым в буферный регистр входных данных. Затем новый принятый символ
Рис. 9.19. Ввод строки символов через интерфейс 8251А
пересыпается в память и контролируются биты ошибок Если текущий символ появился до ввода предыдущего символа или во время передачи возникли ошибки паритета или кадра, ввод прекращается и вызывается процедура обработки ошибки, которая обычно проверяет отдельные биты ошибок, печатает соответствующее сообщение и сбрасывает биты ошибок.
Ввод символа автоматически сбрасывает бит RxRDY, поэтому если другой символ не принят до начала внутреннего цикла, внутренний цикл должен повторяться до тех пор, пока следующий входной символ не установит RxRDY = 1. Если входные символы имеют меньше 8 бит, неиспользуемые старшие биты в буферном регистре данных всегда возвращаются в состояние 0. Бит паритета не передается в процессор, поэтому контроль ошибок паритета можно осуществить только по состоянию бита ошибки паритета в регистре состояния. Когда при выводе длина символов меньше 8 бит, ненужные старшие биты в буферном регистре выходных данных игнорируются.