
Встроенные микропроцессорные системы / ВстроенныеСистемы / mps14
.docЛекция 14
6.4. Система прерываний микроконтроллера 8052
Программное управление системой прерывания осуществляется через два 8-разрядных регистра: IP (Interrupt Priority) – регистр приоритета прерываний и IE (Interrupt Enable) – регистр разрешения прерываний.
Для приема внешних запросов на прерывание служат линии /INT0 (P3.2) и /INT1 (P3.3), которые могут быть запрограммированы на срабатывание как по переходу из 1 в 0, так и по уровню. Управление типом входа осуществляется битами IT0 и IT1 регистра TCON. При 1 устанавливается режим срабатывания по переходу из 1 в 0. Запросы на прерывание от внешних источников устанавливают флаги IE0 и IE1 регистра TCON. В случае работы по переходу эти флаги сбрасываются автоматически при входе в соответствующую процедуру обработки прерывания.
Источниками внутренних прерываний являются флаги переполнения TF0 , TF1 и TF2, EXF2 таймеров/счетчиков, находящиеся в регистрах TCON и T2CON, а также флаги TI (от передачи) RI (от приема) регистра SCON UART. Флаги TF0 и TF1 очищаются автоматически при переходе в соответствующие процедуры обработки прерывания, тогда как флаги TF2, EXF2 TI RI не изменяются.
Каждый из источников прерываний маскируется независимо от других с помощью регистра маски IE. Соответствующие биты называются: EX0, EX1, ET0, ET1, ET2, ES. Бит ЕА – общее разрешение прерываний.
Вектора прерываний:
0003H – IT0;
0008H – TF0;
0013H – IT1;
001BH – TF1;
0023H – TI, RI;
002BH – TF2, EXF2.
6.5. УВВ микроконтроллера 8052
6.5.1. Порты ввода-вывода и интерфейс расширения
Система ВВ состоит из четырех двунаправленных 8-разрядных портов Р0 – Р3. Все поры отображены на SFR по адресам 80Н, 90Н, А0Н, В0Н. Кроме того, порты совмещены с битовым пространством SFR, что обеспечивает доступ к их отдельным разрядам независимо от других.
При обращении к внешней памяти программ или данных порты Р0 и Р2 выполняют альтернативные функции шин магистрали. A/D0-7 (совмещенная шина адреса/данных) и A8-15 (старшие линии адреса) соответственно, а P3.6 – /WR и P3.7 – /RD для внешней памяти данных. Выходная линия ALE МК инициирует демультиплексирование шины A/D, а выходная линия PSEN – чтение внешней памяти программ. На рис.6.4 приведена схема подключения внешней памяти программ и данных.
6.5.2. Таймеры/счетчики
Таймеры/счетчики наряду с системой прерываний относятся к средствам поддержки реального времени. Если таймеры необходимы для организации системы меток реального времени и отработки временных интервалов, то подсистема прерываний обеспечивает своевременную реакцию МК на асинхронные события, происходящие как внутри МПС, так и вне ее.
В состав МК 8052 входят три 16-разрядных таймера/счетчика СТ0, СТ1, СТ2. Состояние таймеров/счетчиков отражается программно-доступными регистровыми парами (ТН0, ТL0), (ТН1, ТL1), (ТН2, ТL2) соответственно, размещенными в RSF по адресам (8СН,8АН), (8DН,8BН) и (0CDН,0CCBН).
Таймеры/счетчики СТ1 и СТ2 могут быть запрограммированы для работы либо в качестве таймера, либо в качестве счетчика. Функция таймера состоит в счете числа машинных циклов, следующих с частотой Fosc/12. Функция счетчика заключается в отслеживании числа переходов из 1 в 0 на соответствующих входах Т0, Т1, Т2.
Управление режимом работы СТ0, СТ1 осуществляет регистр TMOD (89H). Регистр разбит на два 4-разрядных подрегистра T0MOD и T1MOD:
Для CT0
TMOD.0 M0 управление режимом (4 режима)
TMOD.1 M1
TMOD.2 C/T выбор функции таймера (0) или счетчика (1)
TMOD.3 GATE при GATE=0 работа зависит только от состояния бита TR0 регистра TCON
Аналогично для CT1
TMOD.4 M0
TMOD.5 M1
TMOD.6 C/T
TMOD.7 GATE
За управление СТ0, СТ1 также ответственен регистр TCON (88Н):
TCON.0 IT0 управление типом входа /INT0 (прерывание по срезу сигнала
TCON.1 IE0 запрос прерывания /INT0
TCON.2 IT1
TCON.3 IE1
TCON.4 TR0 запуск /останов СТ0
TCON.5 TF0 переполнение СТ0
TCON.6 TR1
TCON.7 TF1
На рис.6.5. приведена работа таймера/счетчика CT0/1 в двух наиболее популярных режимах 1 а) и 2 б).
б)
Для управления работой СТ2 служит регистр T2CON (0C8H):
T2CON.0 CP/RL2 флаг захвата/автозагрузки. Захват текущего со
стояния СT2 осуществляется по срезу T2EX, если EXEN2=1. При CP/RL2=0 разрешается автозагрузка CT2, если он переполнен или по срезу T2EX, если EXEN2=1.
T2CON.1 C/Т2 выбор функции таймера (0) или счетчика (1).
T2CON.2 TR2 запуск /останов СТ2.
T2CON.3 EXEN2 разрешение захвата по срезу T2EX.
T2CON.4 TCLK режим генератора для передатчика последовательного канала.
T2CON.5 RCLK режим генератора для приемника последовательного канала.
T2CON.6 EXF2 флаг выполнения захвата, вызывает прерывание.
T2CON.7 TF2 флаг переполнения СТ2, вызывает прерывание.
При захвате текущего состояния или при автозагрузке в управлении работой СТ2 участвует также 16-разрядный счетчик RCAP2 (RCAP2L – 0CAH, RCAP2H – 0CBH).
На рис.6.6. приведена работа таймера/счетчика CT2.
В качестве примера рассмотрим формирование секундной метки времени на базе CT0 (режим 1).
. . .
CNT25 EQU 48
SECUNDA BIT 0
. . .
ORG 0
JMP START
. . .
ORG 0BH
JMP INT_T0
. . .
ORG 100
START:
. . .
MOV TL0,# 3CH
MOV TH0,#0B0H
CLR SECUNDA
MOV CNT25,#40
MOV TMOD,#01
. . .
SETB ET0
SETB EA
SETB TR0
INT_T0: CLR TR0
MOV TL0,# 3CH
MOV TH0,#0B0H
SETB TR0
DJNZ CNT25, INT_T0E
SETB SECUNDA
MOV CNT25,#40
INT_T0E: RETI
. . .