Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по АТ89С51 изд.вариант 2010-54.doc
Скачиваний:
86
Добавлен:
19.11.2019
Размер:
865.22 Кб
Скачать
    1. Реализация функций реального времени

Любая система реального времени должна иметь возможность вести счёт времени. Универсальные микропроцессорные системы, как правило, включают в свой состав часы реального времени.

В микроконтроллер встроены таймеры-счетчики, которые позволяют отсчитывать временные интервалы. Кроме того, возможно формирование временных задержек путём организации циклов (как одиночных, так и вложенных). Оба способа имеют как преимущества, так и недостатки.

      1. Программное формирование временной задержки

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

а)

б)

Рисунок 4.18 – Блок-схемы процедур временных задержек, формируемых программно

Расчёт числа, загружаемого в рабочий регистр, выполняется на основе расчета времени выполнения команд, образующих подпрограмму. В описании команд МК указывается, сколько машинных циклов (МЦ) исполняется каждая команда. На основании этих данных определяется суммарное число машинных циклов, затрачиваемых на выполнение подпрограммы.

При тактовой частоте кварцевого резонатора Fosc каждый машинный цикл выполняется за 12/Fosc секунд.

Ниже приведён листинг программы, реализующий временную задержку 100 мкс, при частоте кварцевого резонатора 12 МГц (листинг 4.23).

Листинг 4.23 – Программа временной задержки

.ORG 8000h

MOV R2, #49

DJNZ R2, $

; Адрес начала программы

; Загрузка рабочего регистра

; Декремент R2 и цикл, если не ноль

; Продолжение программы

Число 49 получено следующим образом: команды MOV и DJNZ выполняются по 2 МЦ. Команда MOV выполняется 1 раз, DJNZ – 49 раз. При этом суммарное количество МЦ будет составлять 2+249=100. При тактовой частоте кварцевого резонатора 12 МГц цикл выполняется за 12/12000000100=0,0001 с, т.е. за 100 микросекунд.

В данном примере при загрузке в регистр R2 числа 49 требуемая временная задержка реализуется точно. Если число, загружаемое в регистр R2, получается дробным, то временную задержку можно реализовать лишь приблизительно. Например, для реализации временной задержки 100 мкс, при частоте кварцевого резонатора 10 МГц R2=40,641.

Минимальная временная задержка, реализуемая подпрограммой, составляет 48/Fosc секунд (при R2=1). Временную задержку меньшей длительности программным путем можно реализовать, включая в программу цепочки команд NOP, выполняющиеся в течение 1 МЦ.

Максимальная длительность задержки, реализуемая подпрограммой, составляет 6144/Fosc секунд (при R2=255).

Для реализации задержки большей длительности можно увеличить тело цикла включением дополнительных команд или использовать метод вложенных циклов (рисунок 4.18б).