Temporizador Timer 1
June 24, 2007 at 8:17 pm | Posted in Tutorial | 10 CommentsEl Timer 1 es un módulo temporizador/contador de 16 bits, que consiste en dos registros de 8 bits (TMR1H y TMR1L) que son de lectura y escritura. Este módulo incrementa su cuenta desde 0x000 hasta 0xFFFF y al desbordarse vuelve a 0x0000. Al presentarse el desborde la bandera de interrupción TMR1IF se pone a 1 y, si está habilitada, la interrupción se presenta.
Este módulo al igual que el Timer 0 puede funcionar en modo temporizador y en modo contador. En modo temporizador el par de registros TMR1 se incrementa en cada ciclo de instrucción, este modo se selecciona poniendo a 0 el bit TMR1CS del registro T1CON. En modo contador el par de registros TMR1 se incrementa en cada flanco ascendente de una señal de reloj externa, este modo se selecciona poniendo a 1 el bit TMR1CS del registro T1CON.
El preescalador del Timer 1 tiene un valor máximo de 8 y se selecciona con los bits T1CKPS1:T1CKPS0 de la siguiente manera:
Lea el artículo completo en el blog Circuitos electronicos.
10 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Create a free website or blog at WordPress.com.
Entries and comments feeds.
ES bueno que exista gente como el creador de esta blog…..
oye un favor será posible que me proporciones un diagrama electrico completo con este codigo.
de antemano….
gracias
Comment by cristobal— October 15, 2007 #
Muy buen tuto picman!
seria bueno que el paso siguiente fuera una interrupcion por TMR1 🙂
Suerte! 😀
Comment by mabauti— January 18, 2008 #
Gracias por la sugerencia mabauti, da gusto verte fuera del foro 😛 Lo tendre muy en cuenta!
Comment by micropic— January 19, 2008 #
Hola gracias por la ayuda de este blog, es muy importante, me gustaria que me ayudes con un problemilla que tengo, quisiera conectar un adc0808 a un pic 16f628a para tomar los datos de un termometro como el LM35 pero no se como deberia ir el codigo ni como conectar el adc. me puedes dar una mano?
Comment by Esteban Reinoso— May 13, 2008 #
Muy bueno me sirve bastante para la esc…, tendrias algun programa para pasar de decimala binario o a hexa , .. graxDD
Comment by >MA— June 9, 2008 #
Hola estoy quiero realizar un boton que cuando este activado de una frecuencia de 4khz, se pulsa el mismo boton y da una frecuencia de 2khz, se vuelve a pulsar y da una frecuencia de 1khz, se vuelve a pulsar y da 500hz, con el mismo boton (RA0) y una salida unicamente(RB3) utilizando pwm, para el pic 16f628a, cuando se activa suena un buzzer, hasta que se pulsa el mismo boton y se apaga(Ra0). este es mi codigo pero no se porque no jala
#INCLUDE P16f628A.INC
CONTADOR EQU 0x20
CONT EQU 0x21
CONT2 EQU 0x22
CONT3 EQU 0x23
org 0x00 ;Vector reset
goto INICIO0
INICIO0 movlw 0x00
movwf CONTADOR
INICIO movlw b’00000111′
movwf CMCON
movlw b’00000000′
movwf OPTION_REG
bsf STATUS,RP0
movlw 0xFF
movwf TRISA
movlw 0x00
movwf TRISB
bcf STATUS,RP0
clrf PORTA
clrf PORTB
movlw 0x08
movwf PCON
PRINCIPAL bcf STATUS,RP0
btfsc PORTA,0
goto INICIO
call RETARDO_20ms
btfsc PORTA,0
goto INICIO0
movf CONTADOR,W
andlw b’00000111′
addwf PCL,F
TABLA goto FREC4
goto FREC2
goto FREC1
goto FREC0
goto APAGA
goto INICIO0
FREC4 clrwdt
bsf STATUS,RP0
movlw .249
movwf PR2 ;Inicializa CCP1
bcf STATUS,RP0
movlw 0x04
movwf T2CON ;Poscala 1:1, timer2 on, preescala 1
movlw 0x3E
movwf CCPR1L ;Inicia el ciclo de trabajo en 50%
movlw 0x3C
movwf CCP1CON ;Inicia CCP del PWM
bsf PORTB,3
incf CONTADOR
goto PRINCIPAL
FREC2 clrwdt
bcf STATUS,RP0
clrf CCP1CON
clrf T2CON
call RETARDO_30mms
bsf STATUS,RP0
movlw 0x7C
movwf PR2 ;Inicializa CCP1
bcf STATUS,RP0
movlw 0x05
movwf T2CON ;Poscala 1:1, timer2 on, preescala 4
movlw 0x3E
movwf CCPR1L ;Inicia el ciclo de trabajo en 100%
movlw 0x3C
movwf CCP1CON ;Inicia CCP del PWM
bsf PORTB,3
;call RETARDO_3s
;clrf CCP1CON
;clrf T2CON
incf CONTADOR
goto PRINCIPAL
FREC1 clrwdt
bcf STATUS,RP0
clrf CCP1CON
clrf T2CON
call RETARDO_30mms
bcf STATUS,RP0
clrf CCP1CON
clrf T2CON
call RETARDO_30mms
bsf STATUS,RP0
movlw 0xF9
movwf PR2 ;Inicializa CCP1
bcf STATUS,RP0
movlw 0x05
movwf T2CON ;Poscala 1:1, timer2 on, preescala 4
movlw 0x7D
movwf CCPR1L ;Inicia el ciclo de trabajo en 100%
movlw 0x3F
movwf CCP1CON ;Inicia CCP del PWM
bsf PORTB,3
;call RETARDO_3s
;clrf CCP1CON
;clrf T2CON
incf CONTADOR
goto PRINCIPAL
FREC0 clrwdt
clrf CCP1CON
clrf T2CON
call RETARDO_30mms
bsf STATUS,RP0
movlw 0x7C
movwf PR2 ;Inicializa CCP1
bcf STATUS,RP0
movlw 0x07
movwf T2CON ;Poscala 1:1, timer2 on, preescala 16
movlw 0x3E
movwf CCPR1L ;Inicia el ciclo de trabajo en 100%
movlw 0x3C
movwf CCP1CON ;Inicia CCP del PWM
bsf PORTB,3
;call RETARDO_3s
;clrf CCP1CON
;clrf T2CON
incf CONTADOR
goto PRINCIPAL
APAGA bcf STATUS,RP0
clrf CCP1CON
clrf T2CON
bcf PORTB,3
goto INICIO0
RETARDO_30mms
movlw .3 ;N=255
movwf CONT
CICLO_50mms
clrwdt
decfsz CONT,f ;1*(N-1)+2
goto CICLO_50mms ;2*(N-1)
clrwdt
return
RETARDO_20ms
movlw .21 ;M=60
movwf CONT2
CICLO2_20ms
movlw .237 ;N=11
movwf CONT
CICLO_20ms
clrwdt
decfsz CONT,f
goto CICLO_20ms
decfsz CONT2,f
goto CICLO2_20ms
nop
clrwdt
return
END
Comment by Galois— July 14, 2008 #
Muy bueno mano, nos ayudas un buen a los novatos y despistados como yo, echale un buen de ganas y sigue como vas, oye, en la escuela nos pusieron a realizar un proyecto sencillo de un led infrarojo con su respectivo receptor, cuando el haz se bloquee el PIC debe de advertir dicha accion, y ando bien perdido, se que se debe hacer con PWM, alguna idea?
Comment by sp-peter— January 26, 2009 #
Hola, tengo una pregunta, el Timer 1 puede seguir contando cuando se produce una interrupción externa en RB0, o deja de contar, y empieza de nuevo cuando regresa de la interrupción.
Es que necesito hacer un encoder para control de velocidad de un motor de DC. Lo que estaba pensando es contar el tiempo entre dos flancos ascendentes por la interrupción externa por el RB0.
Seria de mucha ayuda si me pudieras echar la mano con esto.
Muchas gracias por la ayuda y por este blog que esta genial.
Comment by Daniel— October 20, 2009 #
hola.
tengo muchos deseos de aprender a programar , partiendo con el 16f628a, lo del led lo tengo clarísimo, pero no sé como seguir avanzando. de donde me puedo afirmar para avanzar un poco más?. gracias
Comment by ultra— May 3, 2010 #
Estoy feliz de encontrar blogs donde hallar informacion tan util como esta. Gracias por facilitar este articulo.
Saludos
Comment by Ver más datos— July 24, 2018 #