Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stenin Lab / C8051F60-67-устройство МК.pdf
Скачиваний:
150
Добавлен:
10.02.2015
Размер:
5.19 Mб
Скачать

C8051F060/1/2/3/4/5/6/7

13.3. ОБРАБОТКА ПРЕРЫВАНИЙ

CIP-51 имеет развитую систему прерываний, поддерживающую в общей сложности 22 источника прерываний с двумя уровнями приоритета. Распределение источников прерываний между встроенными периферийными модулями и внешними входными выводами зависит от конкретного типа МК. Каждый источник прерываний имеет один или несколько связанных с ним флагов прерываний, размещенных в SFR. Когда периферийный модуль или внешний источник прерываний регистрирует событие, удовлетворяющее условию прерывания, соответствующий флаг прерывания устанавливается в 1.

Если прерывание от источника прерываний разрешено, то при установке флага прерывания генерируется запрос прерывания. Как только выполнение текущей команды завершится, будет сгенерирована команда LCALL перехода по предопределенному адресу, откуда начнется исполнение процедуры обслуживания прерывания (interrupt service routine - ISR). Каждая ISR должна заканчиваться командой RETI, которая возвращает управление прерванной программе и приводит к выполнению той команды, которая исполнилась бы, если бы запроса прерывания не было. Если прерывания не разрешены, флаг прерывания игнорируется и выполнение программы продолжается в нормальном режиме. (Флаг прерывания устанавливается в 1 независимо от того, разрешены прерывания или запрещены).

Прерывание от каждого источника прерываний может быть разрешено или запрещено с помощью соответствующих битов разрешения прерываний в регистрах SFR (IE-EIE2). Однако, сначала прерывания необходимо разрешить глобально установкой в 1 бита EA (IE.7), только после этого состояние индивидуальных флагов разрешения прерываний будет иметь силу. Сброс в 0 бита ЕА запрещает прерывания от всех источников прерываний независимо от состояния индивидуальных флагов разрешения прерываний.

Некоторые флаги прерываний сбрасываются автоматически аппаратными средствами при переходе к процедуре ISR. Однако большинство флагов прерываний не сбрасываются аппаратно и должны быть сброшены программно до возвращения из процедуры ISR. Если флаг прерывания остается установленным после завершения выполнения команды возврата из прерывания (RETI), то сразу же будет сгенерирован новый запрос прерывания и после завершения выполнения следующей команды произойдет повторный переход к процедуре

ISR.

13.3.1. Источники и векторы прерываний

Данное семейство МК поддерживает 22 источника прерываний. Программа может симулировать прерывание установкой в 1 любого флага прерывания. Если прерывание для этого флага разрешено, будут сгенерирован запрос прерывания и произойдет переход по адресу процедуры ISR, связанной с этим флагом прерывания. Источники прерываний МК, соответствующие им адреса прерываний, уровень приоритета и биты управления перечислены в таблице 13.4. Подробная информация относительно условий возникновения прерываний от периферийных модулей и поведения их флагов прерываний приведена в разделах данного руководства, посвященных работе соответствующих периферийных модулей.

13.3.2. Внешние прерывания

Два внешних источника прерываний (/INT0 и /INT1) настраиваются как входы с низким активным уровнем, чувствительные к уровню или к фронту сигнала, в зависимости от состояния битов IT0 (TCON.0) и IT1 (TCON.2). Биты IE0 (TCON.1) и IE1 (TCON.3) служат флагами прерываний для внешних прерываний /INT0 и /INT1 соответственно. Если вход /INT0 или /INT1 настроен как чувствительный к фронту, то соответствующий флаг прерывания автоматически сбрасывается аппаратными средствами при переходе к процедуре ISR. Если вход /INT0 или /INT1 настроен как чувствительный к уровню, то соответствующий флаг прерывания отслеживает (повторяет) состояние входного вывода внешнего прерывания. Внешний источник прерывания должен удерживать на этом входе активный уровень до тех пор, пока запрос прерывания не будет распознан. Затем необходимо деактивировать запрос прерывания до окончания выполнения процедуры ISR, иначе будет сгенерирован другой запрос прерывания.

151

Ред. 1.2

C8051F060/1/2/3/4/5/6/7

Таблица 13.4. Источники прерываний

 

Вектор

Приоритет

 

 

Битовая адресация?

Аппаратный ?сброс

 

Управление

 

 

 

 

 

 

 

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

преры-

 

 

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

 

 

Бит разрешения

 

 

 

 

приоритетом

 

 

 

 

 

 

 

 

вания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сброс

0x0000

Наи

-

Нет

N/A

N/A

Разрешен всегда

Всегда

выс-

наивысший

 

 

ший

 

 

 

 

 

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

0x0003

0

 

IE0 (TCON.1)

Y

Y

EX0 (IE.0)

PX0 (IP.0)

(/INT0)

 

 

 

 

 

 

 

 

 

Переполнение

0x000B

1

 

TF0 (TCON.5)

Y

Y

ET0 (IE.1)

PT0 (IP.1)

Таймера 0

 

 

 

 

 

 

 

 

 

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

0x0013

2

 

IE1 (TCON.3)

Y

Y

EX1 (IE.2)

PX1 (IP.2)

(/INT1)

 

 

 

 

 

 

 

 

 

Переполнение

0x001B

3

 

TF1 (TCON.7)

Y

Y

ET1 (IE.3)

PT1 (IP.3)

Таймера 1

 

 

 

 

 

 

 

 

 

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

0x0023

4

 

RI0 (SCON0.0)

Y

 

ES0 (IE.4)

PS0 (IP.4)

порт УАПП0

 

TI0 (SCON0.1)

 

 

 

 

 

 

 

 

Таймер 2

0x002B

5

 

TF2 (TMR2CN.7)

Y

 

ET2 (IE.5)

PT2 (IP.5)

 

 

 

 

SPIF (SPI0CN.7)

 

 

 

 

Модуль SPI

0x0033

6

 

WCOL (SPI0CN.6)

 

 

 

 

 

MODF (SPI0CN.5)

Y

 

ESPI0 (EIE1.0)

PSPI0 (EIP1.0)

 

 

 

 

RXOVRN

 

 

 

 

 

 

 

 

(SPI0CN.4)

 

 

 

 

Модуль SMBus

0x003B

7

 

SI (SMB0CN.3)

Y

 

ESMB0 (EIE1.1)

PSMB0 (EIP1.1)

Детектор диапазона

0x0043

8

 

AD0WINT

Y

 

EWADC0

PWADC0

АЦП0

 

(ADC0CN.1)

 

(EIE1.2)

(EIP1.2)

 

 

 

 

 

Программируемый

0x004B

9

 

CF (PCA0CN.7)

Y

 

EPCA0 (EIE1.3)

PPCA0 (EIP1.3)

массив счетчиков

 

CCFn (PCA0CN.n)

 

 

 

 

 

 

 

 

Компаратор 0

0x0053

10

 

CP0FIF/CP0RIF

Y

 

CP0IE (EIE1.4)

PCP0 (EIP1.4)

 

(CPT0CN.4/.5)

 

 

 

 

 

 

 

 

 

Компаратор 1

0x005B

11

 

CP1FIF/CP1RIF

Y

 

CP1IE (EIE1.5)

PCP1 (EIP1.5)

 

(CPT1CN.4/.5)

 

 

 

 

 

 

 

 

 

Компаратор 2

0x0063

12

 

CP2FIF/CP2RIF

Y

 

CP2IE (EIE1.6)

PCP2 (EIP1.6)

 

(CPT2CN.4/.5)

 

 

 

 

 

 

 

 

 

Завершение

0x006B

13

 

ADC0INT

Y

 

EADC0 (EIE1.7)

PADC0 (EIP1.7)

преобразования АЦП0

 

(ADC0CN.5)

 

 

 

 

 

 

 

 

Таймер 3

0x0073

14

 

TF3 (TMR3CN.7)

Y

 

ET3 (EIE2.0)

PT3 (EIP2.0)

Завершение

0x007B

15

 

ADC1INT

Y

 

EADC1 (EIE2.1)

PADC1 (EIP2.1)

преобразования АЦП1

 

(ADC1CN.5)

 

 

 

 

 

 

 

 

Таймер 4

0x0083

16

 

TF4 (TMR4CN.7)

Y

 

ET4 (EIE2.2)

PT4 (EIP2.2)

Детектор диапазона

0x008B

17

 

AD2WINT

Y

 

EWADC2

PWADC2

АЦП2

 

(ADC2CN.1)

 

(EIE2.3)

(EIP2.3)

 

 

 

 

 

Завершение

0x0093

18

 

AD2INT

Y

 

EADC2 (EIE2.4)

PADC2 (EIP2.4)

преобразования АЦП2

 

(ADC2CN.5)

 

 

 

 

 

 

 

 

Модуль CAN

0x009B

19

 

CAN0CN.7

Y

Y

ECAN0 (EIE2.5)

PCAN0 (EIP2.5)

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

0x00A3

20

 

RI1 (SCON1.0)

Y

 

ES1 (EIE2.6)

PS1 (EIP2.6)

порт УАПП1

 

TI1 (SCON1.1)

 

 

 

 

 

 

 

 

Прерывание от

0x00AB

21

 

DMA0INT

Y

 

EDMA0

PDMA0

интерфейса DMA0

 

(DMA0CN.6)

 

(EIE2.7)

(EIP2.7)

 

 

 

 

 

Ред. 1.2

152