Лабораторная работа 1
Пример 1 При автоматизации объектов управления широко используются двоичные датчики событий. Типовая схема включения подобного датчика приведена на рисунке 1. Между контактом датчика и микроконтроллером может быть установлено согласующее устройство. Возможность адресации к отдельным битам порта ввода-вывода микроконтроллера существенно упрощает реализацию процедур ожидания замыкания или размыкания контактов двоичного датчика. Алгоритм ожидания определенного состояния датчика состоит из ввода сигнала от датчика, анализа сигнала и передачи управления в зависимости от состояния датчика.
Рис. 1. Типовая схема включения двоичного датчика.
Процедуры ожидания замыкания и размыкания контакта, подключенного по схеме (рис. 1), например, к линии 2 порта Р1 могут быть реализованы следующим образом:
WAITC: JB P1.2,WAITC;Ожидание замыкания контакта WAITO: JNB P1.2,WAITO;Ожидание размыкания контакта
До установления на линии 2 порта Р1 заданного уровня в процедурах ожидания будет непрерывно выполняться цикл опроса бита Р1.2. В случае установления Р1.2 =0 (в процедуре ожидания размыкания) происходит выход из цикла и микроконтроллер переходит к выполнению следующей команды.
Пример 2
В задачах управления часто возникает необходимость измерения промежутков времени между двумя событиями. Решить эту задачу можно программным путем или с использованием аппаратных средств. Ниже приведена программа MEASURE измерения длительности замкнутого состояния двоичного датчика, подключенного к линии 3 порта Р1 по схеме, показанной на рисунке 1.
MEASURE: MOV R2,#0; Сброс счетчика WAITC: JB P1.3, WAITC; Ожидание замыкания контакта WAITO: INC R2; Инкремент счетчика JNB P1.3,WAITO; Ожидание размыкания контакта
Процедура MEASURE включает процедуру WATIC ожидания замыкания контакта и процедуру WAITO ожидания размыкания контакта, в каждом цикле выполнения которой производиться инкремент счетчика длительности временного интервала. Таким образом, разрешающая способность приведенной процедуры составляет 3 мкс (время выполнения цикла WAITO), а длительность замкнутого состояния датчика вычисляется по формуле:
[мкс],
где Nц – содержимое регистра R2, а 2 мкс – время выхода из цикла WATIC.
Пример 1
Для формирования временной задержки подпрограмма TIME использует метод программных циклов, в соответствии с которым в один из рабочих регистров загружают число, которое затем при каждом проходе цикла уменьшают на единицу. Выход из цикла производиться при обнулении содержимого регистра. Длительность, сформированной таким образом временной задержки будет пропорциональна значению числа, загруженного в рабочий регистр, и времени выполнения команд, входящих в цикл.
TIME: MOV R2,#N; Загрузка числа циклов M1: DJNZ R2,M1; Цикл до обнуления R2 RET; Возврат из подпрограммы
Число N циклов, необходимых для реализации заданной временной задержки, определяют на основе расчета времени выполнения команд, входящих в подпрограмму задержки. Необходимо учесть, что команды MOV R2,#N и RET, а так же команда CALL TIME обращаются к подпрограмме однократно, а команда DJNZ R2,M1 повторяется N раз. В таблице приведены результаты расчета времени выполнения команд, входящих в подпрограмму временной задержки, для тактовой частота контроллера 12 МГц:
Таким образом, для получения задержки в 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 МГц:
Принимая N=247 и M=201, вычислим время выполнения основного блока программы:
мкс.
Для более точной реализации заданного времени задержки в программу введен цикл точной подстройки, который при выборе L=48 вводит дополнительную задержку, длительностью:
мкс.
Таким образом, суммарное время задержки, вводимое рассмотренными блоками команд, составит 99999 мкс. Включение в подпрограмму холостой команды NOP позволит точно реализовать задержку.
Лабораторная работа 1
|