Practica5 TMR1 PDF
Practica5 TMR1 PDF
1 resistencia de 330Ω
Similar al temporizador TMR0, estos registros se pue-
den leer o se puede escribir en ellos en cualquier momento. Cable
En caso de que ocurra un desbordamiento, se genera una
interrupción si está habilitada. El módulo del temporiza- 1 LED
dor TMR1 puede funcionar en uno o dos modos básicos,
eso es como un temporizador o como un contador.[1]
El temporizador del TMR1 cuenta con algunas carac- III. MÉTODOS
teristicas muy especiales.
Temporizador/contador de 16 bits compuesto por Se configuro el TMR1 de manera que funcionara como
un par de registros un temporizador, mandando el valor de 0x30 al configu-
rador del TMR1, es decir, al T1CON, posteriormente se
Fuente de reloj interna o externa programable puso en 1 el bit 0 de T1CON para habilitarlo. La confgi-
ración se realizo de acuerdo al manual, como se muestra
Pre-escalador de 3 bits en la Figura 1. El TMR1 se configuró de tal manera que
se desbordara cada décima de segundo, donde mandarı́a
Oscilador LP opcional
una interrupción.
Funcionamiento sı́ncrono o ası́ncrono En la parte de Interrupción se llevarı́a un contador de
cuantas interrupciones ha generado el timer, al llegar a
Compuerta para controlar el temporizador Timer1 10, es decir, al completar un segundo, el servicio de inte-
(conteo habilitado) por medio del comparador o por rrupción harı́a una operación lógica: si el LED esta pren-
el pin T1G dido, lo apaga, y si esta apagado, lo prende, también se
limpia el contador de interrupciones. Si no se ha llegado
Interrupción por desbordamiento
a 10 interrupciones, envı́a la instrucción directamente a
”Despierta.al microcontrolador (salida del modo de finalizar la interrupción.
reposo) por desbordamiento (reloj externo) Una vez realizada esta acción. se envı́a a finalizar la
interrupción, donde se baja la bandera de interrupción,
Fuente de reloj para la función de Captura/Com-
paración.
IV. CÓDIGO FUENTE
II. MATERIALES
; PIC16F77 Configuration Bit Settings
movwf TMR1H
movlw 11011011B
movwf TMR1L
goto fininterup
now10:
movlw 0x01
xorwf PORTD,1 ;Encendemos LED
clrf 0x20 ;limpiamos 0x20
clrf TMR1L
movlw 0001011B
;iniciamos el TMR1 con 3035
;para contar 500,000 interrupciones
movwf TMR1H
movlw 11011011B
movwf TMR1L
goto fininterup
Figura 1. Texto de descripción de la figura.
fininterup:
bcf PIR1,0
;Protection bit (Code protection off) ;Ya que se atendió la interrupcion
CONFIG BOREN = ON ;bajamos la
; Brown-out Reset Enable bit (BOR enabled) ;bandera
retfie
// config statements should precede
;project file includes. inicio:
#include <xc.inc>
BANKSEL PIE1
//PSECT absdata, abs, ovrld movlw 0x00
PSECT reset_vec, class=code, delta= 2 movwf TRISD
movlw 0x01
resetVec: movwf PIE1
goto inicio movlw 0xC0
movwf INTCON
PSECT isrVec,class=CODE,delta=2
isr:
BANKSEL PORTB
btfss PIR1,0
movlw 0x30
;verifico que se haya dado la interrupcion,
movwf T1CON
verdadera interrupcion
clrf TMR1L
goto fininterup
movlw 0xFF
incf 0x20,1
movwf TMR1H
;incremento la cuenta de veces
movlw 0xFE
;que ha entrado a la interrupción movwf TMR1L
btfss 0x20,3 bsf T1CON,0
;checamos si en el bit 3 hay un numero, clrf 0x20
;con la finalidd de checar 10 interrupciones bcf PORTD,2
goto notyet10
btfss 0x20,1 ciclo:
;corroboramos que hayan pasado 10 nop
;interrupciones goto ciclo
goto notyet10
goto now10
; ya se realizaron 10 interrupciones
end resetVec
notyet10:
clrf TMR1L
movlw 0001011B
; iniciamos el TMR1 con 3035
;para contar 500,000 interrupciones
3
V. ESQUEMA
VI. CONCLUSIONES