Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекций.doc
Скачиваний:
79
Добавлен:
21.05.2017
Размер:
3.74 Mб
Скачать

1.1.8. Блок последовательного интерфейса и прерываний

Блок последовательного интерфейса и прерываний (ПИП) предназначен для организации ввода/вывода информации по последовательному каналу и обработки прерываний.

В состав блока входят:

  1. Буфер ПИП;

  2. Логика управления ПИП;

  3. Регистр управления (SCON);

  4. Приемо/передатчик последовательного порта;

  5. Регистр приоритетов прерываний;

  6. Регистр разрешения прерываний;

  7. Схема выработки вектора.

Буфер ПИПобеспечивает побитовый обмен информацией между внутренней шиной данных МП и шиной ПИП.

Логика управления ПИПпредназначена для выработки сигналов управления последовательного порта задавая 1 из 4 возможных режимов его работы, и организации прерывания программ.

Последовательный порт МК51может работать в одном из 4 режимов:

Режим 0.Информация передается и принимается через вход приемникаRxD(вывод Р3.0). Через выход передатчикаTxD(вывод Р3.1) выдаются импульсы синхронизации, стробирующие каждый передаваемый или принимаемый бит информации. Формат посылки – 8 бит. Частота приема и передачи равна .

Режим 1.Информация передается через выходTxD, а принимается через вход приемникаRxD. Формат посылки – 10 бит: старт-бит (ноль), восемь бит данных и стоп-бит (единица). Частота приема и передачи задается Т/С 1.

Режим 2.Информация передается через выход передатчикаTxD, а принимается через вход приемникаRxD. Формат посылки 11 бит: старт-бит (ноль), восемь бит данных, программируемый девятый бит и стоп-бит (единица). Передаваемый девятый бит данных принимает значение бита ТВ8 из регистра специальных функцийSCON. Бит ТВ8 в регистреSCONможет быть программно установлен в 0 или в 1, или в него, к примеру, можно записать значение флага Р из регистраPSWдля повышения достоверности принимаемой информации (контроль по четности). При приеме 9-ый бит принятой посылки записывается в битRB8 регистраSCON. Частота приема и передачи в режиме 2 задается программно и может быть равна (SMOD=1) или (SMOD=0).

Режим 3полностью идентичен режиму 2, за исключением того, что частота приема и передачи задается с помощью Т/С1.

Регистр управления (SCON)предназначен для приема и хранения 8-ми разрядного управляющего слова последовательным портом. Обозначение разрядов регистра, их символьные имена и назначения приведены в табл. 1.8.

Таблица 1.8. Назначение разрядов регистра SCON

Разряд

Имя

Назначение

SCON.7

SCON.6

SM0

SM1

Биты управления режимом работы УАПП (устанавливаются и сбрасываются программно)

SM0

SM1

Режим работы УАПП

0

0

Сдвиговый регистр

0

1

8 битовый приемопередатчик, изменяемая скорость передачи

1

0

9 битовый приемопередатчик. Фиксированная скорость передачи

1

1

9 битовый приемопередатчик, изменяемая скорость передачи

SCON.5

SM2

Бит управления режимом УАПП (разрешения многопроцессорной работы). В режимах 2 и 3 при SM2=1 флаг RI не активизируется, если девятый принятый бит данных равен «0». В режиме 1 при SM2=1 флаг RI не активен, если не принят стоп-бит, равный «1». В режиме «0» бит SM2 должен быть установлен в «0».

SCON.4

REN

Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных

SCON.3

TB8

Девятый бит передаваемых данных в режиме 2 и 3. Установка/сброс программно

SCON.2

RB8

Девятый бит принятых данных в режиме 2 и 3. В режиме 1, если SM2=0, RB8 является принятым стоп-битом. В режиме 0 бит RB8 не используется.

SCON.1

TI

Флаг прерывания передатчика. Устанавливается аппаратно в конце передачи восьмого бита в режиме 0 или в начале стоп-бита в других режимах, сбрасывается программно.

SCON.0

RI

Флаг прерывания приемника. Устанавливается аппаратно в конце приема восьмого бита в режиме 0 или через половину интервала стоп-бита в режиме 1-3 при SM2=0. При SM2=1 смотри описание бита SM2.

Буферы приемника и передатчика (БПП)(на структурной схеме не показаны) предназначены для приема/передачи данных с внутренней шины данных в последовательный порт. При программном доступе имеют одинаковые символические имена (SBUF) и адрес (99H) . Если команда используетSBUFкак регистр источника, то обращение происходит к буферу приемника. Если же команда используетSBUFкак регистр-приемник, то обращение происходит к буферу передатчика.

Во всех 4-х режимах работы УАПП передача инициируется любой командой, которая использует SBUFкак регистр-приемник. Прием в режиме 0 инициируется условиемRI=0 иREN=1 . В остальных режимах прием инициируется приходом старт-бита, еслиREN=1 .

Приемник/передатчикпоследовательного порта предназначен для приема последовательного потока символов с входа последовательного порта, выделения данных и выдачи их в буфер приемника. В режиме передачи он принимает последовательные данные с буфера передатчика, преобразует их в последовательный поток символов и выдает их на выход последовательного порта.

Скорость приема/передачи

Скорость приема/передачи в различных режимах работы УАПП определяется различными способами.

В режиме 0 частота передачи зависит только от частоты кварцевого резонатора и равна , т.е. за один машинный цикл последовательный порт передает 1 бит информации.

В режимах 1, 2, 3 скорость приема/передачи зависит от значения управляющего бита SMODв регистре управленияPCON.

В режиме 2 частота передачи определяется согласно выражению:

Скорость последовательного обмена УАПП в режимах 1 и 3 определяется по формуле:

,

где - значение битаSMOD регистра управления мощностью PCON;

- частота синхронизации МК-51;

- десятичное значение содержимого регистра TH1.

Если необходим последовательный обмен с очень низкой скоростью, то можно использовать Т/С1 в режиме 16-ти разрядного таймера (режим 1), разрешив при этом прерывание от Т/С1 с целью перезагрузки TH1 и TL1 в подпрограмме обслуживания прерывания.

Для использования Т/С1 в качестве источника для задания частот инеобходимо:

  1. Запретить прерывания от Т/С1;

  2. Запрограммировать работу Т/С1 в качестве таймера или счетчика, установив при этом для него один из режимов 0, 1 или 2;

  3. Запустить Т/С1 на счет.

Обычно для установки скорости передачи данных через последовательный порт таймер Т/С1 включается в режим 2 (режим автозагрузки).

В табл.1.9 приведен ряд стандартных скоростей последовательного обмена и то, как они могут быть реализованы с помощью T/C1 в режимах 1 и 3 .

Таблица 1.9

Режим

работы

Скорость

обмена,

,

МГц

Бит

SMOD

Разряды TMOD

Регистр

ТН1

Примечание

УАПП

Кбод

C/T

М1

М0

0

2

1,3

Макс 1000

Макс 375

62,5

19,2

9,6

4,8

2,4

1,2

0,1375

0,110

0,110

12

12

12

11,059

11,059

11,059

11,059

11,059

11,986

6

12

Х

1

1

1

0

0

0

0

0

0

0

Х

Х

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

1

0

0

0

0

0

0

0

0

1

х

х

FFH

FDH

FDH

FAH

E4H

E8H

18H

72H

FEH

TL1=EBH

Регистр приоритетов прерываний (IP)предназначен для установки уровня приоритетов прерываний для каждого из пяти возможных источников прерываний. Обозначение, номер разряда и их назначение приведены в табл.1.10.

Таблица 1.10. Назначение разрядов регистра приоритетов прерываний IP

Разряд

Имя

Назначение

IP.7

IP.6

IP.5

-

-

-

Не используются

IP.4

PS

Бит приоритета УАПП. Установка/сброс программой для присваивания прерыванию от УАПП высшего/низшего приоритета.

IP.3

PT1

Бит приоритета Т/C1. Установка/сброс программой для присваивания прерыванию от Т/C1 высшего/низшего приоритета.

IP.2

PX1

Бит приоритета внешнего прерывания . Установка/сброс программой для присваивания прерыванию отвысшего/ низшего приоритета.

IP.1

PT0

Бит приоритета Т/C0. Работает аналогично PT1.

IP.0

PX0

Бит приоритета внешнего прерывания . Работает аналогичноPX1.

Регистр разрешения прерываний (IE)предназначен для разрешения или запрещения прерываний от соответствующих источников. Обозначение разрядовIEи их назначение приведено в табл.1.11.

Таблица 1.11. Назначение разрядов регистра разрешения прерываний IE

Разряд

Имя

Назначение

IE.7

EA

Снятие блокировки прерываний. Сбрасывается программно для запрета всех прерываний независимо от состояний IE4…IE0 .

IE.6

IE.5

-

-

Не используются

IE.4

ES

Управление прерыванием от УАПП. ES=1 - разрешено, ES=0 - запрещено .

IE.3

ET1

Управление прерыванием от Т/C1. EТ=1 - разрешено, ET=0 - запрещено .

IE.2

EX1

Управление прерыванием от внешнего источника . Работает аналогичноET1.

IE.1

ET0

Управление прерыванием от Т/C0. Работает аналогично ЕT1 .

IE.0

EX0

Управление прерыванием от внешнего источника . Работает аналогичноET1.

Логика обработки флагов прерываний осуществляет приоритетный выбор запроса прерывания в соответствии с рис.1.11, сброс его флага инициирует выработку аппаратно-реализованной команды перехода к программе обслуживания прерываний.

Рис. 1.11. Система прерываний МК51

Схема выработки вектора прерыванийпредназначена для формирования двухбайтового адреса подпрограммы обслуживания прерывания. Адреса подпрограмм и источники прерываний приведены в табл.1.12.

Таблица 1.12

Источник прерывания

Вектор прерывания

Внешнее прерывание

Таймер/счетчик 0

Внешнее прерывание

Таймер/счетчик 1

УАПП

0003H

000BH

0013H

001BH

0023H

При выполнении подпрограммы прерывания система прерываний формирует аппаратный вызов (LCALL) соответствующей подпрограммы обслуживания, если она не заблокирована одним из следующих условий:

  • в данный момент обслуживается запрос прерывания равного или высокого уровня приоритета;

  • текущий машинный цикл – не последний в цикле выполняемой команды;

  • выполняется команда RETI или любая команда, связанная с обращением к регистрам IЕ или IP.

Если флаг прерывания был установлен, но по одному из указанных выше условий не получил обслуживания и к моменту окончания блокировки уже сброшен, то запрос прерывания теряется и нигде не запоминается.

По аппаратно сформированному коду LCALL система прерывания помещает в стек только содержимое счетчика команд (PC), а в него загружает адрес вектора соответствующей подпрограммы обслуживания. По адресу вектора должна быть расположена команда безусловной передачи управления (JMP) к начальному адресу подпрограммы обслуживания прерывания. В случае необходимости она должна начинаться командами записи в стек (PUSH) слова состояния программы (PSW), аккумулятора, расширителя, указателя данных и т.д. и должна заканчиваться командами восстановления из стека (POP). Подпрограммы обслуживания прерывания должны завершаться командой RETI, по которой в счетчик команд перезагружается из стека сохраненный адрес возврата в основную программу. Команда RET также возвращает управление прерванной основной программе, но при этом не снимут блокировку прерываний, что приводит к необходимости иметь программный механизм анализа окончания процедуры обслуживания данного прерывания.