Таймер - счетчик

Таймер-счетчик – это устройство, заложенное в структуру МК48, позволяющее под управлением программы осуществлять временные выдержки в микропроцессорной системе и подсчитывать количество импульсов, если это необходимо, поступающих на вход T1 микроЭВМ. Существует принцип организации временных выдержек, использующий то, что известно время выполнения каждой команды. Например, зная, что команда NOP выполняется за один машинный цикл, то есть 2,5 микросекунды, можно запрограммировать выдержку времени в 10 микросекунд, включив в программу 4 команды NOP. Более длинные временные интервалы можно реализовывать, используя команду цикла типа DJNZ. Например, следующий программный фрагмент реализует программную выдержку в 380 микросекунд.

MOV R5, #50; 2 цикл=5 мкс

M1: NOP; 1 цикл=2,5 мкс

DJNZ R5, M1; 2 цикла=5 мкс

Как получились эти 380 микросекунд? Команда DJNZ уменьшает значение регистра R5 на единицу и проверяет, не равно ли новое значение нулю. Если не равно, то программа переходит на метку M1. Так как начальное значение R5 равно 50, то две последние команды будут выполняться 50 раз. Это даст программную выдержку в 375 микросекунд. Первая команда выполняется за 5 микросекунд. Суммарное время равно 380 микросекунд.

Такой метод организации временных выдержек не рационален, так как в течение всего времени процессор работает только на эту выдержку и больше ничего делать не может. Возникает вопрос: а нельзя ли освободить процессор от этой рутинной работы, возложив функции таймирования на некоторое другое устройство?

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

Разрядность таймера-счетчика равна 8, то есть максимальное число, которое можно загрузить в таймер-счетчик равно 255. Команды загрузки и чтения таймера-счетчика MOV T, A и MOV A, T.

После загрузки таймера-счетчика каким-либо числом можно выполнить команду запуска таймера-счетчика на счет. Это команда STRT T. Счетчик работает на суммирование и каждые 80 микросекунд увеличивает свое значение на единицу. При переполнении, то есть когда его значение достигнет 255, таймер-счетчик сбрасывается, то есть обнуляется и продолжает счет с нуля. Этот момент фиксируется в триггере флага и триггере переполнения таймера-счетчика. Триггер флага можно опросить в любом месте программы и узнать достиг ли таймер-счетчик переполнения. Это достигается выполнением команды JTF ad8.

Покажем на примере как можно организовать выдержку времени с использованием таймера-счетчика методом опроса триггера флага. Пусть требуется сформировать импульс положительной полярности длительностью 800 микросекунд на выводе P10 порта P1. Так как дискретность счета таймера-счетчика равна 80 микросекунд и счетчик работает на суммирование, то число, загружаемое в счетчик, определяется как 256-100=156, то есть к числу 156 нужно добавить 100 дискрет по 80 микросекунд чтобы счетчик обнулился.

MOV A, #156


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



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