Você está na página 1de 12

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

1
Curso: Microcontroladores y Microprogramacin Clases Prcticas

Generacin de seal peridica con Timer 0 por consulta


#INCLUDE P16F877A.INC INITC
CALL INITC BANKSEL TRISC
CALL INIT_TMR0 CLRF TRISC
BUCLE BANKSEL PORTC
CLRF TMR0 CLRF PORTC
ESPERAR_DESBORDE RETURN
BANKSEL INTCON INIT_TMR0
BTFSS INTCON, T0IF BANKSEL TMR0
GOTO ESPERAR_DESBORDE CLRF TMR0
MOVLW 0XFF CLRF INTCON
XORWF PORTC BANKSEL OPTION_REG
BCF INTCON, T0IF MOVLW 0xC0 ; Reloj interno con pre-escalador 1:2
GOTO BUCLE 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 INITC


GOTO PROGRAMA BANKSEL TRISC
ORG 0X0004 CLRF TRISC
GOTO INTERRUPCION BANKSEL PORTC
PROGRAMA CLRF PORTC
CALL INITC RETURN
CALL INIT_TMR0 INIT_TMR0
CALL INIT_INT BANKSEL TMR0
BUCLE CLRF TMR0
GOTO BUCLE CLRF INTCON
INTERRUPCION BANKSEL OPTION_REG
BANKSEL TMR0 MOVLW 0xC0 ; Reloj interno con pre-escalador 1:2
CLRF TMR0 MOVWF OPTION_REG
MOVLW 0XFF RETURN
BANKSEL PORTC INIT_INT
XORWF PORTC BANKSEL INTCON
BANKSEL INTCON BSF INTCON, T0IE
BCF INTCON, T0IF BSF INTCON, GIE
RETFIE RETURN
END

2
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
Con reloj externo
Con reloj externo y circuito oscilador

3
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.

4
Curso: Microcontroladores y Microprogramacin Clases Prcticas

Ejemplo de Aplicacin del Timer1 como Temporizador


#INCLUDE P16F877A.INC INITC INVERTIR_SALIDA
CALL INITC BANKSEL TRISC MOVLW 0XFF
CALL INIT_TMR1 CLRF TRISC BANKSEL PORTC
BUCLE BANKSEL PORTC XORWF PORTC
CALL BORRAR_TIMER CLRF PORTC RETURN
ESPERAR_DESBORDE RETURN BORRAR_TIMER
BANKSEL PIR1 INIT_TMR1 BANKSEL TMR1H
BTFSS PIR1, TMR1IF BANKSEL TMR1H CLRF TMR1H
GOTO ESPERAR_DESBORDE CLRF TMR1H CLRF TMR1L
CALL INVERTIR_SALIDA CLRF TMR1L RETURN
CALL BORRAR_BANDERA MOVLW 0x30 ; Reloj interno BORRAR_BANDERA
GOTO BUCLE BANKSEL T1CON ;Pre-escalador BANKSEL PIR1
MOVWF T1CON ; 1:8 BCF PIR1, TMR1IF
BSF T1CON,TMR1ON;Arranque RETURN
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 TMR1L, F ;
; Si se requiere, se vuelven a habilitar las interrupciones
CONTINUE ; Continuacin del cdigo

5
Curso: Microcontroladores y Microprogramacin Clases Prcticas

Lectura del Timer 1 en corrida libre


VALOR
TMR1H TMR1L PROGRAMA TMPH TMPL Error
LEIDO
80 FF MOVF TMR1H, W
81 00 MOVWF TMPH 80
81 01 MOVF TMR1L, W
81 02 MOVWF TMPL 01 8001 254
81 03 MOVF TMR1H, W
81 04 SUBWF TMPH, W
81 05 BTFSC STATUS,Z
81 06 GOTO CONTINUAR
81 07 MOVF TMR1H, W
81 08 MOVWF TMPH 81
81 09 MOVF TMR1L, W
81 0A MOVWF TMPL 09 8109 10

Escritura del Timer 1 en corrida libre


Valor a escribir: AAFF
VALOR
TMR1H TMR1L PROGRAMA Error
ESCRITO
88 55
88 56 MOVLW 0XFF
88 FF MOVWF TMR1L, F
89 00 MOVLW 0XAA
AA 01 MOVWF TMR1H, F AA01 254

Valor a escribir: AAFF


VALOR
TMR1H TMR1L PROGRAMA Error
ESCRITO
88 55
88 00 CLRF TMR1L
88 01 MOVLW 0XAA
AA 02 MOVWF TMR1H, F
AA 03 MOVLW 0XFF
AA FF MOVWF TMR1H, F AAFF 0

6
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.


7
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 Mdulo CCPx inhabilitado (Resetea al mdulo)
0100 Modo captura, cada flanco de bajada
0101 Modo captura, cada flanco de subida
0110 Modo captura, cada 4to flanco de subida
0111 Modo captura, cada 16avo flanco de subida
Modo comparacin, inicializa el pin CCP en nivel bajo, en la
1000
igualdad de la comparacin setea el pin CCP (CCPIF es seteado)
Modo comparacin, inicializa el pin CCP en nivel alto, en la igualdad
1001
de la comparacin resetea el pin CCP (CCPIF es seteado)
Modo comparacin, Genera interrupcin en la igualdad de la
1010
comparacin (CCPIF es seteado, el pin CCP no es afectado)
Modo comparacin, Disparador de Evento Especial (CCPIF es
1011
seteado)
11xx Modo PWM

8
Curso: Microcontroladores y Microprogramacin Clases Prcticas

Modo Captura

Modo Comparacin

Disparador de
Evento Especial

9
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 Periodo Ciclo de Trabajo Timer a usar Pre-escalador Con Interrupcin
17 3.6 mS 25% Timer 2 y mdulo CCP 1/16 No
20 80 mS 50% Timer 0 1/256 Si
30 100 mS 50% Timer 1 1/1 Si

10
Curso: Microcontroladores y Microprogramacin Clases Prcticas

Para el periodo de la seal PWM: Para el ancho de pulso de la seal PWM:


2 = 1 = 224 = = 225 = 11100001
4

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: Para el Timer 1:

= = 156.25 157 = = 50000
4 4

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

11
Curso: Microcontroladores y Microprogramacin Clases Prcticas

12

Você também pode gostar