Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как создать большие паузы.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Scorpline
Как написать паузы на ассемблере с большой длительностью?
...допустим выход порта устанавливать то в 0 то в 1 с интервалом в минуту.
Не таким же образом...?
.........
mov r2,#00h
vozv: mov r1,#00h
djnz r1,$
djnz r2,vozv
..........
Палыч
Для этого используют таймеры: в процедуре обработки прерывания от таймера производят необходимые действия. Если выдержка времени, ну, очень большая - необходимое действие выполняют один раз на несколько прерываний (ведут подсчет прерываний).
oran-be
При помощи организации виртуальных таймеров. Настраивается один из таймеров , наиболее удобен 2-ой таким образом, чтобы он вырабатывал прерывания каждую 1 мс, или, скажем 10 мСек. И в теле функции прерывания пишытся виртуальный таймер :

Код
wTimer   DW 1

ORG xxxx
; вход в прерывание
..............

; таймер собственно - декрементирующий

                mov   A, wTimer
                jnz     dec_timer
                mov   A, wTimer+1
                jz       exit_timer
dec_timer:
                dec    A
                jnz     exit_timer
                mov   wTimer+1, A
                mov   A, wTimer
                dec    A
                jnz     exit_timer
; здесь фтыкается обработчик события - типа установить порт или сбросить порт
....................................

exit_timer:


Для того, чтобы запустить таймер, достаточно загрузить в него значение, не забыв при этом запретить прерывания и набыв потом их разрешить. При прерываниях в 1 Мс максимальное время интервала - 65 секунд с точностью 1 мСек
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.