SlideShare una empresa de Scribd logo
MODULO TIMER0
El módulo TIMER0 es un
temporizador/contador con las
siguientes características:
q El temporizador / contador
dispone de 8 bits
q Puede escribirse y leerse
q Preescaler programable por
software de 8 bits
q Puede trabajar con el reloj
interno o con una señal de reloj
externa
q Dispone de una interrupción por
desbordamiento al pasar de FFh
a 00h
q Selección de flanco ascendente o
descendente para el flaco del
reloj externo
En la Figura 1 se muestra un
diagrama de bloques del TIMER0
y el preescaler que comparte con el
WDT. Puede encontrarse
información adicional sobre
el módulo Timer0 en el manual
de referencia de los
microcontroladores de la escala
media (DS33023).
El modo temporizador se
selecciona poniendo a cero el bit
T0CS (registro OPTION_REG
<5>). En el modo temporizador, el
módulo Timer0 se incremento en
cada ciclo de instrucción (sin el
preescaler). Si el registro TMR0 se
escribe, el incremento se inhibe
durante los siguientes dos ciclos de
instrucción. EL usuario puede
trabajar teniendo en cuenta esto y
ajustando el valor a cargar en el
TMR0.
El modo contador se selecciona
poniendo a uno el bit T0CS
(registro OPTION_REG <5>). El
modo contador, Timer0 se
incremento en cada flaco de subida
o de bajada de la señal que le llega
por RA4/TOCK1. El flanco de
incremento se determina por el bit
T0SE (registro OPTION_REG
<4>). Poniéndose a cero T0SE se
selecciona el flanco ascendente.
El preescaler se comparte
exclusivamente entre el TIMER0 y
el WDT. Y además no es de
lectura/escritura.
INTERRUPCIÓN DEL TIMER0
La interrupción de TMR0 se
produce cuando el registro TMR0
se desborda al pasar de FFh a 00h.
Este desbordamiento pone a
uno el bit T0IF (INTCON<2>).
La ininterrupción puede
enmascararse poniendo a cero el
bit T0IE (INTCON <5>). EL bit
T0IF debe ponerse a cero por
software al finalizar la rutina de
atención a la interrupción del
desbordamiento de TMR0. La
interrupción de TMR0 no saca al
microcontrolador del estado de
SLEEP, debido a que el
temporizador está desactivado
durante el modo SLEEP
CURSO DE
MICROCONTROLADORES
PIC16F87X (...y V)
CURSO DE
MICROCONTROLADORES
PIC16F87X (...y V)
Fernando Remiro Domínguez
Profesor de Sistemas Electrónicos
IES. Juan de la Cierva
www.terra.es/personal/fremiro
Foosc/4
Bus de datos
El bit T0IF se
pone a 1 si hay
overflow
T0SE
RA4/T0CKI
pin
Sincronización
con el reloj
interno
TMR0
8
0
1
1
0
T0CS
Preescaler
Programable
PS2,PS1,PS0 PSA
3
PSout
PSout
(Retardo de 2 ciclos)
MICROCONTROLADORES
52RESISTOR
Figura 1.- Diagrama de bloques del TIMER 0
Notas:
1. El preescaler es compartido con el WDT (En la Figura 2 se puede ver un diagrama de bloques detallado
2. TOCS, TOSE, PSA, PS2:PS0 (OPTION_REG<5:0>)
Curso microcontroladoresPAGS 29/4/03 10:38 Página 52
UTILIZACIÓN DEL TIMER0
CON UN RELOJ EXTERNO
Cuando no se utiliza el
preescaler, la entrada de reloj
externa es igual a la salida del
preescaler. La sincronización de
TOCKI con los relojes de fase
interior se acopla, a la salida del
preescaler en los ciclos Q2 y Q4 de
los relojes de fase internos. Por
consiguiente, es necesario que
TOCKI está a nivel alto por al
menos durante 2Tosc (y un
pequeño retardo de 20ns) y a nivel
bajo por lo menos 2Tosc (y un
retardo RC de 20ns).
PREESCALER
Hay sólo un preescaler
disponible que está compartido y
puede asignarse indistintamente al
moduló de TIMER0 y el al WDT.
La asignación del preescaler al
Timer0 hace que no haya ningún
preescaler para el WDT, y viceversa.
Este preescaler no se puede leer ni
escribir (ver la Figura 2).
El bit PSA y PS2:PS0
(OPTION_REG <3:0>)
determinan la asignación del
preescaler y el rango del preescaler.
Cuando se le asigna al módulo del
Tirner0 , todas las instrucciones, que
escriben en el registro TMR0 (por
ejemplo CLRF TMR0, MOVWF
TMR0, BSF TMR0,x... etc.) ponen
a cero el preescaler. Cuando se le
asigna al WDT, una instrucción
CLRWDT limpia el preescaler
junto con el temporizador del
WDT. EL preescaler no se puede
leer ni escribir.
Nota.- Escribir en TMR0,
cuando el preescaler es asignado a
TIMER0, limpia la cuenta del
preescaler, pero no cambia la
configuración del preescaler.
PROGRAMA EJEMPLO DE
FUNCIONAMIENTO DEL
TIMER0
Para comprobar el
funcionamiento de este programa
debemos de montar un circuito
como el que se muestra en la Figura
3, en el que se ha conectado un
display del tipo cátodo común al
PORTB de PIC16F876. Una vez
cargado el programa TMR0_2.asm,
en el display se irán representado
CLKOUT (=Foosc/4)
Bus de datos
El bit T0IF se
pone a 1 si hay
overflow
T0SE
RA4/T0CKI
pin
PS2:PS0
PSA
WDT
time-out
WDT bit de habilitación
M
U
X
T0CS
0
1
Retardo
de 2
ciclos
Registro TMRO
M
U
X
PSA
1
0
M
U
X
PSA
0
1
Multiplexor 1-8
Preescaler de 8 bits
MUX
Perro
Guardián
8
0 1
8
3
Figura 2.- Diagrama de bloques del TMR0
Leyenda: x = desconocido, u = inalterado; - = no implementado se lee como ‘0’. Las celdas sombreadas no son usadas
por el TIMER0
Dirección Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en el
POR,BOR resto de Reset
01h 101h TMR0 Módulo del registro del TMR0 xxxx xxxx uuuu uuuu
0bh, 8Bh
10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE TOIF INTF RBIF 0000 000x 0000 000x
81h,181h OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
85h TRISA --- --- Registro de direccionamiento de datos del PORTA --11 1111 --11 1111
TABLA DE REGISTROS ASOCIADOS AL TIMER0
MICROCONTROLADORES
53RESISTOR
Curso microcontroladoresPAGS 29/4/03 10:38 Página 53
MICROCONTROLADORES
los números del 0 al 9 con una
cadencia de aproximadamente un
segundo.
El organigrama del programa es
el que se muestra en la Figura 4 y
en el programa que está pensado
para cargarlo con el bootloader, se
han separado con un ";" y se han
marcado en azul, las líneas que
habría que cargar si se utiliza un
programador como el ic-prog. En
este programa al TIMER0 se le
hace trabajar como temporizador,
que genera una interrupción
cuando se desborda TMR0.
EL MÓDULO DE TIMER1
El módulo de TIMER1 es un
temporizador/contador de 16 bits,
formado por dos registros de 8 bits
cada uno TMR1H y TMR1L, que
son de lectura y escritura y que son
los que guardan el valor de la
cuenta en cada momento. El valor
de los registros TMR1H y TMR1L
se incrementan desde 0000H hasta
FFFFH, en cuyo instante se vuelve
a poner a 0000h y se activa el
flag TMR1IF (PIR1<0>). La
ininterrupción de TMR1 puede ser
habilitada/deshabilitada según este
a uno/cero el bit TMR1IE (PIE1
<0>).
EL TIMERl tiene los siguientes
modos de trabajo:
1. Como Temporizador
2. Como contador Síncrono
3. Como contador Asíncrono
Figura 3.- Circuito de aplicación para el programa TMR0_2 utilizando el PIC16F876
54RESISTOR
Vcc= 5V
MCLR
RA0
RA1
RA2
RA3
RA4
RA5
Vss
OSC1
OSC2/CKOUT
RC0
RC1
RC2
RC3
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
VSS
RC7
RC6
RC5
RC4
Reset
R1
10K
R2 100
R7 300
R8 300
R9 300
R10 300
R11 300
R12 300
a
b
c
d
e
a
b
c
d
e
f
g
f
g
R13 300
Vcc=5V
C1 27 pF
C2 27 pF
XT 4Mhz
TMR0_2.asm
INICIALIZA
R
PORTB-->SALIDA
PREESCALER--> 256 TMRO
16-->CONTA
0-->TMR0
0-->DIGITO
LEETABL
A
DIGITO=10?
NO
SI
INT_TMR0
0 -->TMR0
CONTA-1 --> CONTA
¿CONTA=0?
DIGITO+1-->DIGITO
16 -->CONTA
REPONER W
Y
STATUS
1 -->TOIF
RETFIE
SI
NO
Guardar W y
STATUS
Reg.TEMPORALES
Figura 4.- Cronograma del programa
TMR0_2
Curso microcontroladoresPAGS 29/4/03 10:38 Página 54
;*************************************************************************************
; Programa TMR0_2.ASM Fecha : 15 - Abril - 2003
; Este programa presenta en el display de cátodo común conectado en el PORTB
; los números del 0 al 9, mostrando un dato por segundo (aproximadamente), la
; temporización la realiza utilizando la interrupción por TMR0 y el registro auxiliar CONTA
; Revisión : 0.0 Programa para PIC16F87X
; Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS
; Perro Guardián : deshabilitado Tipo de Reloj : XT
; Protecci¢n del código : OFF
;********************************************************************************************
List p=16F876 ;Tipo de procesador
include "P16F876.INC" ;Definiciones de registros internos
;************************** DEFINICION DE VARIABLES ************************************
W_TEMPORALequ 0x20 ;Almacena W antes de atender la interrupción
S_TEMPORAL equ 0X21 ;Almacena Status antes de atender la interrupción
DIGITO equ 0x22 ;numero a representar en display
CONTA equ 0x23 ;Contador auxiliar para alargar el tiempo a 1 segundo
;entre cada cambio de digito, ya que los 256 (FF) del Timer,
;aunque se divida por 256, es 4x256x256=262,144 ms
;*******************************************************************************************
; ORG 0x00
; goto INICIO
ORG 0x04
;*************************** ATENCION A LA INTERRUPCION *******************************
INT_TMR0
movwf W_TEMPORAL ;Guarda el valor actual de W cuando se interrumpe
swapf STATUS,W ;Intercambia nibbles y guarda en W
movwf S_TEMPORAL ;Almacena Status pero cambiado el ..
;.. nibble alto por el bajo
clrf TMR0 ;Inicializa TMR0=00
decfsz CONTA,f ;Decrementa CONTA y si =0 incrementa DIGITO
goto FIN_INT ;Si cont_aux <> 0 finaliza interrupción
incf DIGITO,F ;Incrementa el DIGITO
movlw D'16' ;Al cargar TMR0 con 0 hace 256 cuentas con un predivisor de 256
;(programado en OPTION_REG). Como queremos 1sg. ponemos 16 en CONTA
; así obtenemos 4*256*256*16 = 1,048576s
movwf CONTA ;inicializa de nuevo CONTA para un nuevo digito
FIN_INT
swapf S_TEMPORAL,W ;Deja Status como estaba antes y en W
movwf STATUS
swapf W_TEMPORAL,F ;Intercambia nibbles del W guardado
swapf W_TEMPORAL,W ;Vuelve a intercambiar pero ya en W
bcf INTCON,T0IF ;Borra el flag de la interrupción
retfie ;Retorno de interrupción
;********************* PROGRAMA PRINCIPAL *************************************
INICIO
bcf STATUS,RP0
bsf STATUS,RP0 ;Habilita Banco1 de registros
clrf TRISB ;direcciona PortB como salidas
movlw B'00000111' ;Reloj interno asignado aTMR0 con divisor por 256
movwf OPTION_REG
bsf INTCON,GIE ;habilitación general de las interrupciones
bsf INTCON,T0IE ;habilitación de la interrupción por TMR0
bcf STATUS,RP0 ;RP0=0 habilita Banco0 de registros
clrf TMR0 ;Inicializa TMR0 a 0
movlw D'16' ;Carga CONTA con 16
movwf CONTA
PONER_0
clrf DIGITO ;Carga DIGITO a 0 para iniciar cuenta
LEETABLA
call TABLA
movwf PORTB ;Muestra digito en el display 7 segmentos (PortB)
movlw D'9' ;
subwf DIGITO,W ;Compara DIGITO con 9
btfss STATUS,Z ;
goto LEETABLA ;Si DIGITO NO = 9, incrementa DIGITO
goto PONER_0 ;Si DIGITO=9,lo pone a 0 de nuevo.
;********************* TABLA CON LOS VALORES DE LOS DIGITOS ******************
TABLA
movf DIGITO,W ;Guarda digito en acumulador
addwf PCL,F ;Suma al contador de programa el digito
DT 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X67
;*******************************************************************************
ORG 0x1F00
bcf PCLATH,4
bcf PCLATH,3 ;Selecciona la página 0
goto INICIO ;Salto a la dirección de INICIO del programa
;*******************************************************************************
END
Curso microcontroladoresPAGS 29/4/03 10:38 Página 55
El modo de trabajo viene
determinado por la fuente de los
impulsos de reloj, es decir, la señal
de reloj puede ser externa o interna,
se selecciona con el bit TMR1CS
del registro T1CON<l>, cuando
este bit está a nivel bajo
se selecciona el reloj el interno del
micro-controlador (Fosc/4) y
cuando está a uno se selecciona el
modo contador y cuenta los
impulsos que le llegan a través del
pin RC0/TlCKl. Además como se
verá mas adelante el TIMER1
tiene la posibilidad de
reinicializarse, a partir del módulo
CCP.
MODO DE
FUNCIONAMIENTO DEL
TIMER1 COMO
TEMPORIZADOR
Este modo se selecciona
poniendo a cero el bit TMR1CS
(T1CON <1>. En este modo la
señal de reloj es el reloj interno del
microcontrolador FOSC/4. En este
modo de trabajo el bit T1SYNC
(T1CON <2>) no tiene ningún
efecto ya que el reloj interno está
siempre sincronizado.
MODO DE
FUNCIONAMIENTO DEL
TIME1 COMO CONTADOR
En este modo puede trabajar
como contador síncrono o
asíncrono . Cuando el TIMER1 se
está incrementando según le llegan
los impulsos externos, los
incrementos ocurren en los flancos
de subida. Después de que el
TIMER1 se ha configurado como
contador, debe producirse un flanco
de bajada antes de empezar a
contar.
MODO DE
FUNCIONAMIENTO DEL
TIMER1 COMO CONTADOR
SÍNCRONO
Para seleccionar este modo se
pone a uno el bit TMR1CS
(T1CON <1>). En este modo el
contador se incrementa en cada
flanco ascendente de la señal de
reloj que se introduce por el pin
RC0/T1OSO/TICK1 cuando el bit
T1OSCEN está a uno, y por el pin
RC1/TlOSI/CCP2, cuando el bit
T1OSCEN está a cero.
Si T1SYNC se pone a cero,
entonces la entrada de reloj externa
se sincroniza con los relojes de fase
interiores. La sincronización se hace
después de la fase del preescaler. En
el preescaler la fase de la señal de
reloj es por lo tanto asíncrona.
En este modo de trabajo,
durante el modo SLEEP el
TIMER1 no se incrementa aún
cuando la señal de reloj
externa esté presente. El
preescaler sin embargo continua
incrementándose.
MODO DE
FUNCIONAMIENTO DEL
TIMER1 COMO CONTADOR
ASÍNCRONO
Cuando el bit de control
T1SYNC (T1CON <2>) se poner a
uno, la señal de reloj externa no se
sincroniza. El contador sigue
realizando la cuenta de forma
asíncrona respecto a la fase de la
señal de reloj interna. El contador
MICROCONTROLADORES
56RESISTOR
REGISTRO T1CON: Registro de control del TIMER1 (dirección 10h)
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
--- --- T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
Bit 7 Bit 0
bit 7-6: No implementados: Se lee como "0"
bit 5-4: TlCKPS1:T1CKPS0: bit de selección del preescaler de la señal de reloj del TIMER1
11 = valor del preescaler 1:8
10 = valor del preescaler 1:4
01 = valor del preescaler 1:2
00 = valor del preescaler 1: 1
bit 3 : T1OSCEN: bit de habilitación del oscilador del TIMER1. Cuando se emplea un oscilador
externo, hay que poner este bit a 1. El TMR1 puede trabajar a una frecuencia totalmente independiente
de la del sistema.
1 = Habilita el oscilador
0 = Deshabilita el oscilador
Nota.- El oscilador y la resistencia de desconectan para reducir el consumo
bit 2: #TlSYNC: bit de control de sincronización de la señal de entrada.
Con TMR1CS = 1
1= No sincroniza la entrada de reloj externa
0 = Sincroniza la entrada de reloj externa
Con TMR1CS = 0
En esta condición se ignora. El TIMER1 utiliza el reloj interno cuando TMRICS=0
bit 1 TMR1CS: bit de selección de la fuente de reloj del TIMER1
1 = Reloj externo por el pin RC0/T1OSO/T1CK1 (flanco ascendente)
0 = Reloj interno (FOSC/4)
bit 0: TMR1ON: TIMER1. activo. Hace entrar o no en funcionamiento el TIMER1.
1 = Habilita el TIMER1
0 = Deshabilita el TIMER1
Curso microcontroladoresPAGS 29/4/03 10:38 Página 56
continúa la cuenta incluso en el
modo SLEEP y puede generar una
interrupción por desbordamiento
que despierta al procesador. Hay
que tener especial cuidado con el
software al leer o escribir el
contador.
Cuando se trabaja en el modo
contador asíncrono, el TIMER1 no
puede usare como base de tiempos
para el módulo CCP (Captura y
comparación-PWM)
LECTURA Y ESCRITURA EN EL
TIMER1 CUANDO SE
TRABAJA EN EL MODO
CONTADOR ASÍNCRONO
Se pueden leer los contadores
TMR1H y TMR1L mientras la
señal externa del contador se está
recibiendo (teniendo cuidado con el
hardware). Sin embargo, el usuario
debe tener en cuenta que el
contador es de 16 bits y se pueden
tener ciertos problemas al leer los
dos registros de ocho bits, ya que el
contador puede desbordarse entre
las lecturas.
Para escribir en él, se
recomienda que el usuario
MICROCONTROLADORES
57RESISTOR
T1CK1
(Por defecto a
nivel alto)
T1CKI
(Por defecto a
nivel bajo)
Nota.- Las flechas indicas los incrementos del contador
TMR1H TMR1L
1
0
Preescaler
1,2,4,8
sincronización
detección
0
1
El bit TMR1F se pone a 1
cuando se desborda
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
TMR1ON
on/off
FOSC/4
Clok
Interno
TMR1CS
T1CKPS1:T1CKPS0
2
Entrada SLEEP
T1SYNC
Entrada Clock
Sincronizada
T1OSCEN
Habilita
Oscilador
TMR1
Figura 5.- Diagrama de bloques de TIMER1
Tabla 1.- Selección de los condensadores para el oscilador del TIMER1
Tipo de Oscilador Frecuencia C1 C2
LP 32 kHz 33pF 33pF
100kHz 15 pF 15 pF
200 15 pF 15 pF
Estos valores son para los siguientes cristales de referencia
32.768 EpsonC-001R21.768K-A ±20 PPM
100 kHz Epson C-2 100.000 KC-p1 ±20 PPM
200 kHz STD XTL 200.000 kHz ±20 PPM
Nota.-
1. Capacidades mayores aumentan la estabilidad del oscilador, pero también aumentan el start-up.
2. Cada cirstal/resonador tiene sus propias características, el usuario debe consultar los valores apropiados
de los componentes externos al cristal.
Curso microcontroladoresPAGS 29/4/03 10:38 Página 57
simplemente pare el contador y
escriba los valores deseados.
Cuando se escribe el registro del
contador puede haber conflicto
mientras este se está
incrementando. Esto puede
producir un valor imprevisible en el
contador.
OSCILADOR DEL TIMER1
Se puede conectar un oscilador
a cristal entre los pines T1OSI
(entrada) y T1OSO (salida
del amplificador). Se debe
habilitar poniendo a uno el bit de
control TLOSCEN (TICON <3>).
El oscilador de bajo consumo
puede trabajar hasta 200 kHz. En
estas condiciones el oscilador sigue
funcionando aunque se fuerce el
modo SLEEP. Está pensado para
trabajar con un cristal de hasta 32
kHz. La Tabla 1 muestra el valor
de los condensadores para el
TIMER1.
El oscilador TIMER1 es
idéntico al oscilador LP. El
usuario debe proporcionar un
tiempo de retardo por software
para asegurar la salida apropiada
del oscilador.
RESTABLECIMIENTO DEL
TIMER1 UTILIZADO LA
SALIDA TRIGGER DEL CCP
Si el módulo CCP1 o CCP2
se configuran en modo
comparación para generar un
"disparo por evento especial"
(CCP1M3:CCP1M0 = 1011
(CP1CON<3:0>)), esta señal
reestablecerá el TIMIER1.
Nota.- El evento especial que
activa los módulos CCP1 y CCP2 no
activará el flag
TMR1IF (PIR1<0>).
El TIMER1 debe configurarse
como temporizador o contador
síncrono.
Restablecimiento TIMER1 que
usa un disparador de CCP.
TIMER1 debe configurarse
para temporizador o contador
síncrono para aprovechar esta
característica. Si el TIMER1 está
trabajando en modo contador
asíncrono, el reset no puede ser
activado.
En el caso de escribir sobre el
TIMER1 en el momento del
disparo del evento especial de
CCP1 o CCP2, se tomará el valor
anterior.
En el caso de escribir sobre
TIMER1 si coincide con un disparo
por evento especial de CCP1 o
CCP2, se carga el valor anterior.
En este modo de
funcionamiento, el par de registros
CCPRxH:CCPRxL se reponen
para volver a tener el periodo del
TIMER1.
RESTABLECIMIENTO DEL PAR
DE REGISTRO DEL TIMER1
(TMR1H, TMR1L)
Los registros TMR1H y
TMR1L no se inicializan a 00h
después de un Power-on Reset o
por cualquier otro reset excepto por
un disparo de evento especial en
CCP1 y CCP2. El registro T1CON
se inicializa a 00h después de un
Power-on Reset o Brown-out Reset
que deja a 1:1 el preescaler. En los
demás reset, el registro no es
alterado.
TIMER1 PREESCALER
El contador del preescaler se
pone a cero al escribir en los
registros TMR1H o TMR1L.
RESUMEN DE REGISTROS
ASOCIADOS AL TIMER1
En la siguiente tabla se muestran
los registros principales que
controlan el comportamiento del
TIMER1 y la distribución de los
bit.
PROGRAMA EJEMPLO DE
FUNCIONAMIENTO DEL
TIMER1
Para comprobar el
funcionamiento de este programa
utilizaremos el circuito de la
Figura 3 que es el mismo
que hemos utilizado para
comprobare el funcionamiento del
TIMER0, en el que se ha
conectado un display del tipo
cátodo común al PORTB de
PIC16F876. Una vez cargado el
programa TMR1_0.asm, en el
display se irán representado los
números del 0 al 9 con una
cadencia de aproximadamente un
segundo.
Dirección Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en el
POR,BOR resto de Reset
0Bh,8Bh
10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE TOIF INTE RBIF 0000 000x 0000 000u
0Ch PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000
0Bh PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000
0Eh TMR1L Registro de carga del byte de menor peso del registro de 16 bits de TMR1 xxxx xxxx uuuu uuuu
0Fh TMR1H xxxx xxxx uuuu uuuu
10h T1CON --- --- T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --xx xxxx --uu uuuu
Leyenda
x = desconocido, u = inalterado; - = no implementado se lee como ‘0’. Las celdas sombreadas no son usa-
das por el TIMER1
Nota 1: Los bits PSPIE y PSPIF están reservados para el PIC16F873/876, mantener estos bits a cero.
Curso microcontroladoresPAGS 29/4/03 10:38 Página 58
;*************************************************************************************
; Programa TMR1_0.ASM Fecha : 15 - Abril - 2003
; Este programa presenta en el display de cátodo común conectado en el PORTB
; los números del 0 al 9, mostrando un dato por segundo (aproximadamente), la
; temporización la realiza utilizando la interrupción por TMR1 y el registro auxilar CONTA
; Revisión : 0.0 Programa para PIC16F87X
; Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS
; Perro Guardián : deshabilitado Tipo de Reloj : XT
; Protecci¢n del código : OFF
;********************************************************************************************
List p=16F876 ;Tipo de procesador
include "P16F876.INC" ;Definiciones de registros internos
;********************* DEFINICION DE VARIABLES *****************************
W_TEMPORALequ 0x20 ;Almacena W antes de atender la interrupción
S_TEMPORAL equ 0X21 ;Almacena Status antes de atender la interrupción
DIGITO equ 0x22 ;numero a representar en display
CONTA equ 0x23 ;Contador auxiliar para alargar el tiempo a 1 segundo
;entre cada cambio de digito, ya que los 256 (FF) del Timer,
;aunque se divida por 256, es 4x256x256=262,144 ms
;*******************************************************************************
; ORG 0x00
; goto INICIO
ORG 0x04
;******************* ATENCION A LA INTERRUPCION **************************
INT_TMR1
movwf W_TEMPORAL ;Guarda el valor actual de W cuando se interrumpe
swapf STATUS,W ;Intercambia nibbles y guarda en W
movwf S_TEMPORAL ;Almacena Status pero cambiado el ..
;.. nibble alto por el bajo
movlw low ~.62500 ;Carga parte baja del contador con el complemento
movwf TMR1L ; de 62500 en hex.
movlw high ~.62500 ;Carga parte baja del contador con el complemento
movwf TMR1H ;de 62500 en hex.
bcf PIR1,0 ;Desconecta el flag del TMR1
incf PORTB,F ;Incrementa el contador de la Puerta B
decfsz CONTA,f ;Decrementa CONTA y si =0 incrementa DIGITO
goto FIN_INT ;Si cont_aux <> 0 finaliza interrupcion
incf DIGITO,F ;Incrementa el DIGITO
movlw D'2'
movwf CONTA ;inicializa de nuevo cont_aux para un nuevo digito
FIN_INT
swapf S_TEMPORAL,W ;Deja Status como estaba antes y en W
movwf STATUS
swapf W_TEMPORAL,F ;Intercambia nibbles del W guardado
swapf W_TEMPORAL,W ;Vuelve a intercambiar pero ya en W
bcf INTCON,T0IF ;Borra el flag de la interrupción
retfie
;********************* PROGRAMA PRINCIPAL *************************************
INICIO
bcf STATUS,RP0
bsf STATUS,RP0 ;Habilita Banco1 de registros
clrf TRISB ;direcciona PortB como salidas
movlw b'11111111'
movwf OPTION_REG ;Preescaler d 128 asociado al WDT
bsf PIE1,0 ;habilita interrupción del TMR1
bcf STATUS,RP0 ;Selecciona banco 0
;El TMR1 trabaja con oscilador interno y un preescaler de 1:8. Si se trabaja a una frecuencia
;de 4 MHz, el TMR1 deberá ser cargado con 62500 para que provoque interrupción al de 0.5s b
movlw b'00110001'
movwf T1CON
movlw b'11000000'
movwf INTCON ;Habilitación global de interrupciones
movlw D'2' ;Carga CONTA con 2
movwf CONTA
PONER_0
clrf DIGITO ;Carga DIGITO a 0 para iniciar cuenta
LEETABLA
call TABLA
movwf PORTB ;Muestra digito en el display 7 segmentos (PortB)
movlw D'9' ;
subwf DIGITO,W ;Compara DIGITO con 9
btfss STATUS,Z ;
goto LEETABLA ;Si DIGITO NO = 9, incrementa DIGITO
goto PONER_0 ;Si DIGITO=9, lo pone a 0 de nuevo.
;********************* TABLA CON LOS VALORES DE LOS DIGITOS ******************
TABLA
movf DIGITO,W ;Guarda digito en acumulador
addwf PCL,F ;Suma al contador de programa el digito
DT 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X67
;*******************************************************************************
ORG 0x1F00
bcf PCLATH,4
bcf PCLATH,3 ;Selecciona la página 0
goto INICIO ;Salto a la dirección de INICIO del programa
;*******************************************************************************
END
Curso microcontroladoresPAGS 29/4/03 10:38 Página 59

Más contenido relacionado

La actualidad más candente

Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
Hamiltonn Casallas
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
Percy Julio Chambi Pacco
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
Derlis Hernandez Lara
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Luis Zurita
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
Luis Zurita
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
Juan Navarrete Guzman
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2Luis Zurita
 
Ccp2009170309
Ccp2009170309Ccp2009170309
Ccp2009170309
Luis Zurita
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5Luis Zurita
 
Curso Micro Tema 5
Curso Micro Tema 5Curso Micro Tema 5
Curso Micro Tema 5
Luis Zurita
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2
Luis Zurita
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3Luis Zurita
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
Luis Zurita
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
guestf09168b
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4Luis Zurita
 
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
SANTIAGO PABLO ALBERTO
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84axeleta
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
Derlis Hernandez Lara
 
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
Fernando Aparicio Urbano Molano
 

La actualidad más candente (20)

Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2
 
Ccp2009170309
Ccp2009170309Ccp2009170309
Ccp2009170309
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
 
Curso Micro Tema 5
Curso Micro Tema 5Curso Micro Tema 5
Curso Micro Tema 5
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
 
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84a
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
 
Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
 

Destacado

Disipadores de calor
Disipadores de calorDisipadores de calor
Disipadores de calor
Hamiltonn Casallas
 
Laboratorio vitual Live wire
Laboratorio vitual Live wireLaboratorio vitual Live wire
Laboratorio vitual Live wire
Hamiltonn Casallas
 
Radios de AM
Radios de AMRadios de AM
Radios de AM
Hamiltonn Casallas
 
Reparación de amplificadores de audio
Reparación de amplificadores de audioReparación de amplificadores de audio
Reparación de amplificadores de audio
Hamiltonn Casallas
 
La reactancia en la electricidad.
La reactancia en la electricidad.La reactancia en la electricidad.
La reactancia en la electricidad.
Hamiltonn Casallas
 
Armando un generador de RF
Armando un generador de RFArmando un generador de RF
Armando un generador de RF
Hamiltonn Casallas
 
Circuito de entrada y antena.
Circuito de entrada y antena.Circuito de entrada y antena.
Circuito de entrada y antena.
Hamiltonn Casallas
 
Circuitos impresos
Circuitos impresosCircuitos impresos
Circuitos impresos
Hamiltonn Casallas
 
Fundamentos del inductor.
Fundamentos del inductor.Fundamentos del inductor.
Fundamentos del inductor.
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 10
Curso de microcontroladores capitulo 10Curso de microcontroladores capitulo 10
Curso de microcontroladores capitulo 10
Hamiltonn Casallas
 
Construcción de bobinas ajustables.
Construcción de bobinas ajustables.Construcción de bobinas ajustables.
Construcción de bobinas ajustables.
Hamiltonn Casallas
 
Amplificador Push - Pull
Amplificador Push - PullAmplificador Push - Pull
Amplificador Push - Pull
Hamiltonn Casallas
 
To Study Well Design Aspects in HPHT Environment
To  Study Well Design Aspects in HPHT EnvironmentTo  Study Well Design Aspects in HPHT Environment
To Study Well Design Aspects in HPHT EnvironmentNikhil Barshettiwar
 
Programación de un PIC con Niple
Programación de un PIC con NipleProgramación de un PIC con Niple
Programación de un PIC con Niple
Hamiltonn Casallas
 

Destacado (14)

Disipadores de calor
Disipadores de calorDisipadores de calor
Disipadores de calor
 
Laboratorio vitual Live wire
Laboratorio vitual Live wireLaboratorio vitual Live wire
Laboratorio vitual Live wire
 
Radios de AM
Radios de AMRadios de AM
Radios de AM
 
Reparación de amplificadores de audio
Reparación de amplificadores de audioReparación de amplificadores de audio
Reparación de amplificadores de audio
 
La reactancia en la electricidad.
La reactancia en la electricidad.La reactancia en la electricidad.
La reactancia en la electricidad.
 
Armando un generador de RF
Armando un generador de RFArmando un generador de RF
Armando un generador de RF
 
Circuito de entrada y antena.
Circuito de entrada y antena.Circuito de entrada y antena.
Circuito de entrada y antena.
 
Circuitos impresos
Circuitos impresosCircuitos impresos
Circuitos impresos
 
Fundamentos del inductor.
Fundamentos del inductor.Fundamentos del inductor.
Fundamentos del inductor.
 
Curso de microcontroladores capitulo 10
Curso de microcontroladores capitulo 10Curso de microcontroladores capitulo 10
Curso de microcontroladores capitulo 10
 
Construcción de bobinas ajustables.
Construcción de bobinas ajustables.Construcción de bobinas ajustables.
Construcción de bobinas ajustables.
 
Amplificador Push - Pull
Amplificador Push - PullAmplificador Push - Pull
Amplificador Push - Pull
 
To Study Well Design Aspects in HPHT Environment
To  Study Well Design Aspects in HPHT EnvironmentTo  Study Well Design Aspects in HPHT Environment
To Study Well Design Aspects in HPHT Environment
 
Programación de un PIC con Niple
Programación de un PIC con NipleProgramación de un PIC con Niple
Programación de un PIC con Niple
 

Similar a Curso de microcontroladores capitulo 05

Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
David Narváez
 
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorLab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorDaniel Pardo
 
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
Fernando Aparicio Urbano Molano
 
Clase Timer 1
Clase Timer 1Clase Timer 1
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricialGabriel Bravo Rojas
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
Diego Rojas Ruiz
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del banco
Anibal Ulibarri
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
marco calderon layme
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
Fernando Aparicio Urbano Molano
 
Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 electro_pic
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)
alascaperu
 
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHOPRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
Instituto Tecnológico de Tuxtla Gutiérrez
 
Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4
Luis Zurita
 

Similar a Curso de microcontroladores capitulo 05 (20)

UNIDAD IV
UNIDAD IVUNIDAD IV
UNIDAD IV
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
 
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorLab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
 
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
 
Clase Timer 1
Clase Timer 1Clase Timer 1
Clase Timer 1
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del banco
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
 
Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0
 
Temporizador timer0
Temporizador timer0Temporizador timer0
Temporizador timer0
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)
 
In terrupciones pic
In terrupciones picIn terrupciones pic
In terrupciones pic
 
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHOPRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
 
Timers
TimersTimers
Timers
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4
 

Más de Hamiltonn Casallas

Sistema Ubuntu
Sistema UbuntuSistema Ubuntu
Sistema Ubuntu
Hamiltonn Casallas
 
Compilador CCS y simulador proteus para microcontroladores PIC
Compilador CCS y simulador proteus para microcontroladores PICCompilador CCS y simulador proteus para microcontroladores PIC
Compilador CCS y simulador proteus para microcontroladores PIC
Hamiltonn Casallas
 
Electricidad básica y aplicaciones
Electricidad básica y aplicacionesElectricidad básica y aplicaciones
Electricidad básica y aplicaciones
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 11
Curso de microcontroladores capitulo 11Curso de microcontroladores capitulo 11
Curso de microcontroladores capitulo 11
Hamiltonn Casallas
 
Reparacion de radios AM/FM
Reparacion de radios AM/FMReparacion de radios AM/FM
Reparacion de radios AM/FM
Hamiltonn Casallas
 
Armado de un amplificador para automovil.
Armado de un amplificador para automovil.Armado de un amplificador para automovil.
Armado de un amplificador para automovil.
Hamiltonn Casallas
 
Amplificadores en puente.
Amplificadores en puente.Amplificadores en puente.
Amplificadores en puente.
Hamiltonn Casallas
 
Amplificador de potencia de audio
Amplificador de potencia de audioAmplificador de potencia de audio
Amplificador de potencia de audio
Hamiltonn Casallas
 
Diseño de un amplificador de RF.
Diseño de un amplificador de RF.Diseño de un amplificador de RF.
Diseño de un amplificador de RF.
Hamiltonn Casallas
 
El transformador eléctrico.
El transformador eléctrico.El transformador eléctrico.
El transformador eléctrico.
Hamiltonn Casallas
 
Fundamentos del diodo.
Fundamentos del diodo.Fundamentos del diodo.
Fundamentos del diodo.
Hamiltonn Casallas
 

Más de Hamiltonn Casallas (11)

Sistema Ubuntu
Sistema UbuntuSistema Ubuntu
Sistema Ubuntu
 
Compilador CCS y simulador proteus para microcontroladores PIC
Compilador CCS y simulador proteus para microcontroladores PICCompilador CCS y simulador proteus para microcontroladores PIC
Compilador CCS y simulador proteus para microcontroladores PIC
 
Electricidad básica y aplicaciones
Electricidad básica y aplicacionesElectricidad básica y aplicaciones
Electricidad básica y aplicaciones
 
Curso de microcontroladores capitulo 11
Curso de microcontroladores capitulo 11Curso de microcontroladores capitulo 11
Curso de microcontroladores capitulo 11
 
Reparacion de radios AM/FM
Reparacion de radios AM/FMReparacion de radios AM/FM
Reparacion de radios AM/FM
 
Armado de un amplificador para automovil.
Armado de un amplificador para automovil.Armado de un amplificador para automovil.
Armado de un amplificador para automovil.
 
Amplificadores en puente.
Amplificadores en puente.Amplificadores en puente.
Amplificadores en puente.
 
Amplificador de potencia de audio
Amplificador de potencia de audioAmplificador de potencia de audio
Amplificador de potencia de audio
 
Diseño de un amplificador de RF.
Diseño de un amplificador de RF.Diseño de un amplificador de RF.
Diseño de un amplificador de RF.
 
El transformador eléctrico.
El transformador eléctrico.El transformador eléctrico.
El transformador eléctrico.
 
Fundamentos del diodo.
Fundamentos del diodo.Fundamentos del diodo.
Fundamentos del diodo.
 

Último

Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
YasneidyGonzalez
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
LorenaCovarrubias12
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
arleyo2006
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
MasielPMP
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
GallardoJahse
 
Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
danitarb
 
Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitales
nievesjiesc03
 
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdfHABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
DIANADIAZSILVA1
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
SandraBenitez52
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
20minutos
 
True Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfTrue Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdf
Mercedes Gonzalez
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
auxsoporte
 
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docxSESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
QuispeJimenezDyuy
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
20minutos
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
JAVIER SOLIS NOYOLA
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
https://gramadal.wordpress.com/
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
cintiat3400
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
JAVIER SOLIS NOYOLA
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
jmorales40
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
Edurne Navarro Bueno
 

Último (20)

Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
 
Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
 
Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitales
 
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdfHABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
 
True Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfTrue Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdf
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
 
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docxSESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
 

Curso de microcontroladores capitulo 05

  • 1. MODULO TIMER0 El módulo TIMER0 es un temporizador/contador con las siguientes características: q El temporizador / contador dispone de 8 bits q Puede escribirse y leerse q Preescaler programable por software de 8 bits q Puede trabajar con el reloj interno o con una señal de reloj externa q Dispone de una interrupción por desbordamiento al pasar de FFh a 00h q Selección de flanco ascendente o descendente para el flaco del reloj externo En la Figura 1 se muestra un diagrama de bloques del TIMER0 y el preescaler que comparte con el WDT. Puede encontrarse información adicional sobre el módulo Timer0 en el manual de referencia de los microcontroladores de la escala media (DS33023). El modo temporizador se selecciona poniendo a cero el bit T0CS (registro OPTION_REG <5>). En el modo temporizador, el módulo Timer0 se incremento en cada ciclo de instrucción (sin el preescaler). Si el registro TMR0 se escribe, el incremento se inhibe durante los siguientes dos ciclos de instrucción. EL usuario puede trabajar teniendo en cuenta esto y ajustando el valor a cargar en el TMR0. El modo contador se selecciona poniendo a uno el bit T0CS (registro OPTION_REG <5>). El modo contador, Timer0 se incremento en cada flaco de subida o de bajada de la señal que le llega por RA4/TOCK1. El flanco de incremento se determina por el bit T0SE (registro OPTION_REG <4>). Poniéndose a cero T0SE se selecciona el flanco ascendente. El preescaler se comparte exclusivamente entre el TIMER0 y el WDT. Y además no es de lectura/escritura. INTERRUPCIÓN DEL TIMER0 La interrupción de TMR0 se produce cuando el registro TMR0 se desborda al pasar de FFh a 00h. Este desbordamiento pone a uno el bit T0IF (INTCON<2>). La ininterrupción puede enmascararse poniendo a cero el bit T0IE (INTCON <5>). EL bit T0IF debe ponerse a cero por software al finalizar la rutina de atención a la interrupción del desbordamiento de TMR0. La interrupción de TMR0 no saca al microcontrolador del estado de SLEEP, debido a que el temporizador está desactivado durante el modo SLEEP CURSO DE MICROCONTROLADORES PIC16F87X (...y V) CURSO DE MICROCONTROLADORES PIC16F87X (...y V) Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro Foosc/4 Bus de datos El bit T0IF se pone a 1 si hay overflow T0SE RA4/T0CKI pin Sincronización con el reloj interno TMR0 8 0 1 1 0 T0CS Preescaler Programable PS2,PS1,PS0 PSA 3 PSout PSout (Retardo de 2 ciclos) MICROCONTROLADORES 52RESISTOR Figura 1.- Diagrama de bloques del TIMER 0 Notas: 1. El preescaler es compartido con el WDT (En la Figura 2 se puede ver un diagrama de bloques detallado 2. TOCS, TOSE, PSA, PS2:PS0 (OPTION_REG<5:0>) Curso microcontroladoresPAGS 29/4/03 10:38 Página 52
  • 2. UTILIZACIÓN DEL TIMER0 CON UN RELOJ EXTERNO Cuando no se utiliza el preescaler, la entrada de reloj externa es igual a la salida del preescaler. La sincronización de TOCKI con los relojes de fase interior se acopla, a la salida del preescaler en los ciclos Q2 y Q4 de los relojes de fase internos. Por consiguiente, es necesario que TOCKI está a nivel alto por al menos durante 2Tosc (y un pequeño retardo de 20ns) y a nivel bajo por lo menos 2Tosc (y un retardo RC de 20ns). PREESCALER Hay sólo un preescaler disponible que está compartido y puede asignarse indistintamente al moduló de TIMER0 y el al WDT. La asignación del preescaler al Timer0 hace que no haya ningún preescaler para el WDT, y viceversa. Este preescaler no se puede leer ni escribir (ver la Figura 2). El bit PSA y PS2:PS0 (OPTION_REG <3:0>) determinan la asignación del preescaler y el rango del preescaler. Cuando se le asigna al módulo del Tirner0 , todas las instrucciones, que escriben en el registro TMR0 (por ejemplo CLRF TMR0, MOVWF TMR0, BSF TMR0,x... etc.) ponen a cero el preescaler. Cuando se le asigna al WDT, una instrucción CLRWDT limpia el preescaler junto con el temporizador del WDT. EL preescaler no se puede leer ni escribir. Nota.- Escribir en TMR0, cuando el preescaler es asignado a TIMER0, limpia la cuenta del preescaler, pero no cambia la configuración del preescaler. PROGRAMA EJEMPLO DE FUNCIONAMIENTO DEL TIMER0 Para comprobar el funcionamiento de este programa debemos de montar un circuito como el que se muestra en la Figura 3, en el que se ha conectado un display del tipo cátodo común al PORTB de PIC16F876. Una vez cargado el programa TMR0_2.asm, en el display se irán representado CLKOUT (=Foosc/4) Bus de datos El bit T0IF se pone a 1 si hay overflow T0SE RA4/T0CKI pin PS2:PS0 PSA WDT time-out WDT bit de habilitación M U X T0CS 0 1 Retardo de 2 ciclos Registro TMRO M U X PSA 1 0 M U X PSA 0 1 Multiplexor 1-8 Preescaler de 8 bits MUX Perro Guardián 8 0 1 8 3 Figura 2.- Diagrama de bloques del TMR0 Leyenda: x = desconocido, u = inalterado; - = no implementado se lee como ‘0’. Las celdas sombreadas no son usadas por el TIMER0 Dirección Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en el POR,BOR resto de Reset 01h 101h TMR0 Módulo del registro del TMR0 xxxx xxxx uuuu uuuu 0bh, 8Bh 10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE TOIF INTF RBIF 0000 000x 0000 000x 81h,181h OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 85h TRISA --- --- Registro de direccionamiento de datos del PORTA --11 1111 --11 1111 TABLA DE REGISTROS ASOCIADOS AL TIMER0 MICROCONTROLADORES 53RESISTOR Curso microcontroladoresPAGS 29/4/03 10:38 Página 53
  • 3. MICROCONTROLADORES los números del 0 al 9 con una cadencia de aproximadamente un segundo. El organigrama del programa es el que se muestra en la Figura 4 y en el programa que está pensado para cargarlo con el bootloader, se han separado con un ";" y se han marcado en azul, las líneas que habría que cargar si se utiliza un programador como el ic-prog. En este programa al TIMER0 se le hace trabajar como temporizador, que genera una interrupción cuando se desborda TMR0. EL MÓDULO DE TIMER1 El módulo de TIMER1 es un temporizador/contador de 16 bits, formado por dos registros de 8 bits cada uno TMR1H y TMR1L, que son de lectura y escritura y que son los que guardan el valor de la cuenta en cada momento. El valor de los registros TMR1H y TMR1L se incrementan desde 0000H hasta FFFFH, en cuyo instante se vuelve a poner a 0000h y se activa el flag TMR1IF (PIR1<0>). La ininterrupción de TMR1 puede ser habilitada/deshabilitada según este a uno/cero el bit TMR1IE (PIE1 <0>). EL TIMERl tiene los siguientes modos de trabajo: 1. Como Temporizador 2. Como contador Síncrono 3. Como contador Asíncrono Figura 3.- Circuito de aplicación para el programa TMR0_2 utilizando el PIC16F876 54RESISTOR Vcc= 5V MCLR RA0 RA1 RA2 RA3 RA4 RA5 Vss OSC1 OSC2/CKOUT RC0 RC1 RC2 RC3 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 VDD VSS RC7 RC6 RC5 RC4 Reset R1 10K R2 100 R7 300 R8 300 R9 300 R10 300 R11 300 R12 300 a b c d e a b c d e f g f g R13 300 Vcc=5V C1 27 pF C2 27 pF XT 4Mhz TMR0_2.asm INICIALIZA R PORTB-->SALIDA PREESCALER--> 256 TMRO 16-->CONTA 0-->TMR0 0-->DIGITO LEETABL A DIGITO=10? NO SI INT_TMR0 0 -->TMR0 CONTA-1 --> CONTA ¿CONTA=0? DIGITO+1-->DIGITO 16 -->CONTA REPONER W Y STATUS 1 -->TOIF RETFIE SI NO Guardar W y STATUS Reg.TEMPORALES Figura 4.- Cronograma del programa TMR0_2 Curso microcontroladoresPAGS 29/4/03 10:38 Página 54
  • 4. ;************************************************************************************* ; Programa TMR0_2.ASM Fecha : 15 - Abril - 2003 ; Este programa presenta en el display de cátodo común conectado en el PORTB ; los números del 0 al 9, mostrando un dato por segundo (aproximadamente), la ; temporización la realiza utilizando la interrupción por TMR0 y el registro auxiliar CONTA ; Revisión : 0.0 Programa para PIC16F87X ; Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS ; Perro Guardián : deshabilitado Tipo de Reloj : XT ; Protecci¢n del código : OFF ;******************************************************************************************** List p=16F876 ;Tipo de procesador include "P16F876.INC" ;Definiciones de registros internos ;************************** DEFINICION DE VARIABLES ************************************ W_TEMPORALequ 0x20 ;Almacena W antes de atender la interrupción S_TEMPORAL equ 0X21 ;Almacena Status antes de atender la interrupción DIGITO equ 0x22 ;numero a representar en display CONTA equ 0x23 ;Contador auxiliar para alargar el tiempo a 1 segundo ;entre cada cambio de digito, ya que los 256 (FF) del Timer, ;aunque se divida por 256, es 4x256x256=262,144 ms ;******************************************************************************************* ; ORG 0x00 ; goto INICIO ORG 0x04 ;*************************** ATENCION A LA INTERRUPCION ******************************* INT_TMR0 movwf W_TEMPORAL ;Guarda el valor actual de W cuando se interrumpe swapf STATUS,W ;Intercambia nibbles y guarda en W movwf S_TEMPORAL ;Almacena Status pero cambiado el .. ;.. nibble alto por el bajo clrf TMR0 ;Inicializa TMR0=00 decfsz CONTA,f ;Decrementa CONTA y si =0 incrementa DIGITO goto FIN_INT ;Si cont_aux <> 0 finaliza interrupción incf DIGITO,F ;Incrementa el DIGITO movlw D'16' ;Al cargar TMR0 con 0 hace 256 cuentas con un predivisor de 256 ;(programado en OPTION_REG). Como queremos 1sg. ponemos 16 en CONTA ; así obtenemos 4*256*256*16 = 1,048576s movwf CONTA ;inicializa de nuevo CONTA para un nuevo digito FIN_INT swapf S_TEMPORAL,W ;Deja Status como estaba antes y en W movwf STATUS swapf W_TEMPORAL,F ;Intercambia nibbles del W guardado swapf W_TEMPORAL,W ;Vuelve a intercambiar pero ya en W bcf INTCON,T0IF ;Borra el flag de la interrupción retfie ;Retorno de interrupción ;********************* PROGRAMA PRINCIPAL ************************************* INICIO bcf STATUS,RP0 bsf STATUS,RP0 ;Habilita Banco1 de registros clrf TRISB ;direcciona PortB como salidas movlw B'00000111' ;Reloj interno asignado aTMR0 con divisor por 256 movwf OPTION_REG bsf INTCON,GIE ;habilitación general de las interrupciones bsf INTCON,T0IE ;habilitación de la interrupción por TMR0 bcf STATUS,RP0 ;RP0=0 habilita Banco0 de registros clrf TMR0 ;Inicializa TMR0 a 0 movlw D'16' ;Carga CONTA con 16 movwf CONTA PONER_0 clrf DIGITO ;Carga DIGITO a 0 para iniciar cuenta LEETABLA call TABLA movwf PORTB ;Muestra digito en el display 7 segmentos (PortB) movlw D'9' ; subwf DIGITO,W ;Compara DIGITO con 9 btfss STATUS,Z ; goto LEETABLA ;Si DIGITO NO = 9, incrementa DIGITO goto PONER_0 ;Si DIGITO=9,lo pone a 0 de nuevo. ;********************* TABLA CON LOS VALORES DE LOS DIGITOS ****************** TABLA movf DIGITO,W ;Guarda digito en acumulador addwf PCL,F ;Suma al contador de programa el digito DT 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X67 ;******************************************************************************* ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la página 0 goto INICIO ;Salto a la dirección de INICIO del programa ;******************************************************************************* END Curso microcontroladoresPAGS 29/4/03 10:38 Página 55
  • 5. El modo de trabajo viene determinado por la fuente de los impulsos de reloj, es decir, la señal de reloj puede ser externa o interna, se selecciona con el bit TMR1CS del registro T1CON<l>, cuando este bit está a nivel bajo se selecciona el reloj el interno del micro-controlador (Fosc/4) y cuando está a uno se selecciona el modo contador y cuenta los impulsos que le llegan a través del pin RC0/TlCKl. Además como se verá mas adelante el TIMER1 tiene la posibilidad de reinicializarse, a partir del módulo CCP. MODO DE FUNCIONAMIENTO DEL TIMER1 COMO TEMPORIZADOR Este modo se selecciona poniendo a cero el bit TMR1CS (T1CON <1>. En este modo la señal de reloj es el reloj interno del microcontrolador FOSC/4. En este modo de trabajo el bit T1SYNC (T1CON <2>) no tiene ningún efecto ya que el reloj interno está siempre sincronizado. MODO DE FUNCIONAMIENTO DEL TIME1 COMO CONTADOR En este modo puede trabajar como contador síncrono o asíncrono . Cuando el TIMER1 se está incrementando según le llegan los impulsos externos, los incrementos ocurren en los flancos de subida. Después de que el TIMER1 se ha configurado como contador, debe producirse un flanco de bajada antes de empezar a contar. MODO DE FUNCIONAMIENTO DEL TIMER1 COMO CONTADOR SÍNCRONO Para seleccionar este modo se pone a uno el bit TMR1CS (T1CON <1>). En este modo el contador se incrementa en cada flanco ascendente de la señal de reloj que se introduce por el pin RC0/T1OSO/TICK1 cuando el bit T1OSCEN está a uno, y por el pin RC1/TlOSI/CCP2, cuando el bit T1OSCEN está a cero. Si T1SYNC se pone a cero, entonces la entrada de reloj externa se sincroniza con los relojes de fase interiores. La sincronización se hace después de la fase del preescaler. En el preescaler la fase de la señal de reloj es por lo tanto asíncrona. En este modo de trabajo, durante el modo SLEEP el TIMER1 no se incrementa aún cuando la señal de reloj externa esté presente. El preescaler sin embargo continua incrementándose. MODO DE FUNCIONAMIENTO DEL TIMER1 COMO CONTADOR ASÍNCRONO Cuando el bit de control T1SYNC (T1CON <2>) se poner a uno, la señal de reloj externa no se sincroniza. El contador sigue realizando la cuenta de forma asíncrona respecto a la fase de la señal de reloj interna. El contador MICROCONTROLADORES 56RESISTOR REGISTRO T1CON: Registro de control del TIMER1 (dirección 10h) U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 --- --- T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON Bit 7 Bit 0 bit 7-6: No implementados: Se lee como "0" bit 5-4: TlCKPS1:T1CKPS0: bit de selección del preescaler de la señal de reloj del TIMER1 11 = valor del preescaler 1:8 10 = valor del preescaler 1:4 01 = valor del preescaler 1:2 00 = valor del preescaler 1: 1 bit 3 : T1OSCEN: bit de habilitación del oscilador del TIMER1. Cuando se emplea un oscilador externo, hay que poner este bit a 1. El TMR1 puede trabajar a una frecuencia totalmente independiente de la del sistema. 1 = Habilita el oscilador 0 = Deshabilita el oscilador Nota.- El oscilador y la resistencia de desconectan para reducir el consumo bit 2: #TlSYNC: bit de control de sincronización de la señal de entrada. Con TMR1CS = 1 1= No sincroniza la entrada de reloj externa 0 = Sincroniza la entrada de reloj externa Con TMR1CS = 0 En esta condición se ignora. El TIMER1 utiliza el reloj interno cuando TMRICS=0 bit 1 TMR1CS: bit de selección de la fuente de reloj del TIMER1 1 = Reloj externo por el pin RC0/T1OSO/T1CK1 (flanco ascendente) 0 = Reloj interno (FOSC/4) bit 0: TMR1ON: TIMER1. activo. Hace entrar o no en funcionamiento el TIMER1. 1 = Habilita el TIMER1 0 = Deshabilita el TIMER1 Curso microcontroladoresPAGS 29/4/03 10:38 Página 56
  • 6. continúa la cuenta incluso en el modo SLEEP y puede generar una interrupción por desbordamiento que despierta al procesador. Hay que tener especial cuidado con el software al leer o escribir el contador. Cuando se trabaja en el modo contador asíncrono, el TIMER1 no puede usare como base de tiempos para el módulo CCP (Captura y comparación-PWM) LECTURA Y ESCRITURA EN EL TIMER1 CUANDO SE TRABAJA EN EL MODO CONTADOR ASÍNCRONO Se pueden leer los contadores TMR1H y TMR1L mientras la señal externa del contador se está recibiendo (teniendo cuidado con el hardware). Sin embargo, el usuario debe tener en cuenta que el contador es de 16 bits y se pueden tener ciertos problemas al leer los dos registros de ocho bits, ya que el contador puede desbordarse entre las lecturas. Para escribir en él, se recomienda que el usuario MICROCONTROLADORES 57RESISTOR T1CK1 (Por defecto a nivel alto) T1CKI (Por defecto a nivel bajo) Nota.- Las flechas indicas los incrementos del contador TMR1H TMR1L 1 0 Preescaler 1,2,4,8 sincronización detección 0 1 El bit TMR1F se pone a 1 cuando se desborda RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 TMR1ON on/off FOSC/4 Clok Interno TMR1CS T1CKPS1:T1CKPS0 2 Entrada SLEEP T1SYNC Entrada Clock Sincronizada T1OSCEN Habilita Oscilador TMR1 Figura 5.- Diagrama de bloques de TIMER1 Tabla 1.- Selección de los condensadores para el oscilador del TIMER1 Tipo de Oscilador Frecuencia C1 C2 LP 32 kHz 33pF 33pF 100kHz 15 pF 15 pF 200 15 pF 15 pF Estos valores son para los siguientes cristales de referencia 32.768 EpsonC-001R21.768K-A ±20 PPM 100 kHz Epson C-2 100.000 KC-p1 ±20 PPM 200 kHz STD XTL 200.000 kHz ±20 PPM Nota.- 1. Capacidades mayores aumentan la estabilidad del oscilador, pero también aumentan el start-up. 2. Cada cirstal/resonador tiene sus propias características, el usuario debe consultar los valores apropiados de los componentes externos al cristal. Curso microcontroladoresPAGS 29/4/03 10:38 Página 57
  • 7. simplemente pare el contador y escriba los valores deseados. Cuando se escribe el registro del contador puede haber conflicto mientras este se está incrementando. Esto puede producir un valor imprevisible en el contador. OSCILADOR DEL TIMER1 Se puede conectar un oscilador a cristal entre los pines T1OSI (entrada) y T1OSO (salida del amplificador). Se debe habilitar poniendo a uno el bit de control TLOSCEN (TICON <3>). El oscilador de bajo consumo puede trabajar hasta 200 kHz. En estas condiciones el oscilador sigue funcionando aunque se fuerce el modo SLEEP. Está pensado para trabajar con un cristal de hasta 32 kHz. La Tabla 1 muestra el valor de los condensadores para el TIMER1. El oscilador TIMER1 es idéntico al oscilador LP. El usuario debe proporcionar un tiempo de retardo por software para asegurar la salida apropiada del oscilador. RESTABLECIMIENTO DEL TIMER1 UTILIZADO LA SALIDA TRIGGER DEL CCP Si el módulo CCP1 o CCP2 se configuran en modo comparación para generar un "disparo por evento especial" (CCP1M3:CCP1M0 = 1011 (CP1CON<3:0>)), esta señal reestablecerá el TIMIER1. Nota.- El evento especial que activa los módulos CCP1 y CCP2 no activará el flag TMR1IF (PIR1<0>). El TIMER1 debe configurarse como temporizador o contador síncrono. Restablecimiento TIMER1 que usa un disparador de CCP. TIMER1 debe configurarse para temporizador o contador síncrono para aprovechar esta característica. Si el TIMER1 está trabajando en modo contador asíncrono, el reset no puede ser activado. En el caso de escribir sobre el TIMER1 en el momento del disparo del evento especial de CCP1 o CCP2, se tomará el valor anterior. En el caso de escribir sobre TIMER1 si coincide con un disparo por evento especial de CCP1 o CCP2, se carga el valor anterior. En este modo de funcionamiento, el par de registros CCPRxH:CCPRxL se reponen para volver a tener el periodo del TIMER1. RESTABLECIMIENTO DEL PAR DE REGISTRO DEL TIMER1 (TMR1H, TMR1L) Los registros TMR1H y TMR1L no se inicializan a 00h después de un Power-on Reset o por cualquier otro reset excepto por un disparo de evento especial en CCP1 y CCP2. El registro T1CON se inicializa a 00h después de un Power-on Reset o Brown-out Reset que deja a 1:1 el preescaler. En los demás reset, el registro no es alterado. TIMER1 PREESCALER El contador del preescaler se pone a cero al escribir en los registros TMR1H o TMR1L. RESUMEN DE REGISTROS ASOCIADOS AL TIMER1 En la siguiente tabla se muestran los registros principales que controlan el comportamiento del TIMER1 y la distribución de los bit. PROGRAMA EJEMPLO DE FUNCIONAMIENTO DEL TIMER1 Para comprobar el funcionamiento de este programa utilizaremos el circuito de la Figura 3 que es el mismo que hemos utilizado para comprobare el funcionamiento del TIMER0, en el que se ha conectado un display del tipo cátodo común al PORTB de PIC16F876. Una vez cargado el programa TMR1_0.asm, en el display se irán representado los números del 0 al 9 con una cadencia de aproximadamente un segundo. Dirección Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en el POR,BOR resto de Reset 0Bh,8Bh 10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE TOIF INTE RBIF 0000 000x 0000 000u 0Ch PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 0Bh PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 0Eh TMR1L Registro de carga del byte de menor peso del registro de 16 bits de TMR1 xxxx xxxx uuuu uuuu 0Fh TMR1H xxxx xxxx uuuu uuuu 10h T1CON --- --- T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --xx xxxx --uu uuuu Leyenda x = desconocido, u = inalterado; - = no implementado se lee como ‘0’. Las celdas sombreadas no son usa- das por el TIMER1 Nota 1: Los bits PSPIE y PSPIF están reservados para el PIC16F873/876, mantener estos bits a cero. Curso microcontroladoresPAGS 29/4/03 10:38 Página 58
  • 8. ;************************************************************************************* ; Programa TMR1_0.ASM Fecha : 15 - Abril - 2003 ; Este programa presenta en el display de cátodo común conectado en el PORTB ; los números del 0 al 9, mostrando un dato por segundo (aproximadamente), la ; temporización la realiza utilizando la interrupción por TMR1 y el registro auxilar CONTA ; Revisión : 0.0 Programa para PIC16F87X ; Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS ; Perro Guardián : deshabilitado Tipo de Reloj : XT ; Protecci¢n del código : OFF ;******************************************************************************************** List p=16F876 ;Tipo de procesador include "P16F876.INC" ;Definiciones de registros internos ;********************* DEFINICION DE VARIABLES ***************************** W_TEMPORALequ 0x20 ;Almacena W antes de atender la interrupción S_TEMPORAL equ 0X21 ;Almacena Status antes de atender la interrupción DIGITO equ 0x22 ;numero a representar en display CONTA equ 0x23 ;Contador auxiliar para alargar el tiempo a 1 segundo ;entre cada cambio de digito, ya que los 256 (FF) del Timer, ;aunque se divida por 256, es 4x256x256=262,144 ms ;******************************************************************************* ; ORG 0x00 ; goto INICIO ORG 0x04 ;******************* ATENCION A LA INTERRUPCION ************************** INT_TMR1 movwf W_TEMPORAL ;Guarda el valor actual de W cuando se interrumpe swapf STATUS,W ;Intercambia nibbles y guarda en W movwf S_TEMPORAL ;Almacena Status pero cambiado el .. ;.. nibble alto por el bajo movlw low ~.62500 ;Carga parte baja del contador con el complemento movwf TMR1L ; de 62500 en hex. movlw high ~.62500 ;Carga parte baja del contador con el complemento movwf TMR1H ;de 62500 en hex. bcf PIR1,0 ;Desconecta el flag del TMR1 incf PORTB,F ;Incrementa el contador de la Puerta B decfsz CONTA,f ;Decrementa CONTA y si =0 incrementa DIGITO goto FIN_INT ;Si cont_aux <> 0 finaliza interrupcion incf DIGITO,F ;Incrementa el DIGITO movlw D'2' movwf CONTA ;inicializa de nuevo cont_aux para un nuevo digito FIN_INT swapf S_TEMPORAL,W ;Deja Status como estaba antes y en W movwf STATUS swapf W_TEMPORAL,F ;Intercambia nibbles del W guardado swapf W_TEMPORAL,W ;Vuelve a intercambiar pero ya en W bcf INTCON,T0IF ;Borra el flag de la interrupción retfie ;********************* PROGRAMA PRINCIPAL ************************************* INICIO bcf STATUS,RP0 bsf STATUS,RP0 ;Habilita Banco1 de registros clrf TRISB ;direcciona PortB como salidas movlw b'11111111' movwf OPTION_REG ;Preescaler d 128 asociado al WDT bsf PIE1,0 ;habilita interrupción del TMR1 bcf STATUS,RP0 ;Selecciona banco 0 ;El TMR1 trabaja con oscilador interno y un preescaler de 1:8. Si se trabaja a una frecuencia ;de 4 MHz, el TMR1 deberá ser cargado con 62500 para que provoque interrupción al de 0.5s b movlw b'00110001' movwf T1CON movlw b'11000000' movwf INTCON ;Habilitación global de interrupciones movlw D'2' ;Carga CONTA con 2 movwf CONTA PONER_0 clrf DIGITO ;Carga DIGITO a 0 para iniciar cuenta LEETABLA call TABLA movwf PORTB ;Muestra digito en el display 7 segmentos (PortB) movlw D'9' ; subwf DIGITO,W ;Compara DIGITO con 9 btfss STATUS,Z ; goto LEETABLA ;Si DIGITO NO = 9, incrementa DIGITO goto PONER_0 ;Si DIGITO=9, lo pone a 0 de nuevo. ;********************* TABLA CON LOS VALORES DE LOS DIGITOS ****************** TABLA movf DIGITO,W ;Guarda digito en acumulador addwf PCL,F ;Suma al contador de programa el digito DT 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X67 ;******************************************************************************* ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la página 0 goto INICIO ;Salto a la dirección de INICIO del programa ;******************************************************************************* END Curso microcontroladoresPAGS 29/4/03 10:38 Página 59