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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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
Схема задержки 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, время: 13:59.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot