Смещение
|
Адрес порта
|
Регистр
|
R-W
|
COM1
|
COM2
|
0
|
3F8h
|
2F8h
|
Регистр хранения передатчика THR.
|
W
|
Регистр данных приемника RBR.
|
R
|
Делитель скорости обмена (LSB).
|
RW
|
1
|
3F9h
|
2F9h
|
Делитель скорости обмена (MSB).
|
RW
|
Регистр разрешения прерывания IER.
|
R-W
|
2
|
3FAh
|
2FAh
|
Регистр идентификации прерывания IIR.
|
R
|
3
|
3FBh
|
2FBh
|
Регистр управления линией LCR.
|
R-W
|
4
|
3FCh
|
2FCh
|
Регистр управления модемом MCR.
|
R-W
|
5
|
3FDh
|
2FDh
|
Регистр состояния линии LSR.
|
R-W
|
6
|
3FEh
|
2FEh
|
Регистр состояния модема MSR.
|
R-W
|
7
|
3FFh
|
2FFh
|
Регистр сверхоперативной памяти SCR.
|
R-W
|
Буферный регистр приемника RBR (Read Buffer Register). Данные в последовательной форме поступают на вход микросхемы SIN. Затем удаляются кадрирующие биты, бит четности и информационные разряды передаются в сдвиговый регистр приемника RSR (Receiver Shift Register). В регистре RSR выполняется «сборка» символа из требуемого числа информационных разрядов (от 5 до 8), даже при наличии ошибок кадрирования и четности. Полученный символ записывается в регистр RBR, начиная с младшего разряда D0. Формат регистров THR и RBR одинаков (табл. 107).
Табл. 107. Формат регистра передатчика и приемника.
Биты
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Значение
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
Регистр управления линией LCR (Line Control Register). Значения разрядов регистра LCR определяют асинхронный формат данных (табл. 108).
Табл. 108. Формат регистра управления линией.
Биты
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Значение
|
DLAB
|
BC
|
SPS
|
EPS
|
PEN
|
STB
|
WLS1
|
WLS0
|
Разряды WLS1 и WLS0 определяют число информационных разрядов, которые рассматриваются как один символ (табл. 109). Данные от микропроцессора передаются побайтно, независимо от размерности. При длине слова, меньшей 8 разрядов, сохраняется только заданное число младших разрядов.
Табл. 109. Кодирование данных.
WLS1
|
WLS0
|
Длина
|
0
|
0
|
5
|
0
|
1
|
6
|
1
|
0
|
7
|
1
|
1
|
8
|
Разряд STB задает число стоповых бит, добавляемых к каждому кадру при передаче. При STB=0 добавляется один стоп-бит. При STB=1 добавляется два стоп-бита, если размерность информационного поля равна 6,7,8, либо 1.5 стоп-бита при 5-разрядной длине поля. Половина стопового бита означает, что линия связи удерживается в состоянии MARK в течение времени, составляющего 150% от времени действия одного элементарного сигнала. Следует заметить, что 8250 проверяет только первый стоповый бит при любой установке поля STB.
Разряды SPS, EPS и PEN задают тип контроля четности (табл. 110).
Табл. 110. Кодирование типа четности.
SPS
|
EPS
|
PEN
|
Тип контроля
|
x
|
x
|
0
|
Проверка отключена.
|
0
|
0
|
1
|
Проверка на нечетность. Символ и бит четности
должны содержать нечетное количество единиц.
|
0
|
1
|
1
|
Проверка на четность. Символ и бит четности
должны содержать четное количество единиц.
|
1
|
0
|
1
|
MARK-контроль: бит четности всегда равен лог. 1.
|
1
|
1
|
1
|
SPACE-контроль: бит четности всегда равен лог. 0.
|
Разряд BC используется для генерации выходного сигнала BREAK. При лог. 1 на последовательном выходе SOUT микросхемы 8250 принудительно устанавливается сигнал SPACE. Сигнал будет оставаться таким независимо от изменения других параметров передатчика до появления лог. 0 в поле BC.
Разряд DLAB предназначен для доступа к регистрам делителя скорости передачи. Для обращения к регистрам TBR, RBR и IER разряд должен быть установлен в 0. При DLAB=1 регистры перестраиваются на обращение к регистрам делителя скорости.
Регистр состояния линии LSR (Line Status Register) линии определяет протокол связи (табл. 111). В процессе обмена регистр обычно постоянно просматривается. При передаче данных регистр информирует, что предыдущий символ уже послан, позволяя записать новый символ поверх него. При приеме данных регистр информирует о поступлении следующего символа, чтобы программа могла прочитать его прежде, чем он будет перезаписан следующим прибывшим.
Проверка значений разрядов требует маскирования. Кроме того, операция считывания приводит к сбросу значений некоторых полей, поэтому после анализа их необходимо самостоятельно восстанавливать.
Табл. 111. Формат регистра состояния линии.
Биты
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Значение
|
0
|
TSRE
|
THRE
|
BI
|
FE
|
PE
|
OE
|
DR
|
Разряд DR (готовность данных, Data Ready) устанавливается в 1, когда поступающий символ принят и передан в буферный регистр приемника RBR. Считывание символа из RBR приведет к автоматическому сбросу DR в 0.
Разряд OE (ошибка переполнения приемника, Overflow Error) устанавливается в 1 при возникновении ошибки переполнения (перезаписи). Ошибка возникает при записи в RBR символа, когда предыдущий еще не был считан. В этом случае непрочитанный символ безвозвратно теряется. Разряд устанавливается в 0 при считывании данных из LSR.
Разряд PE (ошибка четности, Parity Error) указывает на ошибку четности. При получении очередного символа вычисляется бит четности в соответствии с параметрами, заданными в регистре LCR. При несовпадении расчетного значения с битом четности, полученным вместе с символом, разряд PE устанавливается в 1. Разряд сбрасывается в 0 только при считывании данных из LSR.
Разряд FE (ошибка кадрирования, Frame Error) устанавливается в 1, если бит, следующий за последним разрядом данных или битом четности, не является стоповым (не имеет значение MARK). Тем не менее, принятый символ передается в RBR. Разряд сбрасывается в 0 только при считывании данных из LSR.
Разряд BI (прерывание по сигналу BREAK) устанавливается в 1 каждый раз, когда на последовательном входе SIN присутствует сигнал BREAK. Сигнал соответствует BREAK, когда он удерживается в состоянии SPACE в течение промежутка времени, превышающего длительность одного кадра. Для снятия сигнала BREAK вход SIN должен оставаться в состоянии MARK в течение промежутка времени, не меньше половины длительности одного элементарного сигнала. Даже при снятии сигнала BREAK флаг BI остается установленным, и сбросить его можно только при прочтении данных из LSR.
Разряд THRE (готовность регистра хранения передатчика) устанавливается в 1, при передаче символа из регистра хранения передатчика THR в сдвиговый регистр передатчика TSR. Флаг сообщает, что THR пуст и готов принять очередной символ. Ошибка переполнения передатчика может возникнуть при записи символа в THR, когда флаг THR сброшен в 0. Следует заметить, что флаг THRE не отражает состояние готовности сдвигового регистра TSR.
Разряд TSRE (готовность сдвигового регистра) устанавливается в 1, когда символ, находящийся в сдвиговом регистре передатчика TSR передан, а новый символ еще не готов для передачи. При передаче очередного символа из THR в TSR флаг сбрасывается в ноль. Запись в разряд не приводит к его изменению. Таким образом, последовательная передача может считаться завершенной, когда оба флага THRE и TSRE будут установлены в 0.
Do'stlaringiz bilan baham: |