Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Flanco Desbordamiento
TIMER 0
3
Timer/Counter
Reg. Contador
Flanco
Nivel de pre-escalado
Timer/counter
Pre-escalado
Flag de desbordamiento.
Habilitacin particular.
Desbordamiento. Interrupcin.
10
Incrementar Puerto B
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
Desbordamientos=0
Desbordamientos=15
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
Rutina de interrupcin
15
Nivel de peescalado.
TIMER 1
16
Seleccin de reloj
Nivel de preescalado
17
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
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