Методическое пособие 229
.pdfВнешние прерывания инициируются сигналами на входах INT0 (вывод Р3.2) и INT1 (вывод Р3.3). Микроконтроллер реагирует на прерывание, если установлен соответствующий флаг в регистре TCON (IE0 или IE1) (TCON образовано от слов
Timer Control, IE – Interrupt Enable). Флаг ЕА (Enable interrupt)
разрешает работу всех прерываний, для каждого из которых установлен бит в TCON. Прерывания INT0 и INT1 (от слова interrupt) могут быть вызваны уровнем или переходом сигнала из 1 в 0 на входах INT0 (вывод Р3.2) и INT1 (вывод Р3.3). Тип прерывания определяют управляющие биты IT0, IT1 (interrupt type) в регистре TCON. Если один из этих битов ITi (i = 0, 1) установлен, то прерывание вызывается по переходу 1-0 на соответствующем входе INTi (i = 0, 1) микроконтроллера. Если один из битов ITi (i = 0, 1) сброшен, то прерывание вызывается при наличии низкого уровня на соответствующем входе. Когда все рассмотренные выше биты (ITi, IЕi, (i = 0, 1), ЕА) установлены соответствующим образом, то при возникновении прерывания инициируется вызов соответствующей программыобработчика прерывания. Сброс флага IЕi, (i = 0, 1), выполняется автоматически в случае, если прерывание вызвано перепадом сигнала на входе INTi (i = 0, 1). Если же вход прерывания INTi (i = 0, 1) настроен на срабатывание по низкому уровню, то состояние IЕi, (i = 0, 1) должна отслеживать программаобработчик данного прерывания. Управляющие биты представлены в прил. 2.
Внешние прерывания INT0 и INT1 могут (если разрешены) вызываться либо установкой низкого уровня на соответствующем выводе микроконтроллера (на реальном объекте), либо программной установкой битов Р3.2 и/или Р3.3 (в среде моделирования микроконтроллера).
Вектора внешних прерываний следующие: 0х03Н –INT0, 0x13Н – INT1. Другими словами, если прерывание происходит по INT0 (INT1), то адрес программы-обработчика прерывания содержится по адресу 0х03Н (0х13Н). Запись адресов происходит на этапе работы редактора связей (линкёра).
11
Разработаем структуру МПС и напишем программный модуль, обеспечивающий изменение состояния светодиода по запросу от специальной кнопки. Функциональная схема МПС представлена на рис. 2. К выводу P3.2 (INT0) подключена кнопка. Для подавления дребезга использован RS-триггер. По нажатию кнопки на вывод Р3.2 подается сигнал низкого уровня, что приводит к вызову программы-обработчика прерывания.
+5B |
|
Ucc |
|
|
RST |
Uss |
|
+U |
|
R |
T |
|
Q |
S |
|
+U. |
|
XTAL1 |
P1 |
|
|
XTAL2 |
P0.0 |
|
P0.1 |
RST |
P0.2 |
|
P0.3 |
EA |
P0.4 |
|
P0.5 |
P3.0 |
.+U |
P0.6 |
|
P3.1 |
P0.7 |
P3.2 |
|
P3.3 |
P2 |
P3.4 |
|
P3.5 |
ALE |
P3.6 |
|
P3.7 |
PSEN |
Рис. 2. Функциональная схема МПС
Соответствующий программный модуль представлен ниже. Для запуска обработчика прерывания необходимо смоделировать нажатие кнопки.
12
#include <REG51.H> sbit s=P0^1;
sbit I=P3^2;
//обработчик прерываний по INT0
//для INT1 нужно написать interrupt 2 (см. табл. 3) void PP() interrupt 0
{
//моделирование отжатой кнопки
I=1;
//запрещение прерываний //(команда необязательная –
//по усмотрению разработчика программы) EA=0;
//изменение состояния светодиода s=~s;
//снятие блокировки прерывания; //обязательно, если присутствует EA=0; EA=1;
}
main()
{
EA=1;//снятие блокировки прерывания EX0=1;//разрешение внешнего прерывания INT0
//(для INT1 – EX1=1) IT0=1;//тип прерывания INT0 – по срезу
//(для INT1 – IT1=1) for(;;);//бесконечный цикл
}
13
Задание 1. Проверьте работу составленного выше программного модуля.
Задание 2. Разработайте структуру МПС на базе МК1816ВЕ51 и напишите программный модуль, обеспечивающий реализацию заданной преподавателем последовательности свечения 8 светодиодов в бесконечном режиме по запросу от специальной кнопки.
Отладить программный модуль.
Контрольные вопросы
1.Что такое метод передачи данных по прерыванию, и в чем его сущность?
2.Что такое процедура поллинга?
3.По какому алгоритму осуществляется идентификация источника запроса на прерывание в процедуре поллинга?
4.К каким выводам МК ВЕ51 можно подключить кнопку для реализации заданий 1, 2?
5.Что такое вектор прерывания?
6.Что такое обработчик прерывания?
7.Какие управляющие биты Вы использовали для организации системы прерываний?
8.Как осуществить выбор вектора прерывания для описания обработчика прерывания?
Домашнее задание
Оформите отчет по результатам выполнения лабораторной работы № 2. Отчет должен включать разработанные в соответствии с заданиями функциональные схемы и программные модули.
14
ПРИЛОЖЕНИЕ 1
Корпус кристалла и структура КМ1816ВВ51
Рис. П1.1. Корпус кристалла
15
Рис. П1.2. Структурная схема кристалла
16
|
|
|
|
|
|
|
|
ПРИЛОЖЕНИЕ 2 |
|
|
|
|
|
|
|
|
Таблица П2.1 |
|
|
|
|
|
|
|
Альтернативные функции порта 3 |
|
|
|
|
|
|
|
|
|
|
Символ |
Позиция |
Имя и назначение |
||||||
|
|
|
|
|
|
|
P3.7 |
Чтение. Активный сигнал низкого уровня |
|
|
RD |
||||||
|
|
|
|
|
|
|
|
формируется аппаратно при обращении к |
|
|
|
|
|
|
|
|
ВПД |
|
|
|
|
|
|
P3.6 |
Запись. Активный сигнал низкого уровня |
|
WR |
||||||||
|
|
|
|
|
|
|
|
формируется аппаратно при обращении к |
|
|
|
|
|
|
|
|
ВПД |
T1 |
P3.5 |
Вход таймера/счетчика 1 или тест-вход |
||||||
T0 |
P3.4 |
Вход таймера/счетчика 0 или тест-вход |
||||||
|
|
|
|
|
|
|
P3.3 |
Вход запроса прерывания 1. Воспринима- |
|
|
INT1 |
||||||
|
|
|
|
|
|
|
|
ется сигнал низкого уровня или срез |
|
|
|
|
|
|
|
P3.2 |
Вход запроса прерывания 0. Воспринима- |
|
|
INT0 |
||||||
|
|
|
|
|
|
|
|
ется сигнал низкого уровня или срез |
TXD |
P3.1 |
Выход передатчика последовательного |
||||||
|
|
|
|
|
|
|
|
порта в режиме УАПП. Выход синхрони- |
|
|
|
|
|
|
|
|
зации в режиме сдвигающего регистра |
RXD |
P3.0 |
Выход приемника последовательного пор- |
||||||
|
|
|
|
|
|
|
|
та в режиме УАПП. Ввод/вывод данных в |
|
|
|
|
|
|
|
|
режиме сдвигающего регистра |
17
|
|
|
|
Таблица П2.2 |
|
|
|
|
Регистр режима работы таймера/счетчика |
||
|
|
|
|
|
|
|
Символ |
Позиция |
Имя и назначение |
||
|
GATE |
TMOD.7 |
Управление блокировкой. Если бит ус- |
|
|
|
|
|
для |
тановлен, то таймер/счетчик “x” раз- |
|
|
|
|
T/C1 и |
решён до тех пор, пока на входе |
|
|
|
|
TMOD.3 |
“INTx” высокий уровень и бит управ- |
|
|
|
|
для |
ления “TRx” установлен. Если бит |
|
|
|
|
T/C0 |
сброшен, то Т/С разрешается, как |
|
|
|
|
|
только бит управления “TRx” устанав- |
|
|
|
|
|
ливается |
|
|
|
|
TMOD.6 |
Бит выбора режима таймера или счёт- |
|
|
C/T |
|
|||
|
|
|
для |
чика событий. Если бит сброшен, то |
|
|
|
|
T/C1 и |
работает таймер от внутреннего источ- |
|
|
|
|
TMOD.2 |
ника сигналов синхронизации. Если |
|
|
|
|
для |
бит установлен, то работает счётчик от |
|
|
|
|
T/C0 |
внешних сигналов на входе “Tx” |
|
|
M1 |
TMOD.5 |
Режим работы (см. примечание) |
|
|
|
|
|
для |
|
|
|
|
|
T/C1 и |
|
|
|
|
|
TMOD.1 |
|
|
|
|
|
для |
|
|
|
|
|
T/C0 |
|
|
|
M0 |
TMOD.4 |
|
|
|
|
|
|
для |
|
|
|
|
|
T/C1 и |
|
|
|
|
|
TMOD.0 |
|
|
|
|
|
для |
|
|
|
|
|
T/C0 |
|
|
18
|
|
|
|
|
Примечание к табл. П2.2 |
|
|
|
|
|
|
М1 |
|
|
М0 |
|
Режим работы |
0 |
|
0 |
Таймер МК48. “ТLx” работает как 5-битный |
||
|
|
|
|
предделитель |
|
0 |
|
1 |
16-битный таймер/счётчик. “THx” и “TLx” |
||
|
|
|
|
включены последовательно |
|
1 |
|
0 |
8-битный автоперезагружаемый тай- |
||
|
|
|
|
мер/счётчик. “THx” хранит значение, кото- |
|
|
|
|
|
рое должно быть перезагружено в “TLx” |
|
|
|
|
|
каждый раз по переполнению |
|
1 |
|
1 |
Таймер/счётчик 1 останавливается. Тай- |
||
|
|
|
|
мер/счётчик 0 : TL0 работает как 8-битный |
|
|
|
|
|
таймер/счётчик, и его режим определяется |
|
|
|
|
|
управляющими битами таймера 0. TH0 ра- |
|
|
|
|
|
ботает только как 8-битный таймер, и его |
|
|
|
|
|
режим определяется управляющими битами |
|
|
|
|
|
таймера 1 |
|
|
|
|
|
|
Таблица П2.3 |
|
|
|
Регистр управления/статуса таймера |
||
|
|
|
|
||
Символ |
|
Позиция |
Имя и назначение |
||
|
|
|
|
|
|
1 |
|
|
2 |
|
3 |
TF1 |
|
TCON.7 |
Флаг переполнения таймера 1. Уста- |
||
|
|
|
|
|
навливается аппаратурно при перепол- |
|
|
|
|
|
нении таймера/счётчика. Сбрасывается |
|
|
|
|
|
при обслуживании прерывания аппара- |
|
|
|
|
|
турно |
TR1 |
|
TCON.6 |
Бит управления таймера 1. Устанавли- |
||
|
|
|
|
|
вается/сбрасывается программой для |
|
|
|
|
|
пуска/останова |
|
|
|
|
|
19 |
|
|
Продолжение табл. П2.3 |
|
|
|
1 |
2 |
3 |
TF0 |
TCON.5 |
Флаг переполнения таймера 0. Устанав- |
|
|
ливается аппаратурно. Сбрасывается |
|
|
при обслуживании прерывания |
TR0 |
TCON.4 |
Бит управления таймера 0. Устанавлива- |
|
|
ется/сбрасывается программой для пус- |
|
|
ка/останова таймера/счётчика |
IE1 |
TCON.3 |
Флаг фронта прерывания 1. Устанавли- |
|
|
вается аппаратурно, когда детектируется |
|
|
срез внешнего сигнала ЗПР1 (INT1). |
|
|
Сбрасывается при обслуживании пре- |
|
|
рывания |
IT1 |
TCON.2 |
Бит управления типом прерывания 1. |
|
|
Устанавливается/сбрасывается про- |
|
|
граммно для спецификации запро- |
|
|
саЗПР1 (срез/низкий уровень) |
IE0 |
TCON.1 |
Флаг фронта прерывания 0. Устанавли- |
|
|
вается по срезу сигнала ЗПР0. Сбрасы- |
|
|
вается при обслуживании прерывания |
IT0 |
TCON.0 |
Бит управления типом прерывания 0. |
|
|
Устанавливается/сбрасывается про- |
|
|
граммно для спецификации запроса |
|
|
ЗПР0 (срез/низкий уровень) |
20