Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
microproc_lab.doc
Скачиваний:
9
Добавлен:
23.04.2019
Размер:
290.82 Кб
Скачать
  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

18

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 ; Задание начального адреса программы

MOV DPTR,#TABLE

ANL A,#0FH ; Сброс старшей тетрады А во избежание ошибки перехода

JMP @A+DPTR ; Обращение к таблице векторов переходов

19

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]