Порты ввода/вывода. Система управления МКЭВМ. Автономное использование МК-48. БИС расширителя ввода/вывода, страница 17

Метки

Мнемокод

Комментарии

DELAY

DIS

TCNTI

Запретить прерывания

MOV

A,#244

MOV

T,A

STRT

T

AGAIN

JTF

EXIT

JMP

AGAIN

Если TF=1

EXIT

STOP

TCNT

RET

2.  с использованием прерывания при переполнении таймера.

007Н – адрес вектора прерываний от таймера.

Метки

Мнемокод

Комментарии

EN

TCNTI

Разрешить прерывания

MOV

A,#244

MOV

T,A

STRT

T

Запуск таймера

...

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

...

ORG

007H

STOP

T

...

Какие-нибудь команды

RETR

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

Достоинство (б) – отсутствие потерь времени на ожидание переполнения таймера.

Пример: Необходимо сформировать импульс.

Пример: необходимо сформировать импульс:

а)          

Метки

Мнемокод

Комментарии

DIS

TCNTI

CLR

A

MOV

R7,A

MOV

T,A

ANL

P1,#11111110B

P1.0ß0

STRT

T

COUNT

JTF

EXIT

JMP

COUNT

EXIT

INC

RP

MOV

A,#05H

XRL

A,R7

Если (А)=05Н, то 0

JZ

DONE

Если (А)=0

JMP

COUNT

Если (А) не равно 0

DONE

STOP

T

ORL

P1,#00000001B

P1.0ß1

В МК48 после опроса флага переполнения, если он установлен, то он сбрасывается; в МК51 не так.

б)          

Метки

Мнемокод

Комментарии

EN

TCNTI

CLR

A

MOV

R7,A

MOV

T,A

ANL

P1,#11111110B

P1.0ß0

STRT

T

...

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

...

ORG

007H

Вектор прерывания от Т/С

INC

R7

MOV

A,#05H

XRL

A,R7

Сравнение аккумулятора и R7

JZ

DONE

Если равны

RETR

DONE

STOP

T

ORL

P1,#00000001B

P1.0ß1

RETR

Формирование задержек на таймерах семейства МК51.