Система прерываний

STRT T

EN TCNTI

MOV T, A

RETR

STOP TCNT

ORG 7

JMP START

ORG 0

STOP TCNT.

JMP M0

MOV T, A

ORL P1, #00000001B; Здесь присутствует погрешность в длительности сформи-

STRT T; рованного импульса.

M0: JTF M1

M1: ANL P1, #11111110B

Максимальная выдержка времени получается при загрузке таймера-счетчика нулем и равна 256*80 микросекунд=20480 микросекунд.

Другой прием формирования импульса определенной длительности связан с использованием триггера переполнения. Когда возникают переполнения таймера-счетчика, последний формирует прерывание процессору, которое называется прерыванием от таймера-счетчика. Прерывания могут быть разрешены программно или запрещены. Команда EN TCNTI разрешает в дальнейшем прерывания, а команда DIS TCNTI запрещает. Если прерывания запрещены, то процессор никак не прореагирует на переполнение таймера-счетчика. Если прерывания от таймера-счетчика разрешены, то с приходом прерывания процессор микроЭВМ, закончив выполнения текущей команды, перейдет на выполнение команды, расположенной в памяти программ по адресу 0007H. Посмотрите карту распределения памяти программ. Адрес 0007H зарезервирован под вектор прерывания от таймера-счетчика. Далее приведена программа, которая использует прерывания от таймера-счетчика для формирования импульса в 800 микросекунд.

ANL P1, #11111110B

START:

MOV A, #156

ORL P1, #00000001

Процессор запустил таймер-счетчик и теперь может бросить его и выполнять другую задачу. Больше ему не требуется возвращаться к таймеру-счетчику. Через 800 микросекунд установиться триггер переполнения, сформируется прерывание от таймера-счетчика, процессор чтобы он не делал в этот момент вынужден будет прерваться и выполнить подпрограмму, начинающуюся с адреса 0007H и заканчивающуюся командой RETR - возврат из подпрограммы обработки прерывания.

Все, о чем говорилось раньше, в основном касалось режима работы таймера-счетчика в качестве таймера. Другой режим работы таймера-счетчика – это режим счетчика событий. По команде STRT CNT можно начать счет событий. Событием называется переход сигнала на внешнем выводе T1 от высокого уровня к низкому. Подсчет событий прекращается по команде STOP TCNT. При этом минимально допустимый период следования сигналов на входе T1 7.5 микросекунды.

Необходимо отметить, что нельзя одновременно использовать таймер-счетчик и в режиме таймера и в режиме счетчика. Напоследок структурная схема включения таймера-счетчика.

В МК48 реализованы два вида прерываний:

· прерывание от внешнего источника;

· прерывание от внутреннего таймера-счетчика.

Прерывания могут быть избирательно разрешены или запрещены по командам EN и DIS соответственно.

EN I – команда разрешения внешнего прерывания по входу /INT. После выполнения этой команды низкий уровень на входе /INT воспринимается процессором как запрос на прерывание. В этом случае процессор заканчивает выполнение текущей команды и переходит на выполнение команды, находящейся по адресу 0003H. Именно с этого адреса должна начинаться подпрограмма обслуживания внешнего прерывания.

DIS I – команда запрещения внешнего прерывания. После выполнения этой команды любые изменения на входе /INT не прерывают работу процессора. После сброса микроЭВМ все виды прерываний запрещены.

Прерывания от таймера-счетчика были рассмотрены ранее.

Внешнее прерывание обладает более высоким приоритетом, то есть, если внешнее прерывание и прерывание от таймера-счетчика возникают одновременно, внешнее прерывание обслуживается в первую очередь. После обслуживания внешнего прерывания будет обслужено прерывание от таймера-счетчика.

Если в системе требуется использовать два внешних прерывания и таймер-счетчик свободен, то его можно использовать как источник второго внешнего прерывания. Для этого необходимо загрузить в таймер-счетчик число 255 и запустить счетчик внешних событий командой STRT CNT. Тогда перепад сигнала из 1 в 0 на входе T1 будет восприниматься процессором как внешнее прерывание с выполнением программы с адреса 0007H.

Система прерываний одноуровневая. Это означает, что обслуживание вновь поступающих прерываний откладывается до конца обработки текущего. Обработка очередного прерывания может начаться только после завершения второго машинного цикла команды RETR. Сигнал INT низкого уровня должен быть снят до исполнения команды RETR, в противном случае процессор начнет повторное обслуживание данного запроса. В МК48 есть одна особенность, которую необходимо учитывать при организации прерываний. При ослуживании прерываний старший разряд счетчика команд независимо от состояния триггера DBF, аппаратно устанавливается в нуль всякий раз при переходе на подпрограмму обслуживания прерываний. Поэтому все программы обработки прерываний и все подпрограммы, вызываемые ими, должны распологаться в пределах нулевого банка памяти программ.

Структура программы с использованием прерываний:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: