Метки |
Мнемокод |
Комментарии |
|
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).
Ссылка на скачивание - внизу страницы.