por Pask » 10 Mar 2007 09:06
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.