Página 1 de 1

Rotina para delay de 15 segundos???

MensagemEnviado: 09 Mar 2007 23:51
por Haroldo Coelho
Para delay de 250 ms eu já ví em diversos livros e até já utilizei. Mas como seria uma rotina para 15 segundos????

please, em asssembly.

Thanks you.

MensagemEnviado: 10 Mar 2007 00:09
por eletroinf
Bom, na tua pergunta já tem uma possibilidade.
Chama a rotina de 250ms 60 vezes que resulta em 15 segundos.

MensagemEnviado: 10 Mar 2007 00:22
por Haroldo Coelho
também pensei nessa possibilidade, mesmo porque acho que todas as outras formas serão semelhantes, não?

MensagemEnviado: 10 Mar 2007 00:43
por ernande_filho
sim! é tudo repetição pra "comer" o tempo.

MensagemEnviado: 10 Mar 2007 09:06
por Pask
Caro Haroldo, para uma contagem de tempo de 15 segundos, por exemplo, ajuste o prescaler do timer0 para 1:255 e crie uma variável auxiliar (VAR_AUX) inicializando-a com o valor 231 decimal. Deixe o TMR0 estourar normalmente. Então a sub-rotina ficará mais ou menos assim:

DELAY_15S ;15,021s = 255us (PRESCALER) x 255 (TMR0) x 231 (VAR_AUX)

MOVLW .231
MOVWF VAR_AUX
CLRF TMR0
MOVLW .255
SUBWF TMR0,W
BTFSS STATUS,C
GOTO $-3
DECFSZ VAR_AUX,F
GOTO $-6
RETURN ;retorna após 15 segundos!

É claro que na sub-rotina acima, eu pressuponho que vc não esteja com o watchdog-timer habilitado. Caso ele esteja, será preciso incluir no meio da sub-rotina uma instrução CLRWDT e ajustar os "GOTO"!

Um forte abraço e boa sorte no seu projeto.

Pask.

MensagemEnviado: 10 Mar 2007 17:17
por Renie
Olá Haroldo,

Tem este utilitário para gerar rotinas de delay:

http://www.piclist.com/techref/piclist/ ... /delay.htm

MensagemEnviado: 10 Mar 2007 23:21
por Haroldo Coelho
obrigado a todos

MensagemEnviado: 12 Mar 2007 09:29
por andre_luis
Haroldo,

Só pra lembrar : Quando voce utiliza interrupção com temporizacao interna, o tempo necessário para processar a interrupção interfere no cálculo. Isso não gera problema algum se a precisão necessária for de apenas alguns minutos, mas se extender além disso, tem de ficar conciente que ao multiplicar um valor, o erro associado também acaba sendo multiplicado.

Por isso, para casos onde uma maior precisao seja necessária, voce deve utilizar um oscilador/divisor externo para gerar a interrupção, ou então proceder a uma correção do erro periodicamente.

+++

MensagemEnviado: 12 Mar 2007 22:33
por Haroldo Coelho
André, meu projeto não é muito preciso não, será de 15 segundos + ou - 1 segundo. Valeu pela dica. Já fiz o projeto no MPLAB , agora vou pro protoboard.

Valeu.

MensagemEnviado: 12 Mar 2007 23:55
por barboza
O problema de algumas rotinas de delay é que ela fia "pressa" e com isso não se faz mais nada enquanto espera-se o tempo.
Tipo esquece sensores, serial, etc.

Neste caso o melhor é estruturar suas rotinas e fazer processamento paralelo.

MensagemEnviado: 13 Mar 2007 09:15
por andre_luis
barboza escreveu:... o melhor é estruturar suas rotinas e fazer processamento paralelo.


É isso mesmo. Faz o delay temporizado por interrupção de Timer.