Vous êtes sur la page 1sur 11

Curso: Microcontroladores y Microprogramacin Clases Prcticas

El Timer 0
Caractersticas

Temporizador/contador de 8 bits
Permite lectura y escritura
Pre-escalador programable de 8 bits
Fuente de reloj seleccionable externa o interna
Puede producir interrupcin por desbordamiento (Cambio de FFh a 00h)
Flanco seleccionable para el reloj externo

Esquema Descriptivo

Registro OPTION_REG

T0CS Seleccin de la seal de reloj del timer 0


1 Los pulsos para el timer 0 ingresan por el pin RA4.
0 - Reloj interno (Fosc/4).
T0SE Seleccin del flanco de la seal en el pin
1 Flanco de bajada en el pin
0 - Flanco de subida en el pin
PSA Bit de asignacin de pre-escalador
1 El pre-escalador se asigna al wathdog
0 - El pre-escalador se asigna al timer 0
PS2, PS1, PS0 Seleccin del factor de pre-escalamiento

Curso: Microcontroladores y Microprogramacin Clases Prcticas

Generacin de seal peridica con Timer 0 por consulta


#INCLUDE P16F877A.INC
CALL INITC
CALL INIT_TMR0
BUCLE
CLRF TMR0
ESPERAR_DESBORDE
BANKSEL INTCON
BTFSS INTCON, T0IF
GOTO ESPERAR_DESBORDE
MOVLW 0XFF
XORWF PORTC
BCF INTCON, T0IF
GOTO BUCLE

INITC
BANKSEL TRISC
CLRF TRISC
BANKSEL PORTC
CLRF PORTC
RETURN
INIT_TMR0
BANKSEL TMR0
CLRF TMR0
CLRF INTCON
BANKSEL OPTION_REG
MOVLW 0xC0 ; Reloj interno con pre-escalador 1:2
MOVWF OPTION_REG
RETURN
END

El intervalo generado T se halla con la frmula


T = N*M*(4/Fosc)
N Nmero de incrementos del Timer 0
1/M Valor del pre-escalador
Fosc - Frecuencia de reloj del microcontrolador.
El valor inicial del timer 0 es: VI = 256 N.

Generacin de seal peridica con Timer 0 por interrupcin


#INCLUDE P16F877A.INC
GOTO PROGRAMA
ORG 0X0004
GOTO INTERRUPCION
PROGRAMA
CALL INITC
CALL INIT_TMR0
CALL INIT_INT
BUCLE
GOTO BUCLE
INTERRUPCION
BANKSEL TMR0
CLRF TMR0
MOVLW 0XFF
BANKSEL PORTC
XORWF PORTC
BANKSEL INTCON
BCF INTCON, T0IF
RETFIE

INITC
BANKSEL TRISC
CLRF TRISC
BANKSEL PORTC
CLRF PORTC
RETURN
INIT_TMR0
BANKSEL TMR0
CLRF TMR0
CLRF INTCON
BANKSEL OPTION_REG
MOVLW 0xC0 ; Reloj interno con pre-escalador 1:2
MOVWF OPTION_REG
RETURN
INIT_INT
BANKSEL INTCON
BSF INTCON, T0IE
BSF INTCON, GIE
RETURN
END

Curso: Microcontroladores y Microprogramacin Clases Prcticas

El Timer 1
Caractersticas

Temporizador/contador de 16 bits
Permite lectura y escritura
Fuente de reloj seleccionable externa o interna
Puede producir interrupcin por desbordamiento (Cambio de FFFFh a 0000h)
Se puede reinicializar desde los mdulos CCP
Registro contador de 16 bits

Modos de operacin
Con reloj interno Temporizador
Contador
Con reloj externo
Con reloj externo y circuito oscilador

Curso: Microcontroladores y Microprogramacin Clases Prcticas

Esquema Descriptivo

Registro T1CON

T1CKPS1, T1CKPS0 Bits de seleccin del factor de pre-escalamiento del timer 1.

T1OSCEN Bit de habilitacin del oscilador del timer 1


1 Oscilador habilitado.
0 Oscilador Inhabilitado.
/T1SYNC Bit de seleccin de sincronizacin de la seal de reloj externa del Timer 1.
Cuando TMR1CS = 1:
1 No sincronizar.
0 - Sincronizar.
Cuando TMR1CS=0, este bit es ignorado.
TMR1CS Bit de seleccin de la fuente de la seal de reloj del Timer 1.
1 Cuenta los pulsos en el pin T1CKI (en el flanco de subida)
0 Cuenta los pulsos del reloj interno del microcontrolador.
TMR1ON Bit de arranque del Timer1.
1 Arranca el Timer 1.
0 Detiene al Timer 1.

Curso: Microcontroladores y Microprogramacin Clases Prcticas

Ejemplo de Aplicacin del Timer1 como Temporizador


#INCLUDE P16F877A.INC
CALL INITC
CALL INIT_TMR1
BUCLE
CALL BORRAR_TIMER
ESPERAR_DESBORDE
BANKSEL PIR1
BTFSS PIR1, TMR1IF
GOTO ESPERAR_DESBORDE
CALL INVERTIR_SALIDA
CALL BORRAR_BANDERA
GOTO BUCLE

INITC
BANKSEL TRISC
CLRF TRISC
BANKSEL PORTC
CLRF PORTC
RETURN
INIT_TMR1
BANKSEL TMR1H
CLRF TMR1H
CLRF TMR1L
MOVLW 0x30 ; Reloj interno
BANKSEL T1CON ;Pre-escalador
MOVWF T1CON ; 1:8
BSF T1CON,TMR1ON;Arranque
RETURN

INVERTIR_SALIDA
MOVLW 0XFF
BANKSEL PORTC
XORWF PORTC
RETURN
BORRAR_TIMER
BANKSEL TMR1H
CLRF TMR1H
CLRF TMR1L
RETURN
BORRAR_BANDERA
BANKSEL PIR1
BCF PIR1, TMR1IF
RETURN
END

El intervalo generado T se halla con la frmula


T = N*M*(4/Fosc)
N Nmero de incrementos del Timer 1
1/M Valor del pre-escalador
Fosc - Frecuencia de reloj del microcontrolador.
El valor inicial del timer 0 es: VI = 65536 N.

Lectura del Timer 1 en corrida libre


; Todas las interrupciones estn inhabilitadas
MOVF TMR1H, W ; Leer el byte alto
MOVWF TMPH ;
MOVF TMR1L, W ; Leer el byte bajo
MOVWF TMPL ;
MOVF TMR1H, W ; Leer el byte alto
SUBWF TMPH, W ; Sustraer
BTFSC STATUS,Z ; Diferencia no es 0?
GOTO CONTINUE ; Buena lectura de 16 bits
; TMR1L ha generado acarreo entre las lecturas del byte alto y bajo.
; La nueva lectura ser correcta.
MOVF TMR1H, W ; Leer byte alto
MOVWF TMPH ;
MOVF TMR1L, W ; Leer byte bajo
MOVWF TMPL ;
; Si se requiere, se vuelven a habilitar las interrupciones
CONTINUE ; Continuacin del cdigo

Escritura del Timer 1 en corrida libre


Primero se borra TMR1L para asegurar que hay muchos ciclos de reloj antes de que
se genere acarreo al registro TMR1H. Luego, se carga TMR1H, y finalmente se carga
TMR1L.
; Todas las interrupciones estn inhabilitadas
CLRF TMR1L ; Borrar byte bajo
MOVLW HI_BYTE ; Cargar byte alto en TMR1H
MOVWF TMR1H, F ;
MOVLW LO_BYTE ; Cargar byte bajo en TMR1L
MOVWF TMR1H, F ;
; Si se requiere, se vuelven a habilitar las interrupciones
CONTINUE ; Continuacin del cdigo

Curso: Microcontroladores y Microprogramacin Clases Prcticas

El Timer 2
El Timer 2 es de 8 bits con pre-escalador, post-escalador y un registro de periodo.
Cuando en el pre-escalador y post-escalador se colocan los valores mximos, el
intervalo de tiempo generado es el mismo que el de un timer de 16 bits.

T2CON register

TOUTPS3 - TOUTPS0 Bits de seleccin del factor del post-escalamiento del Timer2

TMR2ON Bit de arranque del Timer2.


6

Curso: Microcontroladores y Microprogramacin Clases Prcticas

1 Timer 2 arrancado.
0 - Timer 2 parado.
T2CKPS1, T2CKPS0 - Bits de seleccin del factor del pre-escalamiento del Timer2

El Mdulo CCP1
CCPR1H CCPR1L - Registro de 16 bits

Registro de 16 bits de captura


Registro de 16 bits de comparacin
Registro de ciclo de trabajo de seal PWM

CCP1CON Register

DC1B1, DC1B0 Bits menos significativos del ciclo de trabajo (nmero de 10 bits).
CCP1M3 - CCP1M0 Bits de seleccin del modo del mdulo CCP1.
CCP1M3 - CCP1M0

Modo

0000
0100
0101
0110
0111

Mdulo CCPx inhabilitado (Resetea al mdulo)


Modo captura, cada flanco de bajada
Modo captura, cada flanco de subida
Modo captura, cada 4to flanco de subida
Modo captura, cada 16avo flanco de subida
Modo comparacin, inicializa el pin CCP en nivel bajo, en la
igualdad de la comparacin setea el pin CCP (CCPIF es seteado)
Modo comparacin, inicializa el pin CCP en nivel alto, en la igualdad
de la comparacin resetea el pin CCP (CCPIF es seteado)
Modo comparacin, Genera interrupcin en la igualdad de la
comparacin (CCPIF es seteado, el pin CCP no es afectado)
Modo comparacin, Disparador de Evento Especial (CCPIF es
seteado)
Modo PWM

1000
1001
1010
1011
11xx

Curso: Microcontroladores y Microprogramacin Clases Prcticas

Modo Captura

Modo Comparacin

Disparador de
Evento Especial

Curso: Microcontroladores y Microprogramacin Clases Prcticas

Modo PWM

No se puede usar el post-escalador del timer 2.

Periodo PWM
TPWM = [(PR2) + 1] 4 TOSC M
(PR2) Valor del registro de periodo
TOSC Periodo de la seal de reloj del microcontrolador
1/M - Valor del pre-escalador de TMR2

Ciclo de Trabajo PWM


CTPWM = CTTOSCM
CT - (CCPR1L:CCP1CON<5:4>) Contenido de CCPR1L y los bits 5 y 4 de CCP1CON
TOSC Periodo de la seal de reloj del microcontrolador

Ejemplo de generacin de las seales de la tabla para fosc=4MHz


Pin
17
20
30

Periodo Ciclo de Trabajo


Timer a usar
Pre-escalador Con Interrupcin
3.6 mS
25%
Timer 2 y mdulo CCP
1/16
No
80 mS
50%
Timer 0
1/256
Si
100 mS
50%
Timer 1
1/1
Si

Curso: Microcontroladores y Microprogramacin Clases Prcticas

Para el periodo de la seal PWM:


2 =

Para el ancho de pulso de la seal PWM:

1 = 224
4

= 225 = 11100001

El valor inicial decimal calculado para PR2 El valor inicial decimal calculado para
es: 224
CCPR1L es: 56
Los dos bits menos significativos son: 01
Para el Timer 0:

=
= 156.25 157
4

Para el Timer 1:

VI=256-157=99
El valor inicial decimal calculado es: 99

VI=65536-50000=15536
El valor inicial decimal calculado es: 15536

10


= 50000
4

Curso: Microcontroladores y Microprogramacin Clases Prcticas

11

Vous aimerez peut-être aussi