АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Временная задержка малой длительности

Читайте также:
  1. Вакансия временная на период отсутствия основного работника
  2. ВНЕЗАПНАЯ КРАТКОВРЕМЕННАЯ ПОТЕРЯ СОЗНАНИЯ,
  3. Временная нелокальность субъективного.
  4. Временная остановка кровотечения
  5. Временная остановка судебного разбирательства
  6. Временная система Разума
  7. Временная шкала
  8. Глава 2. Современная Тверь
  9. Глава 51. НОВАЯ ЗАДЕРЖКА
  10. Диагностика малой группы.
  11. Дипломатическая служба и современная внешнеполитическая система Великобритании

Предположим, что в управляющей программе необходимо реализовать временную задержку 99 мкс. Фрагмент программы, реализующей временную задержку, требуется оформить в виде подпрограммы, так как предполагается, что основная управляющая программа будет производить к ней многократные обращения для формирования выходных импульсных сигналов, длительность которых кратна 99 мкс:

 

DELAY: MOV R2, #X;(R2)X

COUNT: DJNZ R2, COUNT;декремент R2 и цикл, если не нуль

RET;возврат

 

При этом необходимо учитывать, что команды MOV и RET выполняются однократно, а число повторений команды DJNZ равно числу X. Кроме того, обращение к подпрограмме временной задержки осуществляется по команде CALL DELAY, вpeмя исполнения которой также необходимо учитывать при подсчете временной задержки. В описании команд микроконтроллера указывается, за сколько машинных циклов (МЦ) исполняется каждая команда. На основании этих данных определяется суммарное число машинных циклов в подпрограмме: CALL - 2 МЦ, MOV - 1 МЦ, DJNZ - 2 МЦ, RET - 2 МЦ.

При тактовой частоте 12 МГц каждый машинный цикл выполняется за 1 мкс. Таким образом, подпрограмма выполняется за время 2 + 1 + 2Х + 2 = 5 + 2Х мкс. Для реализации временной задержки 99 мкс число Х = (99 - 5)/2 = 47.

Для более точной подстройки в подпрограмму могут быть включены команды NOP, время выполнения каждой из которых равно 1 мкс.

 

Временная задержка большой длительности.

Задержка большой длительности может быть реализована методом вложенных циклов. Числа Х и Y выбираются из соотношения Т = 2 + 1 + Х(1 + 2Y + 2) + 2, где Т - реализуемый временной интервал в микросекундах. Максимальный временной интервал, реализуемый таким способом, при Х = Y = 255 составляет 130.82 мс, т.е. приблизительно 0.13 с.

В качестве примера рассмотрим подпрограмму, реализующую временную задержку 100 мс:

 

DELAY: MOV R1, #195;загрузка X

LOOPEX: MOV R2, #254;загрузка

YLOOPIN: DJNZ R2, LOOPIN;декремент R2 и внутренний цикл,

;если (R2)¹0

DJNZ R1, LOOPEX;декремент R1 и внешний цикл,

;если (R1)¹0

MOV R3, #174;точная подстройка

LOOPAD: DJNZ R3, LOOPAD;временной задержки

NOP;задержки

RET

 

Здесь два вложенных цикла реализуют временную задержку длительностью 5 + 195(3 + 2*254) = 99 650 мкс, а дополнительный цикл LOOPAD и команда NOP реализует задержку 350 мкс и тем самым обеспечивает точную настройку временного интервала.

 

3. Временная задержка длительностью 1с:

 

ONESEC: MOV R3,#10; Загрузка в R3 числа вызовов подпрограммы DELAY

LOOP: CALL DELAY; Задержка 100 мс

DJNZ R3,LOOP; и цикл, если R3 не равно 0

 

4. Передать управление одной из восьми программ ROUT0 - ROUT7 при появлении нулевого уровня на соответствующем входе порта 0. Наивысшим приоритетом обладает вход Р1.0:

 

ORL P1,#0FFH; Настройка порта 1 на ввод

L: MOV A,P1; Ввод данных из порта 1

CPL A; Инверсия аккумулятора

JZ L; Ожидание появления первого нуля

JB A.0,ROUT0; Переход к ROUT0, если Р1.0=0

JB A.1,ROUT1; …

JB A.2,ROUT2; …

JB A.3,ROUT3; …

JB A.4,ROUT4; …

JB A.5,ROUT5; …

JB A.6,ROUT6; …

JB A.7,ROUT7; Переход к ROUT0, если Р1.7=7

 

Переход осуществляется группой команд JB. Приоритеты входов порта 1 определяются очередностью проверки.

 

5. Множественное ветвление программы:

Допустим, что результатом работы некоторой программы является число Х (в пределах от 0 до 15). Необходимо организовать передачу управления 16 различным программам с именами ROUT0 – ROUTF в зависимости от вычисления значения Х:

ORG 0C100H; Задание начального адреса программы


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)