|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Временная задержка малой длительностиПри реализации временной задержки длительностью порядка нескольких микросекунд часто используется набор команд NOP, каждая из которых выполняется за 1 машинный цикл. Т.е. для формирования задержки длительностью 4 мкс при частоте кварцевого резонатора 12 МГц программа для МК51 будет выглядеть: NOP NOP NOP NOP При реализации временной задержки длительностью порядка десятков или сотен микросекунд использует метод программных циклов. При этом в некоторый рабочий регистр загружается число, которое затем в каждом проходе цикла уменьшается на 1. Так продолжается до тех пор, пока содержимое рабочего регистра не станет равным нулю, что интерпретируется программой как момент выхода из цикла. Время задержки при этом определяется числом, загруженным в рабочий регистр, временем выполнения команд, образующих программный цикл. Схема алгоритма такой программы показана на рисунке 1. Программа имеет символическое имя DELAY. Рисунок 1 – блок-схема процедуры формирования временной задержки
Предположим, что в управляющей программе необходимо реализовать временную задержку 100 мкс. Фрагмент программы, реализующей временную задержку, требуется оформить в виде подпрограммы, так как предполагается, что основная управляющая программа будет производить к ней многократные обращения для формирования выходных импульсных сигналов, длительность которых кратна 100 мкс: ........... ACALL DELAY; вызов подпрограммы задержки ...........
DELAY: MOV R2,#X; (R2) <— X COUNT: DJNZ R2,COUNT; декремент R2 и цикл, если не нуль RET; возврат в основную программу
Для получения требуемой временной задержки необходимо определить число X, загружаемое в рабочий регистр. Определение числа X выполняется на основе расчета времени выполнения команд, образующих данную подпрограмму. При этом необходимо учитывать, что команды MOV и RET выполняются однократно, а число повторений команды DJNZ равно числу X. Кроме того, обращение к подпрограмме временной задержки осуществляется по команде ACALL DELAY, время исполнения которой также необходимо учитывать при подсчете временной задержки. В описании команд МК указывается, за сколько машинных циклов (МЦ) исполняется каждая команда. На основании этих данных определяется суммарное число машинных циклов в подпрограмме: АCALL - 2 МЦ, MOV - 1 МЦ, DJNZ - 2 МЦ, RET - 2 МЦ. При тактовой частоте 12 МГц каждый машинный цикл выполняется за 1 мкс. Таким образом, подпрограмма выполняется за время 2 + 1 + 2Х + 2=5 + 2Х мкс. Для реализации временной задержки 100 мкс число Х= (100-5)/2= 47,5. Если число X получается дробным, то временную задержку можно реализовать лишь приблизительно. Для более точной подстройки в подпрограмму могут быть включены команды NOP, время выполнения каждой из которых равно 1 мкс. Минимальная временная задержка, реализуемая подпрограммой DELAY, составляет 7 мкс (X = 1). Временную задержку меньшей длительности программным путем можно реализовать, включая в программу цепочки команд NOP. Максимальная длительность задержки, реализуемая подпрограммой DELAY, составляет 515 мкс (X = 255). Для реализации задержки большей длительности можно рекомендовать увеличить тело цикла включением дополнительных команд или использовать метод вложенных циклов. Так, например, если в подпрограмму DELAY перед командой DJNZ вставить дополнительно две команды NOP, то максимальная задержка составит 5 + Х(2 + 2) = = 5 + 4x255 = 1025 мкс (т.е. почти в 2 раза больше).
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |