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

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

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

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

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

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

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

4.10. Последовательный канал.

Предназначен для связи с периферийными устройствами и построения распределенных систем. В отдельных случаях может заменять БИС последовательного интерфейса.

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

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

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

Порт имеет два внешних вывода TXD, RXD, соединенные с 2-мя программно-недоступными сдвигающими регистрами. До момента завершения приема-передачи данные находятся в РСН SBUF (99h).

Управление работой последовательно порта осуществляется через регистр SCON.

Формат SCON.

7

6

5

4

3

2

1

0

SM0

SM1

Sm2

REN

TB8

RB8

TI

RI

SM1

0

0

1

1

SM0

0

1

0

1

режим

0

1

2

3

Режим 0 – синхронный ввод/вывод с частотой fCR/12. По выводу RXD осуществляется прием или передача раздельно, а по выводу TXD – передача синхроимпульсов, сопровождающих биты передаваемого символа.

Режим 1 – асинхронный 10-ю битовыми посылками с переменной скоростью передачи, определяемой таймер-счетчиком. Формат символа:

  • старт-бит – нулевая посылка

  • 8 информационных бит (младший вначале)

  • стоп-бит – единичная посылка.

При приеме посылки стоп-бит поступает на разряд RB8.

Режим 2 – асинхронный 11-битовыми посылками со скоростью передачи со скоростью передачи fCR/64, fCR/32. Формат символа:

  • старт-бит – нулевая посылка

  • 8 информационных бит (младший вначале)

  • бит контроля на четность

  • стоп-бит – единичная посылка

Предусмотрена возможность программного контроля приема на четность, когда бит четности анализируется по состоянию RB8. При передаче берется адаптером из TB8.Бит паритета можно брать, например, из бита PSW.0, который формируется аппаратно.

В данном режиме стоп-бит игнорируется.

Режим 3 – асинхронный с 11-битовыми посылками, аналогичный режиму 2, но с переменной скоростью, определяемой таймер-счетчиком.

SM2 – флаг управления режимом. Устанавливается и сбрасывается программно для запрещения приема кодов, у которых девятый разряд равен 0.

Для режима 1 это соответствует контролю принятого кода на наличие стоп-бита. Для режимов 2 и 3 в зависимости от состояния RB8 позволяет разделить принимаемые коды на два типа. Это позволяет упростить организацию протокола обмена в многомашинной системе.

REN – флаг разрешения приема. Устанавливается и сбрасывается программно.

TB8 – разряд, устанавливаемый в режиме передачи в качестве девятого разряда в режимах 2 и 3. Устанавливается программно. В режиме 0 не используется.

RB8 – разряд, устанавливаемый в режиме приема аппаратно по состоянию девятого разряда. В режиме 0 не используется.

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

RI – флаг прерывания от приемника. Устанавливается аппаратно, когда байт данных принят, а сбрасывается программно после выполнения программы обслуживания.

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

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

Буфер приемника и буфер передатчика при программном доступе имеют одинаковое имя (SBUF) и адрес (99Н). Если команда использует SBUF как регистр источника, то обращение происходит к буферу приемника. Если команда использует SBUF как регистр назначения, то обращение происходит к буферу передатчика.

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

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