Почему могут спускать колеса авто смотрите тут kamael.com.ua
Как снять комнату в коммунальной квартире здесь
Дренажная система водоотвода вокруг фундамента - stroidom-shop.ru


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

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

В состав БПИ входят:

● приемопередатчик,


предназначенный для обмена информацией по двухпро­водной линии с внешним устройством;

● буфер


с регистрами

SBUF

, обеспечивающий побайтный обмен информацией между внутренней шиной данных МК и приемопередатчиком. При программи­ровании оба буфера имеют одинаковое имя

SBUF

и адрес 99

h

. Если команда использует

SBUF

как регистр источника, то обращение происходит к буферу приемника, если же как регистр назначения, то обращение происходит к бу­феру передатчика;

● узел управления


для координации 4–х режимов работы БПИ;

● регистр


PCON

, имеющий единственный задействованный бит

SMOD

в по­зиции

PCON

.7 для удвоения скорости передачи данных через последова­тельный порт. Остальные биты зарезервированы для дальнейшего исполь­зования;

● регистр управления/статуса


SCON

, назначение разрядов которого приведено в табл. 7.1.4. Все разряды регистра доступны для записи и чтения.

Рассмотрим режимы работы блока последовательного интерфейса.

Режим 0


(

SM

0

= 0,

SM

1 = 0).

В этом режиме БПИ работает как сдвигающий регистр. Для него характерно следующее:



информация передается и принимается через вывод порта Р3.0 (использу­емый обычно как вход приемника

RxD

). Формат посылки — 8 бит;

● каждый передаваемый и принимаемый бит посылки синхронизируется им­пульсами (стробами) с частотой

FOSC

/12 (

FOSC

частота тактового генератора), передаваемыми через вывод порта Р3

.1(используемый обычно как выход пе­редатчика

TxD

).

Схема и временные диаграммы, иллюстрирующие работу последовательного порта в режиме

0,приведены на рис. 7

.1.14. рис. 7.1.14

ПЕРЕДАЧА активизируется любой командой, которая использует буфер пере­датчика

SBUF

в качестве регистра назначения. При выполнении такой команды в фазе

S

6

P

5 аппаратно вырабатывается импульс «Запись в

SBUF

»,

по которому:

● предназначенный для передачи байт данных через

SBUF

заносится в регистр сдвига передатчика;

● запускается блок управления передатчиком.

Через один полный машинный цикл аппаратно вырабатывается сигнал «По­сылка» = 1. разрешающий выдачу бита

D

0 из регистра сдвига передатчика на вы­ход

RxD

и импульсов «Сдвиг

TxD»

на выход

TxD

порта.

Импульсы «Сдвиг

TxD»

в состояниях S3,

S4, S5

имеют низкий уровень, в состоя­ниях

S6, S1, S2

— высокий. Их можно использовать для синхронизации внешних устройств.

При сигнале «Посылка» = 1 в фазе

S6P2

каждого машинного цикла аппаратно формируется импульс «Сдвиг», по которому содержимое передатчика смещается на один разряд вправо и на выходе

RxD

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

При получении от детектора нуля (после 8–го импульса «Сдвиг») сигнала «Пе­редатчик пуст» блок управления в фазе

S1P1

снимает сигнал «Посылка» и уста­навливает флаг прерывания передатчика

TI

в регистре управления

SCON

.

ПРИЕМ начинается при одновременном выполнении двух условий:

● должен быть установлен бит разрешения приема последовательных данных

(REN

= 1) в регистре управления

SCON

;

● должен быть сброшен флаг прерывания приемника (

RI

= 0) в регистре

SCON

.



На рис. 7.1.14, б показаны процессы при приеме после подачи сигнала «За­пись в

SCON»,

сбрасывающего флаг

RI

. В фазе

S

6

P

2 следующего машинного цикла узел управления приемником аппаратно вырабатывает сигнал «Прием» = 1, разрешающий выдачу импульсов «Сдвиг

TxD»

на выход

TxD

последовательного порта.

Так же как и при ПЕРЕДАЧЕ, импульсы «Сдвиг

TxD»

в состояниях S3,

S4, S5

имеют низкий уровень, в состояниях

S6, S1, S2

— высокий. Биты принимаемой посылки через вход

RxD,

состояние которого опрашивается в фазе

S5P2

каждого цикла, поступают в регистр сдвига приемника. При сигнале «Прием» – 1 в фазе

S6P2

каждого машинного цикла аппаратно формируется импульс «Сдвиг», по ко­торому содержимое сдвигающего регистра приемника сдвигается на один раз­ряд влево. Освободившийся младший разряд заполняется следующим битом данных, поступающим со входа

RxD.

После 8–го импульса «Сдвиг» в узле управле­ния приемником формируется сигнал «Загрузка

SBUF»,

по которому содержимое сдвигающего регистра переписывается в буфер приемника

SBUF.

В фазе

S1P1

10–го машинного цикла после сигнала «Запись в

SCON»

происходит сброс сигна­ла «Прием» («Прием» = 0) и установка флага прерывания приемника

(RI

= 1) в ре­гистре

SCON. рис. 7.1.15

Схема и временные диаграммы, иллюстрирующие работу врежимах1, 2, 3 приведены на рис. 7.1.15. В этих режимах БПИ работает какуниверсальный приемопередатчик.В передатчике и приемнике используются 9–разрядные реги­стры сдвига.

Режим 1


(SM0

= 0,

SM1

= 1). Информация передается через вывод Р3.1 порта Р3 (выход передатчика

TxD),

принимается — через вывод Р3.0 (вход приемника

RxD).

Формат посылки — 10 бит: нулевой старт–бит, 8 бит данных, единичный стоп–бит. В этом режиме сигналы синхронизации передачи (СИ Тх) и приема (СИ

Rx)

формируются путем деления на 16 или 32 (соответственно при значениях бита

SMOD

= 1 и

SMOD

= 0 регистра

PCON)

частоты

FT/C1

импульсов, поступающих с вы­хода таймера–счетчика T/C1.

Период синхронизации определяет время трансляции бита, т. е. его нахожде­ние на выводах

TxD

или

RxD

порта. Поэтому частота передачи и приема задается таймером–счетчиком T/C1 и составляет

FT/C1/16

или

FT/C1/32.

ПЕРЕДАЧА активизируется (так же как и в режиме 0) любой командой, которая использует буфер Передатчика

SBUF

в качестве регистра назначения. При выпол­нении такой команды аппаратно в фазе

S

6

P

5 вырабатывается импульс «Запись в

SBUF»,

по которому:

● предназначенный для передачи байт данных через

SBUF

загружается в ре­гистр сдвига передатчика;

● в 9–й разряд регистра сдвига передатчика заносится стоп–бит (1);

● запускается блок управления передатчиком.

Однако активный сигнал «Посылка#» = 0, который инициирует начало передачи, формируется только с приходом первого синхроимпульса «СИ Тх» в фазе

S1P1

машинного цикла. Первым из узла управления передатчиком через логические элементы И и ИЛИ на выход

TxD

поступает нулевой старт–бит. С приходом второ­го синхроимпульса «СИ Тх» формируется сигнал «Данные» = 1 для разрешения пе­редачи битов данных и девяти импульсов «Сдвиг». По фронту сигнала «Данные» из регистра сдвига передатчика на выход

TxD

выводится бит данных

D

0. Вывод последующих бит данных происходит с помощью импульсов «Сдвиг», которые формируются под действием каждого синхроимпульса «СИ Тх». По сигналу «Пе­редатчик пуст», формируемого детектором нуля после 9–го импульса «Сдвиг», узел управления передатчиком устанавливает флаг прерывания передатчика

TI

= 1 и снимает сигналы «Посылка#» и «Данные».

Для ПРИЕМА (бит

REN

= 1 в регистре

SCON

) данных по последовательному ка­налу в детекторе перепада 16 раз за период синхроимпульсов «СИ

Rx»

(с часто­той

FT/C1

или

FTC1/2)

с помощью

сигнала «Опрос

RxD»

производится опрос входа приемника. При обнаружении перехода сигнала на входе

RxD

из 1 в 0 (появлении старт–бита со стороны внешнего устройства), происходит сброс и новый запуск счетчика–делителя на 16 в цепи синхронизации, после чего начинается прием от­дельных бит байта данных. Счетчик–делитель позволяет фиксировать 16 состоя­ний (фаз) принимаемого бита. В состояниях 7, 8, 9 детектор бит с помощью сиг­нала «Опрос 7–9» считывает с входа

RxD

три значения принимаемого бита, по ма­жоритарному принципу «2 из 3–х» выбирает одно значение и передает его на вход регистра сдвига приемника. При этом узел управления приемника аппаратно формирует импульс «Сдвиг», в результате чего принятый бит заносится в сдвига­ющий регистр приемника и его содержимое сдвигается на один разряд в сторону старших разрядов. После 10–го импульса «Сдвиг» сдвигающий регистр приемни­ка заполняется и его восемь бит данных

D0–D7

по сигналу «Загрузка

SBUF»

заг­ружаются в буферный регистр приемника, A стоп–бит — в разряд

RB8

регистра управления

SCON

и устанавливается флаг прерывания приемником

RI

= 1. Сигнал «Загрузка

SBUF»,

биты

RB8

и

RI

вырабатываются блоком управления, если в мо­мент формирования 10–го импульса «Сдвиг» выполняются следующие условия:

1.

RI

= 0;

2. либо

SM2

= 0, либо стоп–бит равен 1.

Если хотя бы одно из условий не выполняется, флаг

RI

не устанавливается, A принятая посылка безвозвратно теряется.

Если при приеме старт–бита (первого бита посылки) детектор бит в результате мажоритарного отбора выдает 1 вместо 0, все устройства приемника сбрасыва­ются и начинается отслеживание перехода сигнала из 1 в 0 на входе

RxD.

Таким образом обеспечивается защита от сбойных старт–битов.

Режим 2


(SM0 =

1,

SM1

=0). Информация передается через вывод Р3.1 пор­та Р3 (выход передатчика

TxD),

принимается — через вывод Р3.0 (вход приемника

RxD).

Формат посылки — 11 бит: нулевой старт–бит, 8 бит данных, программиру­емый 9–й бит (бит ТВ8 регистра

SCON

при передаче, бит

R

В8 регистра

SCON

при приеме), единичной стоп–бит. частота передачи и приема задается про­граммно и составляет

FOSC

/32 или

FOSC

/64.

Помимо частоты синхронизации отличие режима 2 от режима 1 проявляется в том, что (см. рис. 7.1.15, а):

● данные содержат девять бит;

● при ПЕРЕДАЧЕ в регистр сдвига передатчика и детектор нуля по сигналу «За­пись в

SBUF»

засылается программируемый 9–й бит ТВ8;

● при ПРИЕМЕ вместо стоп–бита фигурирует принятый в посылке 9–й бит

RB

8.

Режим


3

(

SM

0 = 1,

SM

1 = 1). Этот режим отличается от режима 2 лишь тем, что частота передачи и приема задается таймером–счетчиком T/C1 (как в режиме 1).

Особенности работы в мультипроцессорных системах.


В регист­ре управления/статуса

SCON

последовательного интерфейса бит

SM

2 (позиция

SCON

.5) позволяет в режимах 2 и 3 приемопередатчика простыми средствами организовать обмен информацией между микроконтроллерами в локальных управ­ляющих сетях. В указанных режимах при

SM

2 = 1 флаг прерывания приемника

RI

не активизируется, если девятый бит

RB

8 принятых данных равен 0. Поэтому для межпроцессорного обмена передается

RB

8 = 1, чтобы при получении стоп–бита вызвать прерывание приемника установкой флага

RI

= 1.

Рассмотрим последовательность передачи данных ведущим микроконтролле­ром

M

К одному или нескольким ведомым. Ведущий МК в «широковещательном» режиме, когда работают все ведомые МК, посылает байт–идентификатор абонен­та (адресный код получателя), который отличается от байта данных наличием 1 в девятом разряде. При получении байта–идентификатора все ведомые МК вхо­дят в режим прерывания и вызывают подпрограмму сравнения байта–идентифи­катора с кодом собственного сетевого адреса. Микроконтроллер, собственный адрес которого совпадает с принятым байтом–идентификатором, производит сброс бита

SM2

и переходит к приему данных от ведущего МК. Остальные ведо­мые МК, адреса которых не совпадают с кодом байта–идентификатора, сохраня­ют значение бита

SM2

= 1 и передают управление основной программе. рис. 7.1.16

Блок таймеров/счетчиков

. Блок таймеров–счетчиков (T/C) относится к сред­ствам поддержки режима реального времени и предназначен для подсчета числа внешних событий, получения программно управляемых временных задержек, выполнения времязадающих функций МК и других целей. В состав блока тайме­ров/счетчиков входят (рис. 7.1.16):

● буфер


Б для связи ШД с внутренней шиной блока;

● два 16–разрядных таймера–счетчика


T/C0, T/C1, предназначенные для хране­ния содержимого счета. Каждый из Т/

Cn

(

n

= 0, 1) состоит из пары восьмираз­рядных регистров ТН0, ТН1 (старшие 8 разрядов) и

TL0, TL1

(младшие 8 раз–рядов);

● схема инкремента


СхИ для увеличения на 1 содержимого:

• регистров

TC0,

ТС1 (в каждом машинном цикле), для которых установлен режим таймера и счет разрешен;

• регистров

TC0,

ТС1, для которых установлен режим счетчика, счет разре­шен и на соответствующем входе Т0 или Т1 МК зафиксирован счетный им­пульс;

● схема фиксации ¯


INT

0, ¯

INT

1, Т0, Т1, состоящая из четырех триггеров, пред­назначенных для запоминания сигналов ¯

INT

0, ¯

INT

1, Т0, Т1 в момент

S

5

P

2 каждого машинного цикла;

● схема управления флагами,


устанавливающая и снимающая флаги перепол­нения

TF

и флаги запросов внешних прерываний

IE

;

● узел управления


T/C, синхронизирующий работу регистров T/C0, T/C1 в со­ответствии в запрограммированными режимами;

● восьмиразрядныйрегистр режимов

TMOD

для хранения кода, который зада­ет режимы работы

TC0,

ТС1, причем разряды (биты) 0...3 определяют режим работы

TC0, A

разряды 4...7 — ТС1. Назначение разрядов

TMOD

приведено в табл. 7.1.5; табл. 7.1.5

● восьмиразрядныйрегистр управления

TCON

, который предназначен для при­ема и хранения кода управляющего слова (табл. 7.1.6). табл. 7.1.6

Режимы 0, 1, 2 одинаковы для T/C0 и T/C1. Поэтому особенности работы в этих режимах проиллюстрируем на примере T/C0. рис. 7.1.17

Режим 0


(М1 = 0, М0 = 0). Логическая схема для этого режима приведена на рис. 7.1.17. В ее состав входят формирователь счетных импульсов и 13–разряд­ный счетчик, образованный из регистра ТН0 и 5 младших разрядов регистра Т

L

0).

Сигнал переполнения (переход из состояния «все единицы» в состояние «все нули») счетчика фиксируется установкой флага

TF

0 = 1 в разряде 5 регистра уп­равления

TCON

. Счет разрешается при

TR

0 = 1,

GATE0

= 0 или

TR0

=

1, ¯

INT

0 =1. Бит С/¯Т0, поступающий на адресный вход мультиплексора из регистра режимов

TMOD

, задает для ТС0 функцию таймера (С/¯Т0 = 0) или счетчика (С/¯Т0 = 1 ).

Функциятаймерасостоит в счете импульсов, следующих с частотой

FOSC

/12. При функционировании ТС0 в качествесчетчикавнешних событий ведется под­счет числа переходов из 1 в 0 на входе Т0. При этом вход ТС0 аппаратно проверя­ется в фазе

S

5

P

2 каждого машинного цикла. Если в текущем машинном цикле Т0 = 1, A в последующем Т0 = 0, то содержимое счетчика увеличивается на 1 и фиксируется в фазе

S

3

P

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

FOSC

/24. Каждый уровень (1 или 0) на входе Т0 должен удер­живаться не менее одного машинного цикла.

Режим 1


(М1 = 0, М0 = 1). Отличие режима 1 от режима 0 обусловлено лишь тем, что в счетчике используются все восемь разрядов регистра Т

L

0 (рис. 7.1.17).

Режим 2


(М1 = 1, М0 = 0). В этом режиме переполнение 8–битного счетчика Т

L

0 приводит не только к установке флага переполнения Т

F

0 (рис. 7.1.18), но и к перезагрузке Т

L

0 содержимым регистра ТН0, которое предварительно было за­дано программным путем. рис. 7.1.18

Режим 3


(М1 = 1, М0 = 1). В этом режиме задействован только таймер–счет­чик ТС0, который можно представить как два независимых устройства (рис. 7.1.19). В первом устройстве в качестве счетчика используется регистр

TL

0. Принцип его работы такой же, как и в режиме 0. Второе устройство выполняет только функции таймера. Его счетчик построен на регистре ТН0. Включение счетчика осуществля­ется битом

TR

1, A для фиксации переполнения используется флаг

TF

1. рис. 7.1.19

Установка ТС1 в режим 3 приводит к блокировке регистров

TL

1,

TH

1 с сохра­нением их содержимого.

Блок прерываний.

Назначение и состав блока.Блок прерыванийпредназначендля организации системы прерывания программ. Он обеспечивает поддержку прерываний от пяти источников:

●от флагов

IE0,

IE

1 регистра управления

TCON

(см. табл. 7.1.6), инициируемых внешними сигналами запроса

INT

0,

INT

1;

● от флагов

TF

0,

TF

1 регистра

TCON

, устанавливаемых при переполнении тай­меров/счетчиков T/C0, T/C1;

● от флага прерывания передатчика

TI

или приемника

RI

регистра управления

SCON

(см. табл. 7.1.4) последовательного порта. табл. 7.1.4

В состав блока прерываний входят (рис. 7.1.20): рис. 7.1.20

буферБ, обеспечивающий обмен информацией между шиной данных МК и внутренней шиной блока прерываний;

● схемавыработки вектора прерыванияСВВ, формирующая двухбайтовые ад­реса подпрограмм обслуживания прерывания;

● узелуправления;

регистр управления/статуса

SCON

(табл. 7.1.4);

● регистр управления/статуса


ТСОN (табл. 7.1.6);

● регистр разрешения


(маскирования)прерываний

IE

, предназначенный для разрешения или запрещения прерывания для каждого из пяти источников прерываний. Назначение отдельных битов регистра приведено в табл. 7.1.7; табл. 7.1.7 - табл. 7.1.8

● регистр приоритетов прерываний


IP

, предназначенный для установки уровня приоритета прерывания для каждого из пяти источников прерываний. Назна­чение отдельных битов регистра приведено в табл. 7.1.8.

Организация прерываний.


Средства прерывания МК позволяют откли­каться на сигналы ¯

I

М

Tn

внешних запросов (здесь и далее

n

= 0, 1), сигналы

TFn

переполнения таймеров–счетчиков T/C

n

, сигналы завершения последовательного обмена Т

I

,

RI

. Для пояснения принципов организации прерываний от отдельных источников воспользуемся рис. 7.1.21. рис. 7.1.21

При поступлении внешнего сигнала запроса ¯

INTn

происходит установка флага

IEn

регистра управления ТСОN, вызывающая выполнение соответствующей под­программы обслуживания прерывания. При этом вид активизации прерывания определяется состоянием флагов

I

Т

n

регистра ТСОN: при

I

Т

n

= 1 — по уровню, при

I

Т

n

= 0 — по фронту (перепаду из 1 в 0) сигнала ¯

INTn

.

Если прерывание активизируетсяпо уровню,то сигнал запроса ¯

INTn

= 0 дей­ствует постоянно и снимается в конце обслуживающей подпрограммы, чтобы не вызвать повторного обслуживания. Сигнал запроса ¯

INTn

распознается аппа­ратными средствами МК за один машинный цикл (12 периодов тактовой частоты), после чего устанавливается флаг прерывания

IEn

. Флаг

IEn

сбрасывается после снятия сигнала ¯

INTn

. Отметим, что флаг

IEn

при переходе к подпрограмме обра­ботки прерывания автоматически сбрасывается, A затем вновь устанавливается, если на соответствующем выводе порта сигнал ¯

INTn

= 0 сохраняется. Поэтому программная установка флагов

IEn

= 1 вызовет прерывание и после перехода к подпрограмме флаг будет сброшен

IEn

= 0.

В случае активизации прерыванияпо фронту дляраспознавания сигнала ¯

INTn

требуется не менее двух машинных циклов. Установка флага

IEn

происходит после того, как две последовательные проверки покажут ¯

INTn

= 1 в одном цикле и ¯

INTn

= 0 — в другом. Сброс флага

IEn

выполняется аппаратно при обращении к подпрограмме обслуживания прерывания.

Флаги запросов прерывания

TFn

от таймеров–счетчиков Т/

Cn

устанавливаются после их переполнения и сбрасываются автоматически при передаче управления подпрограмме обслуживания.

Прерывание от последовательного порта вызывается аппаратной установкой флага прерывания передатчика

TI

или флага прерывания приемника

RI

в регистре

SCON

по завершении передачи или приема байта данных. Сброс флагов

TI

,

RI

производится программным способом.

Отметим, что флаги

IEn

,

TFn

,

RI

,

TI

могут быть программно установлены или сброшены как соответствующие биты регистров

TCON

,

SCON

. Кроме того, преры­вания по ¯

INTn

могут вызываться программной установкой нулевого сигнала на выводах Р3.2, Р3.3 порта Р3.

Каждый из источников прерываний

IE

0,

TF

0,

IE

1,

TF

1,

RI





٧





TI

может быть инди­видуально разрешен или запрещен установкой или сбросом соответствующего бита в регистре разрешения прерывания

IE

(рис. 7.1.21). Регистр

IE

содержит так­же бит ЕА, значение которого ЕА = 0 запрещает сразу все прерывания. При ЕА = 1 запрет на все прерывания снимается.

Уровни прерываний.


Структура приоритетов прерываний является двух­ступенчатой. Каждому из пяти источников прерываний

IE

0, ТР0,

IE

1,

TF

1,

RI





٧





TI

может быть индивидуально присвоен высокий (1) или низкий (0) уровень преры­вания с помощью установки или сброса соответственно битов РХ0,

PN

0, РХ1, РТ1,

PS

в регистре приоритетов прерываний

IP

(рис. 7.1.21). При этом, если одновре­менно приняты два запроса:

● сразными уровнями прерывания,то сначала обслуживается запрос с высо­ким уровнем приоритета;

● содинаковым уровнем приоритета,то их обработка будет производиться в следующей последовательности:

IE

0,

TF

0,

IE

1,

TF

1,

RI





٧





TI

(стрелка на рис. 7.1.21).

Кроме того, подпрограмма обработки прерывания:

● снизким уровнемможет быть прервана запросом прерывания с высоким уров­нем приоритета, но не может быть прервана другим запросом с низким уровнем;

● свысоким уровнемне может быть прервана никаким другим запросом пре­рывания.

Последовательность обработки прерываний.


Установка флагов прерывания происходит в фазе

S5P6

машинного цикла. В следующем машинном цикле выполняется опрос флагов внутренними средствами. И после выполнения последнего цикла текущей команды производится аппаратный вызов соответ­ствующей подпрограммы обслуживания, эквивалентный команде

LCALL.

Обращение к подпрограмме обслуживания задерживается в трех случаях:

● при обработке подпрограммы прерывания с таким или высшим приоритетом;

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

● выполняется команда

RETI

(конец прерывания) или любая команда обраще­ния к регистрам

IE,

IP.

В этом случае перед вызовом подпрограммы обслужи­вания прерывания после окончания одной из вышеуказанных команд обяза­тельно должна выполниться минимум еще одна команда текущей программы. Флаг прерывания, установленный во время действия блокировки прерывания по одному из трех указанных выше условий и сброшенный до их снятия, не вызо­вет обслуживания соответствующего запроса прерывания.

Аппаратная команда

LCALL

загружает в стек только содержимое счетчика ко­манд

PC

(в ячейку стека с младшим адресом — разряды 0–7, A в следующую ячейку — разряды 8–15), после чего записывает в

PC

стартовый адрес соответ­ствующей подпрограммы обработки прерывания

(03h

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

IE

0, 0

Bh

для

TF0, 13h

для

IE1

, 1

Bh

для

TF1

,

23h

для

RI





٧





TI).

По этому адресу может располагаться команда безусловной передачи управления

(JMP)

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

(PUSH)

содержимого регистров слова состояния програм­мы

PSW,

аккумулятора A, указателя данных

DPTR

и др. В этом случае подпрограм­ма должна заканчиваться командами

(POP)

восстановления регистров из стека.

Подпрограмма обслуживания прерывания продолжается до выполнения ко­манды

RETI

или

RET.

Команда

RETI

загружает в счетчик команд

PC

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

При использовании команды

RET

восстанавливается только состояние счетчи­ка команд, т. е. происходит возврат в прерванную программу. Состояние логики прерывания команда

RET

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

RET.

Поэтому необходи­мо иметь программный механизм окончания процедуры обслуживания данного прерывания (восстановления логики управления обслуживания).



Рекомендуйте эту статью другим!