реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как создать большие паузы., 8051
Scorpline
сообщение Oct 28 2007, 22:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 25-10-07
Пользователь №: 31 737



Как написать паузы на ассемблере с большой длительностью?
...допустим выход порта устанавливать то в 0 то в 1 с интервалом в минуту.
Не таким же образом...?
.........
mov r2,#00h
vozv: mov r1,#00h
djnz r1,$
djnz r2,vozv
..........
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 29 2007, 06:24
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Для этого используют таймеры: в процедуре обработки прерывания от таймера производят необходимые действия. Если выдержка времени, ну, очень большая - необходимое действие выполняют один раз на несколько прерываний (ведут подсчет прерываний).
Go to the top of the page
 
+Quote Post
oran-be
сообщение Oct 29 2007, 17:35
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



При помощи организации виртуальных таймеров. Настраивается один из таймеров , наиболее удобен 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 мСек

Сообщение отредактировал oran-be - Oct 29 2007, 17:38
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 00:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016