ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.02.2025
Просмотров: 8891
Скачиваний: 4
СОДЕРЖАНИЕ
2. Программная модель микропроцессора 8086
2.4. Способы задания операндов команды
3. Основные понятия языка ассемблера
3.2. Директивы определения данных
4. Сегментированная модель памяти
4.3. Общая структура программы
5.1. Соглашению по описанию команд
5.6. Команды организации циклов
5.11. Команды управления микропроцессором
7. Разработка одномодульной программы
7.1. Трансляция и компоновка программы
8. Разработка многомодульных программ
8.1. Принципы разработки модулей
8.2. Расширенное применение директивы сегментации
Программирование микропроцессорных устройств
10. Программирование системного таймера
10.1. Описание таймера-счетчика 8254
10.3. Структура регистров таймера
11. Программирование контроллера прерываний
11.1. Механизм обработки прерываний
11.4. Контроллер прерываний 8259
11.5. Идентификация прерываний
11.6. Прерывания bios и ms-dos
12. Программирование параллельного порта
12.2. Работа с параллельным портом на низком уровне
12.3. Стандартные средства работы с параллельным портом
13. Программирование последовательного порта
13.1. Основы последовательной передачи данных
13.2. Последовательный интерфейс rs-232c
13.3. Универсальный асинхронный приемо-передатчик 8250
13.4. Порты асинхронного адаптера
13.5. Стандартные средства программирования последовательного порта
Доступ к регистрам осуществляется через восемь адресов портов (табл. 106), занимающих смежные адреса в пространстве устройств ввода-вывода. Следует заметить, что регистров реально больше, т.к. регистры по смещениям 0 и 1 мультиплексируются регистром управления линией LCR.
Регистр хранения передатчика (Transmitter Register). Байт данных, записанный в регистр THR, сразу передается в сдвиговый регистр передатчика (TSR). Здесь данные преобразуются в последовательную форму, добавляются биты четности и кадрирования и передаются на последовательный выход микросхемы SOUT. В отличие от параллельного интерфейса здесь нет необходимости в наличии стробирующего импульса. Младший значащий разряд передаваемого символа записывается в D0.
Табл. 106. Назначение регистров микросхемы 8250.
|
Смещение |
Адрес порта |
Регистр |
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.
Регистр разрешения прерывания IER (Interrupt Enable Register). Скорость передачи данных по последовательному интерфейсу невелика, поэтому имеет смысл выполнять его в фоновом режиме, используя прерывания по окончании передачи или приема символа.
Регистр IER (табл. 112) запрещает или разрешает по отдельности четыре типа прерываний, которые может генерировать адаптер (выход INTR). Запись 1 в разряды 0-3 разрешает соответствующий тип прерывания. Разрешенное прерывание сообщается в регистр идентификации прерывания IIR и активизирует выход INTR.