i
МИКРОКОНТРОЛЛЕРЫ
(
Александр Черномырдин
E-mail:
chav1961 @ mail.ru
|
В данной статье будут рассмотрены вопросы обработки сигналов
>
прерывания и еще одна специальная техника программирования -
1
виртуальные таймеры. Знатоков вновь просят не сетовать на
I
терминологию и упрощения.
Автоматное програм м ирование
для м икроконтроллеров - 2
Часть 2: прерывания и вирту-
альные таймеры
> Обработчики прерываний
> Фоновый процесс
> Подпрограммы с параметрами
> Инициализация из образа
> Битовые маски и работа с ними
В предыдущей статье цикла мы рас-
смотрели вопросы автоматного про-
граммирования и отметили, что для
реализации автоматов применяется
один из двух способов - либо эм/КсИ-
технология, либо программа-интерпре-
татор конечного автомата. В обоих
случаях работа автомата заключает-
ся в том, что он непрерывно проверя-
ет, не произошло ли интересующее
нас событие (терминальный символ),
и при его появлении выполняет те или
иные действия. А поскольку проверка
терминальных символов происходит
непрерывно, это значит, что ничем
другим микроконтроллер в это время
заниматься не может. Во многих слу-
чай от микроконтроллера в общем-то
ничего большего и не требуют, но та-
кой способ использования аппарату-
ры микроконтроллера выглядит по
крайней мере расточительным. Меж-
до тем в микроконтроллере есть сред-
ства, которые позволяют узнать об ин-
тересующем нас событии без непре-
рывного опроса сигналов. Эти сред-
ства представлены в микроконтролле-
ре механизмом
прерываний.
Очень упрощенно механизм пре-
рываний работает следующим обра-
зом. В аппаратуре микроконтроллера
есть специальные схемы, предназна-
ченные для отслеживания состояния
некоторых сигналов. К этим сигналам
относятся сигналы на линиях портов,
сигнал от регистра интервала интер-
вального таймера, сигнал переполне-
ния сторожевого таймера, сигнал окон-
чания операции записи в ЭСППЗУ и
сигнал переполнения (переопустоше-
ния) стеков данных и адресов возвра-
та. После выполнения любой команды
программы аппаратура микроконтрол-
лера проверяет, не изменилось ли со-
стояние этих сигналов. Если состояние
любого
из этих сигналов изменилось,
нормальный ход выполнения програм-
мы прерывается, и управление пере-
дается на один из заранее предопре-
деленных адресов в программе. Имен-
но за эту особенность - прерывать нор-
мальный ход программы, - этот меха-
низм и назван механизмом прерыва-
ний. В микроконтроллере КР1878ВЕ1
таблица заранее предопределенных
адресов выглядит следующим обра-
зом
(таблица 1).
Как видите, все заранее предопре-
деленные адреса находятся в преде-
лах первых 16 адресов программы.
Именно поэтому первые 16 адресов в
программе никогда не используются
без крайней необходимости.
Что же расположено в этих адре-
сах? В этих адресах в большинстве слу-
чаев располагается команда перехода
Разговор в зоопарке:
-
Мам, мам, это уже обезьяна?
- Нет, это еще кассир!
“Бородатый” анекдот.
ртр на подпрограмму, которая обра-
батывает соответствующий сигнал
прерывания (такие подпрограммы на-
зываются
обработчиками прерыва-
ний).
В нашем примере с “торшером”
такая команда ]т р должна распола-
гаться по адресу ОООбИ, потому что
кнопка у нас подсоединена к порту А.
При изменении сигнала на линии пор-
та (“потягивании” или “отпускании” ве-
ревочки), микроконтроллер автома-
тически передаст управление этой
подпрограмме, которая определенным
образом должна обработать получен-
ный сигнал. После того, как обработ-
чик прерываний выполнит все необхо-
димые действия по обработке сигна-
ла прерывания, микроконтроллер мо-
жет вновь вернуться к выполнению
прерванной программы. Для того, что-
бы это было возможно, при прерыва-
нии программы процессор микрокон-
троллера запоминает в стеке адресов
возврата адрес возврата в прерван-
ную программу, т.е. внешне вся обра-
ботка прерываний выглядит так, как
будто в программе вдруг “ниоткуда”
возникла команда ]эг на обработчик
соответствующего прерывания. Соот-
ветственно, программа-обработчик
прерывания должна для продолжения
Таблица 1
Адрес программы
Когда передается управление
Маскируемое
000111
Отработал сторожевой таймер
Нет
000211
Переполнение (переопустошение) стеков
процессора
Нет
0003И
“Звонок” от регистра интервала
интервального таймера
Да
0006ь
Изменился сигнал на одной из линий порта А
Да
000711
Изменился сигнал на одной из линий порта В
Да
000БЬ
Закончена операция записи байта в ЭСППЗУ
Да
\
37
Радиолюбитель - I 1 /2005 |
предыдущая страница 35 Радиолюбитель 2005-11 читать онлайн следующая страница 37 Радиолюбитель 2005-11 читать онлайн Домой Выключить/включить текст