Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дмитриев Универсалный лабораторный стенд. Аппаратные средства проектирования встраиваемых систем 2009

.pdf
Скачиваний:
62
Добавлен:
17.08.2013
Размер:
10.11 Mб
Скачать

$INCLUDE(PCF552.A51)

 

ORG

8000h

 

MOV

TMOD,#01h

;таймер Т0 режим 1

SETB

TR0

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

MOV

R0,TL0

 

MOV

R1,TH0

 

MOV

R2,TL0

 

CJNE

R2,#02h,MET1

;переход, если R2 не равен 2

MET2:

MOV A,R1

 

ADD

A,#0FFh

 

MOV

R1,A

;вычитание из R1 единицы

LJMP

TIME

 

MET1:

CJNE R2,#03h,TIME

;переход, если R2 не равен 3

LJMP

MET2

 

TIME:

 

LJMP$

END

 

 

3.9.ФОРМИРОВАНИЕ ВРЕМЕННЫХ ИНТЕРВАЛОВ ПРИ ПОМОЩИ ТАЙМЕРА Т2

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

Таймер Т2 имеет встроенные средства для эффективного решения задачи формирования многоканальных последовательностей временных интервалов сложной структуры. Работа таймера описана в п. 2.5 , а его структурная схема приведена на рис. 2.5. Напомним, что формирование временных интервалов при помощи таймера Т2 реализуется программно управляемым переключением линий порта Р4 при совпадении значений его компараторов и счетчика. При фиксации данных совпадений устанавливаются флаги соответствующих прерываний СМ0, СМ1 и СМ2. Обработчики этих прерываний целесообразно использовать для перезагрузки компараторов и регистров RTE и STE управления переключениями линий порта Р4.

91

Рассмотрим некоторые примеры использования таймера Т2. Допустим, что необходимо сформировать изображенную на рис. 3.22 периодическую многоканальную последовательность временных интервалов. Период данной последовательности составляет 6,5 мс. Заданные значения временных интервалов между моментами переключения линий порта Р4 достаточны для выполнения перезагрузки регистров-компараторов таймера Т2 и регистров управления переключениями линий порта Р4 обработчиками прерываний. При частоте генератора УЛС 11,059 МГц временному интервалу 0,65 мс соответствует значение 257h счетчика таймера Т2.

Рис. 3.22. Многоканальная последовательность временных интервалов

Логика работы программы формирования временных интервалов состоит в следующем. Формирование временных интервалов целесообразно начать с того момента времени, когда значение счетчика таймера Т2 равно 0. При входе в обработчик этого прерывания в регистры-компараторы записываются значения, соответствующие первым после значения Т2 = 0 моментам времени измене-

92

ния состояний линий порта Р4. В регистры управления состояниями линий порта Р4 загружаются значения, соответствующие номерам переключаемых линий. В табл. 3.2 приведены загружаемые значения для указанных регистров. Так как обработчик прерывания Т2 вызывается однократно, то в его теле необходимо поместить команду запрета прерывания от Т2 (сброса бита ЕТ2 в регистре IEN1). Кроме этого, так же как и при вызове всех других обработчиков прерываний, используемых при работе с таймером Т2, следует сбросить флаг прерывания от переполнения Т2 (бит T2OV ре-

гистра TM2IR).

 

 

 

Таблица 3.2

Загружаемые регистры обработчика Т2

 

 

 

 

Момент времени

Значения, загру-

Значения, загру-

входа в обработчик

входа

жаемые в регист-

жаемые в регистры

прерывания

 

ры RTE и STE

СМ0, СМ1 и СМ2

0

1

RTE=83h (7,1,0)

CMO=257h

 

 

STE=60h (2,1)

CM1=95Ch

 

 

 

CM2=257h

Управление всеми последующими переключениями линий порта Р4 обеспечивается обработчиками разрешенных прерываний СМ0, СМ1 и СМ2. При передаче управления соответствующему обработчику прерываний по номеру входа осуществляется перезагрузка регистров-компараторов и регистров управления линиями порта Р4 в соответствии с содержимым таблиц 3.3 – 3.5.

 

 

 

Таблица 3.3

Загружаемые регистры обработчика СМ0

 

 

 

 

Момент времени

Значения, загру-

Значения, загружае-

входа в обработчик

входа

жаемые в регистр

мые в регистр СМ0

прерывания

 

STE

 

1

1

STE = 21h (5,0)

CMO = СМ0 + 257h

 

 

 

 

2

2

STE = 10h (4)

CMO = СМ0 + 257h

 

 

 

 

3

3

STE = 08h (3)

CMO = СМ0 + 257h

 

 

 

 

 

 

93

 

 

 

 

 

 

Продолжение табл. 3.3

 

 

 

 

 

 

 

Момент времени

Значения, загру-

 

Значения, загружае-

входа в обработчик

входа

жаемые в регистр

 

мые в регистр СМ0

прерывания

 

 

STE

 

 

4

 

4

STE = 02h (1)

 

CMO = СМ0 + 4АЕh

 

 

 

 

 

 

 

6

 

5

STE = 11h (4,0)

 

CMO = СМ0 + 257h

 

 

 

 

 

 

 

7

 

6

STE = 10h (4)

 

CMO = СМ0 + 4АЕh

 

 

 

 

 

 

 

9

 

7

STE = 06h (2,1)

 

CMO = СМ0 + 4АЕh

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 3.4

 

Загружаемые регистры обработчика СМ1

 

 

 

 

 

 

 

Момент вре-

 

 

 

 

 

 

мени входа в

№ вхо-

Значения, загружаемые

 

Значения, загружае-

обработчик

да

 

 

в регистр RTE

 

мые в регистр СМ1

прерывания

 

 

 

 

 

 

 

 

 

 

 

 

4

1

 

RTE = RTE(ORL)1Ch

 

CM1 = СМ1 + 4AEh

 

 

 

 

(4,3,2)

 

 

 

 

 

 

 

 

6

2

 

RTE = RTE(ORL)10h

 

CM1 = СМ1 + 4AEh

 

 

 

 

(4)

 

 

 

 

 

 

 

 

8

3

 

RTE = RTE(ORL)22h

 

CM1 = СМ1 + 257h

 

 

 

 

(5,1)

 

 

 

 

 

 

 

 

9

4

 

RTE = RTE(ORL)11h

 

CM1 = СМ1 + 257h

 

 

 

 

(4,0)

 

 

 

 

 

 

 

 

10

5

 

RTE = RTE(ORL)03h

 

CM1 = СМ1 + 95Ch

 

 

 

 

(1,0)

 

 

 

 

 

 

 

 

 

94

 

 

 

Таблица 3.5

Загружаемые регистры обработчика СМ2

 

 

 

 

Момент времени

Значения, загружае-

Значения, загру-

входа в обработ-

вхо-

жаемые в регистр

чик прерывания

да

мые в регистр RTE

СМ2

СМ2

 

 

 

 

 

 

 

 

1

1

 

CM2 = СМ2 + 257h

 

 

 

 

2

2

RTE = RTE(XRL)C0h

CM2 = СМ2 + 257h

 

 

(6)

 

 

 

 

 

3

3

RTE = RTE(XRL)C0h

CM2 = СМ2 + 4AEh

 

 

(7)

 

 

 

 

 

5

4

 

CM2 = СМ2 + 257h

 

 

 

 

6

5

RTE = RTE(XRL)C0h

CM2 = СМ2 + 257h

 

 

(6)

 

 

 

 

 

7

6

RTE = RTE(XRL)C0h

CM2 = СМ2 + 95Ch

 

 

(7)

 

 

 

 

 

Далее приводится текст программы для формирования данной многоканальной последовательности временных интервалов.

$NOMOD51

;отмена определения SFR ядра 8051

$INCLUDE(PCF552.INC)

;определение SFR контроллера

PCF80552

 

;========================================= секция инициали-

зации

 

 

ORG 8000h

 

MOV

TM2CON,#81h

;16-ти разрядное переполнение Т2,

 

 

;предделитель=1, Fosc/12

MOV

R0,#00h

;сброс номера входа в обработчик

 

 

;прерывания СМ0

MOV

R1,#00h

;сброс номера входа в обработчик

 

 

;прерывания СМ1

MOV

R2,#00h

;сброс номера входа в обработчик

MOV

P4,#00h

;прерывания СМ2

 

MOV

IEN0,#80h

;разрешение всех прерываний

MOV

IEN1,#80h

;разрешение прерывания при

 

 

;переполнении Т2

 

 

95

LJMP $

;==============================обработчик прерывания СМ0 ORG 805Bh

LJMP MET_STE

;============================= обработчик прерывания СМ1 ORG 8063h

LJMP MET_RTE

;============================== обработчик прерывания СМ2

ORG

806Bh

 

LJMP

MET_TOG

 

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

ORG

8073h

 

CLR

T2OV

;сброс флага 16-ти разрядного

 

 

;переполнения таймера Т2

MOV

RTE,#83h

;переключение Р4.7 в момент

 

 

;времени (1) Р4.1 и Р4.0 в

 

 

;момент времени (4)

MOV

STE,#06h

;переключение Р4.2 и Р4.1 в

 

 

;момент времени (1)

MOV

CMH0,#02h

;момент времени (1) переключения

MOV

CML0,#57h

;компаратора СМ0

MOV

CMH1,#09h

;момент времени (4) переключения

MOV

CML1,#5Ch

;компаратора СМ1

MOV

CMH2,#02h

;момент времени (1) переключения

MOV

CML2,#57h

;компаратора СМ2

MOV

IEN1,#70h

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

 

 

;переполнения Т2 и разрешение

 

 

;прерываний от СМ0,СМ1 и СМ2

CLR

CMI0

;сброс флага прерывания от

 

 

;компаратора СМ0

CLR

CMI1

;сброс флага прерывания от

 

 

;компаратора СМ1

CLR

CMI2

;сброс флага прерывания от

 

 

;компаратора СМ2

RETI

 

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

 

 

;от 16-ти разрядного переполнения

 

 

;таймера Т2

;============================вход в обработчик прерывания СМ0

MET_STE:

 

 

CLR

CMI0

;сброс флага прерывания от

 

 

;компаратора СМ0

INC

R0

;инкремент номера входа в обработчик

 

 

;прерывания СМ0

CJNE

R0,#01h,M11

;если номер входа=1

 

 

96

MOV

STE,#21h

;переключение Р4.5 и Р4.0 в

 

 

;момент времени (1)

CLR

C

;сброс флага переполнения

MOV

A,CML0

;загрузка в СМ0 момента времени

ADD

A,#57h

;переключения (2)

 

MOV

CML0,A

 

MOV

A,CMH0

 

ADDC

A,#02H

 

MOV

CMH0,A

 

LJMP

EX_STE

;на выход из обработчика

;======================================================

M11: CJNE

R0,#02h,M12

;если номер входа=2

MOV

STE,#10h

;переключение Р4.4 в момент

CLR

C

;времени (3)

 

MOV

A,CML0

;загрузка в СМ0 момента времени

ADD

A,#57h

;переключения (3)

 

MOV

CML0,A

 

MOV

A,CMH0

 

ADDC

A,#02H

 

MOV

CMH0,A

 

LJMP

EX_STE

;на выход из обработчика

;======================================================

M12: CJNE

R0,#03h,M13

;если номер входа=3

MOV

STE,#08h

;переключение Р4.3 в момент

CLR

C

;времени (4)

 

MOV

A,CML0

;загрузка в СМ0 момента времени

ADD

A,#57h

;переключения (4)

 

MOV

CML0,A

 

MOV

A,CMH0

 

ADDC

A,#02H

 

MOV

CMH0,A

 

LJMP

EX_STE

;на выход из обработчика

;======================================================

M13: CJNE

R0,#04h,M14

;если номер входа=4

MOV

 

STE,#02h;переключение Р4.1 в момент

CLR

C

;времени (6)

 

MOV

A,CML0

;загрузка в СМ0 момента времени

ADD

A,#0AEh

;переключения (6)

 

MOV

CML0,A

 

 

 

97

MOV

A,CMH0

 

ADDC

A,#04H

 

MOV

CMH0,A

 

LJMP

EX_STE

;на выход из обработчика

;======================================================

M14: CJNE

R0,#05h,M15

;если номер входа=5

MOV

STE,#11h

;переключение Р4.4 И Р4.0 в момент

CLR

C

;времени (7)

 

MOV

A,CML0

;загрузка в СМ0 момента времени

ADD

A,#57h

;переключения (7)

 

MOV

CML0,A

 

MOV

A,CMH0

 

ADDC

A,#02H

 

MOV

CMH0,A

 

LJMP

EX_STE

;на выход из обработчика

;======================================================

M15: CJNE

R0,#06h,M16

;если номер входа=6

MOV

STE,#10h

;переключение Р4.4 в момент

CLR

C

;времени (9)

 

MOV

A,CML0

;загрузка в СМ0 момента времени

ADD

A,#0AEh

;переключения (9)

 

MOV

CML0,A

 

MOV

A,CMH0

 

ADDC

A,#04H

 

MOV

CMH0,A

;на выход из обработчика

LJMP

EX_STE

;======================================================

M16:

 

;если номер входа=7

MOV

STE,#06h

;переключение Р4.2 И Р4.1 в момент

CLR

C

;времени (1)

 

MOV

A,CML0

;загрузка в СМ0 момента времени

ADD

A,#0AEh

;переключения (1)

 

MOV

CML0,A

 

MOV

A,CMH0

 

ADDC

A,#04H

 

MOV

CMH0,A

 

MOV

R0,#00h

;сброс номера входа в обработчик

EX_STE:

 

 

RETI

 

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

 

 

;от компаратора СМ0

 

 

98

;======================================================

MET_RTE:

 

 

CLR

CMI1

;сброс флага прерывания от

 

 

;компаратора СМ1

INC

R1

;инкремент номера входа в обработчик

CJNE

R1,#01h,M21

;если номер входа=1

MOV

A,RTE

;переключение Р4.4,Р4.3 и Р4.2 в

ANL

A,#0C0h

;момент времени (6)

 

ORL

A,#1Ch

 

MOV

RTE,A

 

CLR

C

 

MOV

A,CML1

;загрузка в СМ1 момента времени

ADD

A,#0AEh

;переключения (6)

 

MOV

CML1,A

 

MOV

A,CMH1

 

ADDC

A,#04H

 

MOV

CMH1,A

 

LJMP

EX_RTE

;на выход из обработчика

;======================================================

M21 CJNE

R1,#02h,M22

;если номер входа=2

MOV

A,RTE

;переключение Р4.4 в момент времени (8)

ANL

A,#0C0h

 

ORL

A,#10h

 

MOV

 

RTE,A

;MOV

RTE,#10h

 

CLR

C

 

MOV

A,CML1

;загрузка в СМ1 момента времени

ADD

A,#0AEh

;переключения (8)

 

MOV

CML1,A

 

MOV

A,CMH1

 

ADDC

A,#04H

 

MOV

CMH1,A

 

LJMP

EX_RTE

;на выход из обработчика

;======================================================

M22: CJNE

R1,#03h,M23

;если номер входа=3

MOV

A,RTE

;переключение Р4.5 и Р4.1 в

ANL

A,#0C0h

;момент времени (9)

 

ORL

A,#22h

 

MOV

RTE,A

 

;MOV

RTE,#22h

 

CLR

C

 

 

 

99

MOV

A,CML1

;загрузка в СМ1 момента времени

ADD

A,#57h

;переключения (9)

 

MOV

CML1,A

 

MOV

A,CMH1

 

ADDC

A,#02H

 

MOV

CMH1,A

 

LJMP

EX_RTE

;на выход из обработчика

;======================================================

M23: CJNE

R1,#04h,M24

;если номер входа=4

MOV

A,RTE

;переключение Р4.4 и Р4.1 в

ANL

A,#0C0h

;момент времени (10)

 

ORL

A,#11h

 

MOV

RTE,A

 

;MOV

RTE,#11h

 

CLR

C

 

MOV

A,CML1

;загрузка в СМ1 момента времени

ADD

A,#57h

;переключения (10)

 

MOV

CML1,A

 

MOV

A,CMH1

 

ADDC

A,#02H

 

MOV

CMH1,A

 

LJMP

EX_RTE

;на выход из обработчика

;======================================================

M24:

 

;если номер входа=5

MOV

A,RTE

;переключение Р4.1 и Р4.0 в

ANL

A,#0C0h

;момент времени (4)

 

ORL

A,#03h

 

MOV

RTE,A

 

;MOV

RTE,#03h

 

CLR

C

 

MOV

A,CML1

;загрузка в СМ1 момента времени

ADD

A,#5Ch

;переключения (4)

 

MOV

CML1,A

 

MOV

A,CMH1

 

ADDC

A,#09H

 

MOV

CMH1,A

 

MOV

R1,#00h

;сброс номера входа в обработчик

EX_RTE:

 

 

RETI

 

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

;от компаратора СМ1 ;======================================================

100

Соседние файлы в предмете Интегрированные системы управления и проектирования