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

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

Временные задержки можно получить при использовании таймера-счетчика.

Если использовать таймер-счётчик в режиме таймера, то временную задержку можно реализовать следующим образом (листинг 4.24):

Листинг 4.24 – Программа временной задержки с использованием таймера-счётчика

F:

COUNT:

.EQU 18432000

.EQU 65535-(F/(1000*12))

.ORG 0000H

JMP BEGIN

.ORG 000BH

JMP TIME

; Частота кварцевого

; резонатора

; Число, определяющее

; время счёта таймера от

; момента его загрузки до

; переполнения (1 мс)

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

; Переход к основной части

; Адрес обработки

; прерывания таймера

; Переход на процедуру

; обработки прерывания

BEGIN:

MOV SP, #30H

MOV IE, #00H

CLR TR0

CLR 20H.0

MOV R0, #10

MOV TL0, #<COUNT

MOV TH0, #>COUNT

MOV TMOD, #01H

SETB TR0

JNB 20H.0, $

CLR TR0

; Переопределение

; вершины стека

; Запрет прерываний

; Запрет счёта

; Сброс флага конца паузы

; Загрузка счетчика ; прерываний

; Загрузка регистров таймера

; счетчика TC0

;Настройка таймера-счетчика

; на режим 1

; Ожидание конца паузы

; Запрещение работы таймера

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

; В любом месте программы

; достаточно очистить флаг

; 20h.0, загрузить числа в

; TL0,TL1 и запустить счет,

; чтобы получить требуемую

; задержку

TIME:

EXIT:

CLR TR0

MOV A, TL0

ADD A, #13

ADD A, #<COUNT

MOV TL0, A

MOV A, TH0

ADDC A, #>COUNT

MOV TH0, A

SETB TR0

DJNZ R0, EXIT

SETB 20H.0

RETI

; Запрещение работы таймера

; Добавление к содержимому

; регистров TL0 TH0

; коэффициента счёта и

; времени, затраченного на

; выполнение данного

; суммирования

; Разрешение работы таймера

; Декремент счётчика

; прерываний и выход из

; прерывания, если значение

; счётчика не равно нулю

; Установка флага конца паузы

; Выход из прерывания