Página 1 de 1

QUEBRA CABEÇA TIMER0

MensagemEnviado: 21 Nov 2006 13:33
por tcpipchip
Veja o programa abaixo (simulador no MPLAB 7.5)

Código: Selecionar todos
   PROCESSOR PIC16F84A
   INCLUDE "P16F84A.INC"
   ORG 0
   BSF STATUS,RP0
   BCF OPTION_REG,T0CS ; TIMER CLK Fosc/4
   BCF STATUS,RP0
   CALL PAUSA
LOOP:
   GOTO LOOP
   
PAUSA:
   CLRF TMR0
COMPARA:
   MOVLW 6
   SUBWF TMR0,W
   BTFSS STATUS,Z
   GOTO COMPARA
   RETURN
   END


Por que apos zerar o TMR0, ele só começa a contar depois executar BTFSS STATUS,Z e nao apos MOVLW 6 e SUBWF TMR0,W? Muito estranho né :(

Re: QUEBRA CABEÇA TIMER0

MensagemEnviado: 21 Nov 2006 13:49
por andre_luis
Realmente....

Será que existe algum instante no microcódigo do PIC em que a instrução " CLRF TMR0" não atue ? ( tipo, durante o overflow ? )

+++

Caramba

MensagemEnviado: 21 Nov 2006 22:48
por tcpipchip
Nem no PROTEUS funciona :(
O TMR0 deveria contar apos 1 us :(
Desisto.

MensagemEnviado: 21 Nov 2006 23:35
por ric_vas
Ele só começa a contar neste ponto porque quando você realiza uma escrita no registrador TMR0 o incremento fica interrompido por dois ciclos de instrução.

Ric

.

MensagemEnviado: 22 Nov 2006 10:35
por tcpipchip
Sério?

Isto está no datasheet ou nao?

Obrigadão mesmo!

MensagemEnviado: 22 Nov 2006 10:38
por ric_vas
Sim, está logo no começo da parte que fala do timer 0.

Abraço,

Ric

tks

MensagemEnviado: 22 Nov 2006 14:23
por tcpipchip
Tem razão, acabei de ver :)
Voce salvou algumas cabeças aqui :)
Grato