|
Метки |
Мнемокод |
Комментарии |
|
|
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 |
|||

Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.