Файл: Системное программирование.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.02.2025

Просмотров: 8891

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Системное программирование

Контрольные вопросы

2. Программная модель микропроцессора 8086

2.1. Представление информации

2.2. Регистры микропроцессора

2.3. Формат машинной команды

2.4. Способы задания операндов команды

Контрольные вопросы

3. Основные понятия языка ассемблера

3.1. Предложения

3.2. Директивы определения данных

3.3. Выражения

Контрольные вопросы

4. Сегментированная модель памяти

4.1. Сегментирование адресов

4.2. Директивы сегментации

4.3. Общая структура программы

4.4. Модели памяти

Контрольные вопросы

5. Основные группы команд

5.1. Соглашению по описанию команд

5.2. Команды пересылки данных

5.3. Арифметические команды

5.4. Логические команды

5.5. Команды переходов

5.6. Команды организации циклов

5.7. Команды обработки строк

5.8. Стековые команды

5.9. Команды ввода-вывода

5.10. Команды прерываний

5.11. Команды управления микропроцессором

Контрольные вопросы

6. Подпрограммы

Контрольные вопросы

7. Разработка одномодульной программы

7.1. Трансляция и компоновка программы

7.2. Отладка программы

Контрольные вопросы

8. Разработка многомодульных программ

8.1. Принципы разработки модулей

8.2. Расширенное применение директивы сегментации

9. Упражнения

Контрольные вопросы

Программирование микропроцессорных устройств

10. Программирование системного таймера

10.1. Описание таймера-счетчика 8254

10.2. Режимы работы таймера

10.3. Структура регистров таймера

10.4. Упражнения

Контрольные вопросы

11. Программирование контроллера прерываний

11.1. Механизм обработки прерываний

11.2. Типы прерываний

11.3. Приоритеты прерываний

11.4. Контроллер прерываний 8259

11.5. Идентификация прерываний

11.6. Прерывания bios и ms-dos

11.7. Упражнения

Контрольные вопросы

12. Программирование параллельного порта

12.1. Интерфейс Centronics

12.2. Работа с параллельным портом на низком уровне

12.3. Стандартные средства работы с параллельным портом

12.4. Упражнения

Контрольные вопросы

13. Программирование последовательного порта

13.1. Основы последовательной передачи данных

13.2. Последовательный интерфейс rs-232c

13.3. Универсальный асинхронный приемо-передатчик 8250

13.4. Порты асинхронного адаптера

13.5. Стандартные средства программирования последовательного порта

13.6. Упражнения

Контрольные вопросы

Литература

141 Кафедра Вычислительной Техники и Программирования Московского Государственного Открытого Университета

Доступ к регистрам осуществляется через восемь адресов портов (табл. 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.