Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИСПУ ЛАБОРАТОРНЫЕ РАБОТЫ 1_9.doc
Скачиваний:
9
Добавлен:
15.08.2019
Размер:
207.87 Кб
Скачать

Приложение 3

Пример 1

Для формирования временной задержки подпрограмма TIME использует метод программных циклов, в соответствии с которым в один из рабочих регистров загружают число, которое затем при каждом проходе цикла уменьшают на единицу. Выход из цикла производиться при обнулении содержимого регистра. Длительность, сформированной таким образом временной задержки будет пропорциональна значению числа, загруженного в рабочий регистр, и времени выполнения команд, входящих в цикл.

TIME: MOV R2,#N ; Загрузка числа циклов

M1: DJNZ R2,M1 ; Цикл до обнуления R2

RET ; Возврат из подпрограммы

Число N циклов, необходимых для реализации заданной временной задержки, определяют на основе расчета времени выполнения команд, входящих в подпрограмму задержки. Необходимо учесть, что команды MOV R2,#N и RET, а так же команда CALL TIME обращаются к подпрограмме однократно, а команда DJNZ R2,M1 повторяется N раз.

В таблице приведены результаты расчета времени выполнения команд, входящих в подпрограмму временной задержки, для тактовой частота контроллера 12 МГц:

Команда

Число циклов

Время выполнения, мкс

Кратность выполнения

CALL TIME

2

2

1

MOV R2,#N

1

1

1

DJNZ R2,M1

2

2

N

RET

2

2

1

Таким образом, для получения задержки в 50 мкс необходимо столько раз повторить выполнение команды DJNZ R2,M1, что бы суммарное время составило 45 мкс (50-5). Отсюда расчетное значение числа циклов:

При выборе N=22 время задержки составит 49 мкс.

Пример 2

Для формирования временной задержки большой длительности используют вложенные циклы. Программа TIME2 реализует подобный алгоритм. Максимальная длительность задержки, реализуемая данной подпрограммой составляет мкс. Она может быть увеличена путем включения в цикл нескольких команд NOP.

DELAY: MOV R2,#M ; Загрузка счетчика внешнего цикла

M1: MOV R3,#N ; Загрузка счетчика внутреннего цикла

M2: DJNZ R3,M2 ; Внутренний цикл (до обнуления R3)

DJNZ R2,M1 ; Внешний цикл (до обнуления R2)

MOV R2,#L ; Загрузка счетчика цикла подстройки

M3 DJNZ R2,M3 ; цикл точной подстройки

NOP ; дополнительная задержка 1 мкс

RET ; возврат из подпрограммы

В таблице приведены результаты расчета времени выполнения команд, входящих в подпрограмму временной задержки, для тактовой частота контроллера 12 МГц:

Команда

Число циклов

Время выполнения, мкс

Кратность выполнения

CALL TIME2

2

2

1

MOV R2,#M

1

1

1

MOV R3,#N

1

1

M

DJNZ R3,M2

2

2

N*M

DJNZ R2,M1

2

2

N

RET

2

2

1

Принимая N=247 и M=201, вычислим время выполнения основного блока программы:

мкс.

Для более точной реализации заданного времени задержки в программу введен цикл точной подстройки, который при выборе L=48 вводит дополнительную задержку, длительностью:

мкс.

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