i
МИКРОКОНТРОЛЛЕРЫ
\
(разрешает прерывания при измене-
нии сигналов на линиях соответству-
ющих портов). Помимо битов в уп-
равляющих регистрах портов, для уп-
равления прерываниями от портов
используются также подрегистры 6 и
7 управляющих регистров портов А
и В - для того, чтобы указать, от ка-
ких линий порта должно возникать
прерывание (лог.1), а от каких - нет
(Ьбг.О).
Что произойдет, если при обра-
ботке одного прерывания возникнет
другое? Все зависит от того, какое
прерывание возникнет. Если немас-
кируемое-то программа-обработчик
будет прервана и начнется обработ-
ка немаскируемого прерывания.
Если же новое прерывание маскиру-
емое - программа-обработчик перво-
го прерывания продолжит свою ра-
боту: дело в том, что при возникно-
вении прерывания микроконтроллер
не только сохраняет адрес возврата
и регистр состояния, но еще и
ав-
томатически сбрасывает бит раз-
решения прерывания
в регистре
состояния - как раз для того, чтобы
обработчики прерывания не преры-
вали бесконечно друг друга. Кстати,
именно поэтому бит 1Е и расположен
в регистре состояния процессора,
хотя, по большому счету, к состоянию
процессора он имеет весьма и весь-
ма отдаленное отношение. Новое
прерывание при этом не пропадет, а
дождется своей очереди: когда обра-
ботчик прерывания выполнит коман-
ду гй, завершая обработку своего
прерывания, тогда ожидающее сво-
ей очереди новое прерывание и вы-
зовет свой обработчик. Особо следу-
ет отметить, что при восстановлении
регистра состояний командой гб, бит
1Е регистра состояний вернется в то
состояние, в котором он был в мо-
мент возникновения только что обра-
ботанного прерывания - обработчи-
ки прерываний не отключают меха-
низм прерываний “навсегда”!
А если случится так, что при рабо-
те микроконтроллера возникнут сра-
зу два или более прерываний? В этом
случае микроконтроллер обработает
их в определенном порядке, причем
в первую очередь будет обработано
прерывание с меньшим предопреде-
ленным адресом. Если, например,
возникнут сигналы прерываний сра-
зу от ЭСППЗУ, интервального тайме-
ра и порта В, первым будет обрабо-
тан сигнал интервального таймера
(адрес ОООЗИ), затем - порта В (адрес
0007И), и лишь после этого - сигнал
от ЭСППЗУ (адрес ОООРИ). В таком
случае обычно говорят о
приорите-
те
сигналов прерываний (не во всех
микроконтроллерах использован
столь прямолинейный способ выбора,
а в некоторых достаточно мощных
микроконтроллерах его можно даже
настраивать программным путем).
Попытаемся переписать наш
“торшер” так, чтобы вместо постоян-
ной проверки терминальных симво-
лов воспользоваться механизмом
прерываний. Рассмотрим это на при-
мере эм/КсИ-технологии (там это де-
лается более “прозрачным” спосо-
бом),
причем
для
упрощения
возьмем “неправильный” торшер, в
котором не учитывается дребезг кон-
тактов. Итак, вот как будет выглядеть
наша программа:
Start:
begin:
jmp
begin
пор
пор
пор
пор
пор
jmp
int6
пор
пор
пор
пор
пор
пор
пор
пор
пор
ldr
#D,18h
movl
%dl,00011011b
movl
%dl,00000000b
movl
%dl,00000000b
movl
%dl,00000001b
movl
%dl,00000001b
movl
%dl,00000001b
movl
%d2,00011011b
movl
%d2,00000001b
movl
%d2,00000001b
movl
%d2,00000000b
movl
%d2,00000000b
movl
%d2,00000000b
; Переход к началу программы.
; Переход на обработчик прерываний порта А.
; Сегмент О - управляющие регистры портов.
; Доступ к подрегистру 3 в режиме автоинкремента
; Подрегистр 3: все линии - вводные.
; Подрегистр 4: режим вывода безразличен.
; Подрегистр 5: резистор А[0] подключен.
; Подрегистр 6: прерывания от А[0]
; Подрегистр 7: прерывания от А[0]
; Доступ к подрегистру 3 в режиме автоинкремента
; Подрегистр 3: включить линию В[0] на вывод.
; Подрегистр 4: режим вывода — "полноценный".
; Подрегистр 5: резисторы нагрузки нам не нужны.
; Подрегистр 6: прерывания нас не интересуют
; Подрегистр 7: прерывания нас не интересуют
| 39
Радиолюбитель - 1
1/2005 |
предыдущая страница 37 Радиолюбитель 2005-11 читать онлайн следующая страница 39 Радиолюбитель 2005-11 читать онлайн Домой Выключить/включить текст