Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Расчет времени задержки

Непрочитано 09.03.2006, 22:37  
crazz
Частый гость
 
Регистрация: 16.05.2005
Сообщений: 45
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
crazz на пути к лучшему
По умолчанию Расчет времени задержки

контроллер pic16f84a

задержка реализуется следующим кодом

Код:
DelayL		equ 0x0C		; delay register LOW byte
DelayM		equ 0x0D		; delay register MID byte
DelayH		equ 0x0E		; delay register HIGH byte



; --------------------------------
; SUBROUTINE: waste time for 500mS
; --------------------------------
;
Delay500	clrf DelayL		; /R clear DelayL to 0
		clrf DelayM		; clear DelayM to 0
		movlw 3h		; set DelayH to 3
		movwf DelayH

Wait1		decfsz DelayL		; subtract 1 from DelayL
		goto Wait1		; if not 0, goto Wait1
		decfsz DelayM		; subtract 1 from DelayM
		goto Wait1		; if not 0, goto Wait1
		decfsz DelayH		; subtract 1 from DelayH
		goto Wait1		; if not 0, goto Wait1
		return			; finished the delay

		end
Эта задержка использована в программе, на глаз лампочка тухнет примерно на пол секунды.

Пытаюсь расчитать

т.к. ячейки памяти 8 разардные
считаем число инструкций 256*256*2 = 131072
т.к. goto занимает 2 цикла то 131072*1.5 = 196608
тогда число тактов 196608*4 = 786432

тактовая частота 4МГц, т.е. время задержки = 786432/4000000
тогда получается задержка 0.197 секнды

гдето ошибся с расчетом
Реклама:
crazz вне форума  
Непрочитано 13.03.2006, 19:33  
retas
Гость
 
Сообщений: n/a
По умолчанию

Посмотри как это делает японец,пм,так удобней а ещё
удобней было бы писать на Бейсике.

www.interq.or.jp/japan/se-inoue/e_pic6_1.htm
 
Непрочитано 13.03.2006, 20:16  
crazz
Частый гость
 
Регистрация: 16.05.2005
Сообщений: 45
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
crazz на пути к лучшему
По умолчанию

Сообщение от retas
Посмотри как это делает японец,пм,так удобней а ещё
удобней было бы писать на Бейсике.

www.interq.or.jp/japan/se-inoue/e_pic6_1.htm
Ты про это

Код:

;*************  1msec Timer Subroutine  *****************
t1m     movlw   d'2'            ;(1)       Set loop cnt1
        movwf   cnt1m           ;(1)       Save loop cnt1
tm1lp1  movlw   d'249'          ;(1)*2     Set loop cnt2
        movwf   cnt500u         ;(1)*2     Save loop cnt2
tm1lp2  nop                     ;(1)*249*2 Time adjust
        nop                     ;(1)*249*2 Time adjust
        decfsz  cnt500u,f       ;(1)*249*2 cnt500u-1=0 ?
        goto    tm1lp2          ;(2)*248*2 No, continue
        decfsz  cnt1m,f         ;(1)*2     cnt1m-1=0 ?
        goto    tm1lp1          ;(2)       No. Continue
        return                  ;(2)       Yes. Cnt end
                                ;Total 2501*0.4usec=1msec

;*************  100msec Timer Subroutine  ***************
t100m   movlw   d'100'          ;Set loop counter
        movwf   cnt100m         ;Save loop counter
tm2lp   call    t1m             ;1msec subroutine
        decfsz  cnt100m,f       ;cnt100m - 1 = 0 ?
        goto    tm2lp           ;No. Continue
        return                  ;Yes. Count end


;*************  500msec Timer Subroutine  ***************
t500m   movlw   d'5'            ;Set loop counter
        movwf   cnt500m         ;Save loop counter
tm3lp   call    t100m           ;100msec subroutine
        decfsz  cnt500m,f       ;cnt500m - 1 = 0 ?
        goto    tm3lp           ;No. Continue
        return                  ;Yes. Count end

;**************  1sec Timer Subroutine  *****************
t1s     movlw   d'2'            ;Set loop counter
        movwf   cnt1s           ;Save loop counter
tm4lp   call    t500m           ;500msec subroutine
        decfsz  cnt1s,f         ;cnt1s - 1 = 0 ?
        goto    tm4lp           ;No. Continue
        return                  ;Yes. Count end
так-то круто
call t100m ;Wait 100msec

пасиба
crazz вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Магнитострикционная линия задержки Falconist Поиск схем. Делимся схемами 4 21.04.2009 10:03
Схема задержки включения LM317 maxNTF Электроника - это просто 8 07.12.2008 11:21
Измерение времени задержки сигналов socker Измерительное оборудование 17 13.10.2008 11:42
помогите расчет времени работы аккумулятора? maxNTF Источники питания и свет 6 27.06.2008 17:43
Расчет времени для диммера Только учусь Микроконтроллеры, АЦП, память и т.д 3 03.03.2006 18:35


Часовой пояс GMT +4, время: 03:24.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.