Локальные системы управления. Конопелько Г.К. - 54 стр.

UptoLike

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

54
DELAY: MOV R2,#X
COUNT: DJNZ R2,COUNT ; ДЕКРЕМЕНТ R2 И ЦИКЛ, ПОКА НЕ НУЛЬ
RET ; ВОЗВРАТ
Для получения требуемой временной задержки необходимо определить число X,
загружаемое в рабочий регистр. Определение числа X выполняется на основе расчета
времени выполнения команд, образующих данную подпрограмму. При этом необходимо
учитывать, что MOV и RET выполняются однократно, а число повторений команды DJNZ
равно числу
X. Кроме того, обращение к подпрограмме временной задержки
осуществляется по команде CALL DELAY, время выполнения которой также необходимо
учитывать при подсчете временной задержки. В описании команд МК указывается, за
сколько машинных циклов (МЦ) исполняется каждая команда.
Рис. 19. Блок-схема формирования программной задержки
На основании этих данных определяется суммарное число машинных циклов в
подпрограмме: CALL - 2 МЦ, MOV - 2 МЦ, DJNZ - 2 МЦ, RET - 2 МЦ.
При тактовой частоте 6 МГц каждый машинный цикл выполняется за 2,5 мкс. Таким
образом, подпрограмма выполняется за время 5 + 5 + 5X + 5 = 15 + 5X мкс. Для реализации
временной задержки 100 мкс. число X = ( 100 - 15) / 5 = 17.
В данном случае при загрузке
в регистр R2 числа 17 требуемая временная задержка
(100 мкс.) реализуется точно. Если число X получается дробным, то временную задержку
можно реализовать лишь приблизительно. Для более точной подстройки в программу могут
быть включены команды NOP, время выполнения каждой из которых равно 2,5 мкс.