Você está na página 1de 25

TIMERS

Registro contador. Contaje de impulsos de reloj:


Derivado del oscilador principal: TIMER. Seal externa: COUNTER.

Longitud: 8 bits (0-255) o 16 bits (0-65535) Cclicos: puesta a cero al desbordamiento. El desbordamiento activa un flag y puede provocar interrupcin (si est habilitada).
1

TIMERS
Aplicaciones:
Temporizaciones Contaje de eventos Generacin de seales Medida de periodos

Timers en el PIC 16f877:


Timer 0: 8 bits con pre-escalado Timer 1: 16 bits con pre-escalado Timer 2: 8 bits con pre y post-escalado
2

Timer/Counter Pre-escalado Reg. Contador

Flanco Desbordamiento

TIMER 0
3

Timer/Counter

Reg. Contador

Flanco Nivel de pre-escalado Pre-escalado Desbordamiento

Flanco

Nivel de pre-escalado

Timer/counter

Pre-escalado

Habilitacin general de interrupciones.

Flag de desbordamiento.

Habilitacin particular.

La escritura en el TMR0 inhibe el contaje durante dos ciclos mquina

La escritura en el TMR0, adems pone a cero el contaje del predivisor

Detalle del proceso peticin-atencin a la interrupcin del T0

Desbordamiento. Interrupcin.

Sincronizacin del reloj externo

10

Ejemplo: T0 en modo timer


P.Principal Interrupciones

Habilitacin de interrupciones General y particular

Incrementar Puerto B

Borrado del flag Configuracin y arranque del timer 0 Retorno Int.

11

;Uso del timer0.Cada vez que se desborda el timer 0, se incrementa la salida del puerto B LIST p=16F877 INCLUDE "P16F877.INC" __config h'3f71' Vector de reset ORG 0x00 goto inicio org 0x04 Vector de interrupcin goto inter ORG 0x05 inicio movlw b'10100000' ;Habiltacin de la interrupcin externa movwf INTCON bsf STATUS,RP0 ;Seleccin del banco 1 de registros Programa clrf TRISB ;puerto B como salida principal movlw b'10000111' ;timer 0 como timer con movwf OPTION_REG ;preescalado a 255 ( aprox 65 msg) bcf STATUS,RP0 ;Seleccin del banco 0 de registros clrf PORTB ;puerto B a cero lazo goto lazo inter incf PORTB,1 ; incrementa la salida del puerto B bcf INTCON, T0IF ; borrado del flag Rutina de retfie interrupcin END
12

Ejemplo: T0 en modo timer


P.Principal Interrupciones decrementar desbordamientos Habilitacin de interrupciones General y particular

Desbordamientos=0

Desbordamientos=15

Desbordamientos=15 Incrementar Puerto B Borrado del flag Retorno Int.


13

Configuracin y arranque del timer 0

Programa principal

;Se incrementa el puerto B cada segundo LIST p=16F877 INCLUDE "P16F877.INC" __config h'3f71' desbord EQU 0x20 Vector de reset ORG 0x00 goto inicio Vector de interrupcin org 0x04 goto inter ORG 0x05 inicio movlw b'10100000' movwf INTCON bsf STATUS,RP0 clrf TRISB movlw b'10000111' movwf OPTION_REG bcf STATUS,RP0 clrf PORTB movlw b'00001111' Inicializando movwf desbord desbord a 15 lazo goto lazo

14

inter decfsz desbord,1 goto salto incf PORTB,1 movlw b'00001111' movwf desbord salto bcf INTCON, T0IF retfie END

Decrementando desbord Desbord = 0 Desbord > 0

Rutina de interrupcin

15

Desbordamiento. Arranque/parada del timer.

Habilitacin Oscilador externo. Seleccin de reloj.

Nivel de peescalado.

TIMER 1
16

Seleccin de reloj

Nivel de preescalado

Hab. Osc. Ext.

Arranque del timer.

17

Habilitacin general. Habilitacin de perifricos. Flag de desbordamiento. Habilitacin particular.


18

Ejemplo: T1 en modo counter


P.Principal Interrupciones Incrementar Puerto B

Habilitacin de interrupciones General y particular

Timer 1 inicializado a (256-10)

Configuracin (como counter) y arranque del timer 1 Timer 1 inicializado a (256-10)

Borrado del flag Retorno Int.

19

;Timer 1 como counter.Cada vez que se desborda el timer 1 (a los 10 pulsos), se incrementa la salida del puerto B LIST p=16F877 INCLUDE "P16F877.INC" __config h'3f71' ORG 0x00 goto inicio org 0x04 goto inter ORG 0x05 Inicio ;Programa principal movlw b'11000000' ;Habiltacin global de interrupciones movwf INTCON ;ojo! hay que activar el bit PEIE bsf STATUS,RP0 ;Seleccin del banco 1 de registros movlw b'00000001' ;Habilitacin particular del timer 1 movwf PIE1 clrf TRISB ;puerto B como salida bcf STATUS,RP0 ;Seleccin del banco 0 de registros clrf PORTB ;puerto B a cero movlw b'00000011' ;timer 1 como counter, sin preescalado movwf T1CON movlw b'11111111' ;Timer 1 inicializado para desbordarse movwf TMR1H ;a los 10 pulsos (256-10) movlw b'11110110' movwf TMR1L lazo goto lazo 20

;Rutina de atencin a la interrupcin inter incf PORTB,1 bcf PIR1, TMR1IF movlw b'11111111' movwf TMR1H movlw b'11110110' movwf TMR1L retfie END ; incrementa la salida del puerto B ;borrado del flag ;Timer 1 inicializado para desbordarse ;a los 10 pulsos (256-10)

21

Desbordamiento.

Reloj.

Preescalado.

Postescalado.

TIMER 2
22

Preescalado.

Postescalado.

Arranque.

23

Habilitacin general. Habilitacin de perifricos. Flag de desbordamiento. Habilitacin particular.


24

Tareas propuestas
Un sensor acoplado a la puerta de un frigorfico, detecta si la puerta del mismo esta abierta o cerrada. Disear una aplicacin que genere una alarma si la puerta se abre 20 veces. Usar el timer 0. Al diseo anterior aadir un pulsador para reiniciar la alarma. Usar una interrupcin externa. Al diseo anterior aadir una segunda alarma, que se active si la puerta permanece abierta mas de 1 minuto. Usar el timer 1. Al diseo anterior aadir un segundo pulsador para reiniciar la alarma de tiempo.

25

Você também pode gostar