TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: paquin en 28 de Mayo de 2007, 14:23:10
-
tengo el problema con el tmr0 que se desborda tan rapidamente que solo se ve un destello en el led, quiero que dos leds destellen, uno con el tmr0 y el otro con una rutina de tiempo
el progama es el siguiente.
org h'00´
goto inicio
retfie
org 'h04'
inicio
movlw h'1f'
bsf status,5
movwf trisa
movlw h'00'
movwf trisb
bcf status,5
star
bsf portb,7 ;enciende led 1
bsf status,5
bsf option_reg,0
bsf option_reg,1
bsf option_reg,2
bcf option_reg,3
bcf option_reg,5
movlw h'ff'
movwf tmr0
latch
btfss intcon,2
goto latch
bcf portb,7 ;apago led1
goto led
time
movlw h'ff'
movwf contador
dec1
movlw h'ff'
movwf contador1
dec
decfsz contador1
goto dec
decfsz contador
goto dec1
return
led
bsf portb,0
call time
bcf portb,0
call time
goto star
end
-
Hola amigo:
No dices nada de la frecuencia del cristal que estas utilizando. De pendiendo de esa frecuencia así será el tiempo que se dispare la interrupcion del TMR0.
Segun la configuracion del registro option que has puesto has configurado un divisor de 1:256 por lo que la cuenta al ser Fosc/4 el tiempo total de desborrde de la interrupcion será:
T=4 x Tosc x Valor de TMR0 x Rango del divisor
si tmr0=0 y el cristal es de 4MHz entonces:
T:4x0,25x256x256=65milisegundos.
Con lo que la interupcion se te está disparando cada 25milisegundos. Vamos que casi le veras siempre encendic
Fermin
-
Hay un pequeño error, al hablar de interrupcion quise decir rebose del TMR0.
2º error si el resultado de la formula da 65,025ms evidentemente no pueden ser 25 :D :D
Lapsus despues de estar un tiempo sin poder entrar en el foro :mrgreen: :mrgreen:
Fermin