Организация микропроцессорных систем. Учебное пособие. Могнонов П.Б. - 66 стр.

UptoLike

Составители: 

В состав таймера-счетчика входят делитель частоты 1:32, суммирующий счетчик и
триггер флага переполнения.
8-разрядный двоичный таймер-счетчик устанавливается в начальное состояния с
помощью команды MOV Т, А, по которой содержимое А передается в таймер- счетчик.
Счетчик останавливается (но не сбрасывается) по сигналу
SR или по команде STOP TCNT и
остается в этом состоянии, пока не поступит команда STRT Т - запуск таймера или команда
STRT СNТ - запуск счетчика событий.
Содержимое таймера-счетчика может быть прочитано командой МОV А,Т, как в то
время, когда таймер-счетчик остановлен, так и во время счета. При этом момент чтения не
может попасть на межразрядный перенос, вызвав тем самым неопределенность считанного
отсчета, так как инкрементирование таймера-счетчика и чтение его содержимого в
аккумулятор выполняются в разных состояниях машинного цикла ОМЭВМ.
Момент перехода счетчика из состояния максимального значения FFН в состояние
00H свидетельствует о переполнении таймера-счетчика (Т - С) и фиксируется в триггере
флага ТF и триггере переполнения Т, в результате вырабатывается внутренний запрос на
аппаратное прерывание. Этот запрос так же, как и внешний запрос прерывания,
запоминается в триггере текущего прерывания. Прерывания по переполнению таймера-
счетчика считаются внутренними и могут быть разрешены или запрещены соответственно
командами EN ТСNТI и DIS ТСNTI независимо от внешних прерываний. Если внутренние
прерывания разрешены, переполнение счетчика вызовет переход к подпрограмме
обслуживания прерывания от таймера-счетчика, адрес-вектор которой соответствует ячейке
07 памяти программ. Если запросы на прерывание от таймера-счетчика и внешнего
источника приходят одновременно, произойдет переход к подпрограмме обслуживания
внешнего прерывания, адрес-вектор которой соответствует ячейке 03 памяти программ.
Поскольку запрос на прерывание от таймера-счетчика зафиксирован, он будет
обрабатываться сразу после возвращения из подпрограммы обслуживания внешних
прерываний. Запрос на прерывание от таймера сбрасывается командой DIS TCNTI. Однако,
эта команда не действует на триггер флага ТF таймера-счетчика, который может быть
опрошен по команде условного перехода JTF.
После перехода счетчика из состояния FFН в состояние 00Н счетчик будет
продолжать счет, если не выполнена команда SТОР ТСNТ.
По команде SТRТ СNТ начинается счет событий (событие - переход сигнала на
внешнем выводе Т1 от высокого к низкому уровню) путем инкрементирования значения
текущего состояния таймера-счетчика. Подсчет событий прекращается или по команде STOP
ТСNТ, или при подаче сигнала
SR .
При выполнении команды SТRТ СNТ разрешается передача состояния с входа Т1 на
вход счетчика. С этого момента каждый переход сигнала на выводе Т1 от высокого к
низкому уровню вызывает приращение счетчика. Минимально допустимый период
следования сигналов на входе Т1 составляет 3tсу; минимально допустимая длительность
сигналов низкого и высокого уровней составляет соответственно tсу и tсу/5; tсу -
длительность машинного цикла, рассчитываемая по формуле: tсу = 15/f
BQ1
, где f
BQ1
- частота
генератора тактовых сигналов ОМЭВМ, мГц.
В результате выполнения команды STRT Т внутренние синхросигналы поступают на
вход счетчика и запускают его как таймер. Синхросигналы образуются путем деления на 32
частоты основных синхронизирующих импульсов машинного цикла ALE. Делитель
сбрасывается во время выполнения команды STRT T. Инкрементирование счетчика
осуществляется с частотой внутренней синхронизации. Путем предварительной установки
счетчика и фиксации переполнения можно получить задержки до 256*32 периода сигнала
ALE. Задержки большей длительности могут быть получены путем накопления
переполнений счетчика под управлением программы.
       В состав таймера-счетчика входят делитель частоты 1:32, суммирующий счетчик и
триггер флага переполнения.
       8-разрядный двоичный таймер-счетчик устанавливается в начальное состояния с
помощью команды MOV Т, А, по которой содержимое А передается в таймер- счетчик.
Счетчик останавливается (но не сбрасывается) по сигналу SR или по команде STOP TCNT и
остается в этом состоянии, пока не поступит команда STRT Т - запуск таймера или команда
STRT СNТ - запуск счетчика событий.
       Содержимое таймера-счетчика может быть прочитано командой МОV А,Т, как в то
время, когда таймер-счетчик остановлен, так и во время счета. При этом момент чтения не
может попасть на межразрядный перенос, вызвав тем самым неопределенность считанного
отсчета, так как инкрементирование таймера-счетчика и чтение его содержимого в
аккумулятор выполняются в разных состояниях машинного цикла ОМЭВМ.
       Момент перехода счетчика из состояния максимального значения FFН в состояние
00H свидетельствует о переполнении таймера-счетчика (Т - С) и фиксируется в триггере
флага ТF и триггере переполнения Т, в результате вырабатывается внутренний запрос на
аппаратное прерывание. Этот запрос так же, как и внешний запрос прерывания,
запоминается в триггере текущего прерывания. Прерывания по переполнению таймера-
счетчика считаются внутренними и могут быть разрешены или запрещены соответственно
командами EN ТСNТI и DIS ТСNTI независимо от внешних прерываний. Если внутренние
прерывания разрешены, переполнение счетчика вызовет переход к подпрограмме
обслуживания прерывания от таймера-счетчика, адрес-вектор которой соответствует ячейке
07 памяти программ. Если запросы на прерывание от таймера-счетчика и внешнего
источника приходят одновременно, произойдет переход к подпрограмме обслуживания
внешнего прерывания, адрес-вектор которой соответствует ячейке 03 памяти программ.
       Поскольку запрос на прерывание от таймера-счетчика зафиксирован, он будет
обрабатываться сразу после возвращения из подпрограммы обслуживания внешних
прерываний. Запрос на прерывание от таймера сбрасывается командой DIS TCNTI. Однако,
эта команда не действует на триггер флага ТF таймера-счетчика, который может быть
опрошен по команде условного перехода JTF.
       После перехода счетчика из состояния FFН в состояние 00Н счетчик будет
продолжать счет, если не выполнена команда SТОР ТСNТ.
       По команде SТRТ СNТ начинается счет событий (событие - переход сигнала на
внешнем выводе Т1 от высокого к низкому уровню) путем инкрементирования значения
текущего состояния таймера-счетчика. Подсчет событий прекращается или по команде STOP
ТСNТ, или при подаче сигнала SR .
       При выполнении команды SТRТ СNТ разрешается передача состояния с входа Т1 на
вход счетчика. С этого момента каждый переход сигнала на выводе Т1 от высокого к
низкому уровню вызывает приращение счетчика. Минимально допустимый период
следования сигналов на входе Т1 составляет 3tсу; минимально допустимая длительность
сигналов низкого и высокого уровней составляет соответственно tсу и tсу/5; tсу -
длительность машинного цикла, рассчитываемая по формуле: tсу = 15/fBQ1, где fBQ1 - частота
генератора тактовых сигналов ОМЭВМ, мГц.
       В результате выполнения команды STRT Т внутренние синхросигналы поступают на
вход счетчика и запускают его как таймер. Синхросигналы образуются путем деления на 32
частоты основных синхронизирующих импульсов машинного цикла ALE. Делитель
сбрасывается во время выполнения команды STRT T. Инкрементирование счетчика
осуществляется с частотой внутренней синхронизации. Путем предварительной установки
счетчика и фиксации переполнения можно получить задержки до 256*32 периода сигнала
ALE. Задержки большей длительности могут быть получены путем накопления
переполнений счетчика под управлением программы.