Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mIKROPROTsESSORY / LABMP_ALL_2013.doc
Скачиваний:
75
Добавлен:
09.04.2015
Размер:
2.25 Mб
Скачать

3.1.3. Управление работой таймеров

При необходимости использовать таймеры ОЭВМ их сначала надо инициализировать. Для инициализации используется регистр TMOD. В нем есть отдельные биты, которые ответственны за установку режимов. Структура регистра TMOD показана на рис. 3.3.

Рис. 3.3. Структура регистра TMOD:

TMOD.0 и TMOD.1 для таймера 0 (соответственно для таймера 1 - TMOD.4 и TMOD.5) устанавливают режим работы таймера (см. [2]).

TMOD.2 для таймера 0 (соответственно для таймера 1 - TMOD.6) устанавливает будет ли таймер работать от внутреннего источника импульсов (TMOD.2 или TMOD.6 =0) или как счетчик внешних событий (TMOD.2 или TMOD.6 =1).

TMOD.3 для таймера 0 (соответственно для таймера 1 - TMOD.7) позволяет запускать таймер не только программно, но и аппаратно: если установить TMOD.3=1(соответственно для таймера 1 - TMOD.7=1), то запуск таймера можно осуществить только при наличии уровня лог.1 на входе INT0 (соответственно для таймера 1 - INT1). Если же установить эти биты в 0, то уровни на входах INT0 и INT1 не воздействуют на запуск таймеров.

Этот регистр не является бит-адресуемым, т.е. для него нельзя установить отдельные биты командами CLR и SETB. Необходимо записывать в регистр TMOD сразу целый байт.

Кроме регистра TMOD в управлении таймеров участвует регистр TCON (он как раз является бит-адресуемым). Его старшие 4 бита отведены как раз под управление таймерами. Структура регистра TCON показана на рис. 3.4.

Рис. 3.4. Структура регистра TCON:

TCON.4 (альтернативное обозначение TR0) - установка этого бита в 1 запускает таймер 0. Установка в 0 - останавливает.

TCON.5 (альтернативное обозначение TF0) - бит переполнения таймера 0 (устанавливается аппаратно при переполнении, требует программного сброса).

TCON.6 (альтернативное обозначение TR1) - установка этого бита в 1 запускает таймер 1. Установка в 0 - останавливает.

TCON.7 (альтернативное обозначение TF1) - бит переполнения таймера 1 (устанавливается аппаратно при переполнении, требует программного сброса).

Ниже приведена программа работы таймера 0 в режиме прерывания для организации секундной задержки:

Программа 4

NAME TEST4

Xseg at 0000h

ds 20h

CSEG AT 8000h

ORG 8000h

ljmp start ; переход на начало основной программы

ORG 800bh ;установка адреса вектора прерывания от таймера (см. Примечание)

int11: clr tcon.4; останов таймера 0

clr ie.1 ;запрещение прерывания о таймера 0

mov tl0,#low(not(50000-1));загрузка регистров таймера на период 50 мс

mov th0,#high(not(50000-1))

dec r2; уменьшение на 1 счетчика числа циклов по 50 мс

setb tcon.4; запуск таймера 0

setb ie.1; разрешение прерывания от таймера 0

reti ;возврат из прерывания

start: setb ie.7; начало основной программы - разрешение глобальных прерываний

mov tmod,#01;установка режима таймера - 16 разрядов, внутренний источник

mov tl0,#low(not(50000-1));загрузка регистров таймера на период 50 мс

mov th0,#high(not(50000-1))

mov r2,#20; загрузка числа периодов по 50 мс

lcall 23ddh; вызов программы отображения состояния ОЭВМ

setb tcon.4 ;запуск таймера 0

setb ie.1; разрешение прерывания от таймера 0

m1:

nop; пустая операция

cjne r2,#0,m1; проверка на нуль регистра r2 и зацикливание

lcall 23ddh

ret

end

Примечание: вектора прерываний для платы EB552 смещены в область адресов памяти команд 8003Н - 8026Н и затем программой монитором пересылаются в область 0003Н - 0026Н.

Соседние файлы в папке mIKROPROTsESSORY