|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Временная задержка малой длительностиПредположим, что в управляющей программе необходимо реализовать временную задержку 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; Задание начального адреса программы Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |