Está en la página 1de 17

TIMER/COUNTER

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) ¿Qué diferencia hay en un contador y un temporizador?
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) ¿Qué diferencia hay en un contador y un temporizador?
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) ¿Qué diferencia hay en un contador y un temporizador?

¿Qué diferencia hay en un contador y un temporizador? Ambos cuentan eventos. La diferencia se observa en cómo se usa el resultado de cada uno de estas aplicaciones, por ejemplo podemos contar el número de veces que un pulsador es presionado al estar conectado a la entrada del módulo Timer/Counter.

al estar conectado a la entrada del módulo Timer/Counter. Observe que un circuito de anti-rebote (por
al estar conectado a la entrada del módulo Timer/Counter. Observe que un circuito de anti-rebote (por

Observe que un circuito de anti-rebote (por hardware o software) es requerido: en este ejemplo el pin de entrada está conectado a V DD (Alto) y cuando el pulsador es presionado la entrada es puesta a referencia (Bajo), en este caso tenemos una conexión pull-up y el módulo del TMR se incrementará cada vez que el nivel lógico del pin cambie (esto es alto a bajo) y almacena el resultado para tomarlo como referencia posteriormente; en este caso el módulo es utilizado como un contador.

De forma alterna, si nosotros utilizamos una señal periódica como fuente de reloj o un oscilador a la entrada del módulo TMR y hacemos que este se incremente cuándo es presionado el pulsador y detenido cuando el pulsador es liberado, nosotros podemos usar el valor almacenado actualmente para calcular el tiempo entre los eventos de press/release (ver siguiente figura).

calcular el tiempo entre los eventos de press/release (ver siguiente figura). Ing. Oscar Andrés Pulido Casallas

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) es multiplicado por el valor actualmente almacenado (#binario),
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) es multiplicado por el valor actualmente almacenado (#binario),
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) es multiplicado por el valor actualmente almacenado (#binario),

es multiplicado por el valor actualmente almacenado (#binario),

entonces obtenemos el tiempo que duró presionado el pulsador, el contador sigue contando pero

esta es una señal de reloj periódica que será usada como una referencia y de este modo el contador está siendo usado como un temporizador.

Si el periodo del reloj

= 1

Módulos TIMER en micro-controladores de medio rango:

Los tres CONTADORES/TEMPORIZADORES que se encuentran disponibles en los micro- controladores de rango medio, tienen únicas aplicaciones pero con características muy comunes, como se muestra en la siguiente figura:

muy comunes, como se muestra en la siguiente figura: Como primera instancia una fuente es requerida,
muy comunes, como se muestra en la siguiente figura: Como primera instancia una fuente es requerida,

Como primera instancia una fuente es requerida, esta puede ser un reloj síncrono provisto por un oscilador o un evento que no es tan periódico como un pulsador conectado al pin de entrada de reloj del TMRX (se escribe TMRX por que puede ser TMR1, TMR2 o TMR3).

Como segunda instancia el valor actual debe ser almacenado en algún sitio de la memoria del micro-controlador, en los PIC de rango medio este sitio puede ser un registro de 8 bit o 16 bit ubicado en la memoria de datos dependiendo de cuál de los tres módulos TMR es usado. Un valor

binario incrementará de uno en uno y este incremento se puede configurar con el flanco de subida

el de bajada de la señal, es decir, el valor del registro TMRX se incrementará cada vez que la señal tenga una transición de alto a bajo o de bajo a alto en la fuente.

o

Por último, cada uno de los CONTADORES/TEMPORIZADORES tiene al menos un divisor (scaler). Estos scaler pueden ubicarse antes (pre-divisor o pre-scaler) o después (post-divisor o postscaler), un escaler trabaja dividiendo una señal de entrada en un valor específico, por ejemplo, si tenemos una señal de entrada periódica con una frecuencia de 1 kHz, es decir 1ms y esta pasa a través de un pre-scaler, configurado en la forma 2:1, el valor en el registro del CONTADOR/TEMPORIZADOR se incrementara de 1 en 1 cada dos transiciones lógicas de la señal o lo que es lo mismo incrementará a una frecuencia de 500 Hz, de esta forma la señal se hará más lenta (tarda más tiempo).

Ing. Oscar Andrés Pulido Casallas

2013.

El TIMER0

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El TIMER/COUNTER es un módulo de 8 bit con
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El TIMER/COUNTER es un módulo de 8 bit con
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El TIMER/COUNTER es un módulo de 8 bit con

El TIMER/COUNTER es un módulo de 8 bit con las siguientes características:

Un prescaler de 8 bit (compartido con el WDT).

La fuente de reloj es seleccionable interna o externa.

Interrupción de desbordamiento (2550).

Selección del cambio de la transición dependiendo del flanco (positivo o negativo).

Para configurar el módulo del TMR0 es usado el registro de funciones especiales (SFR) OPTION_REG, la siguiente figura muestra los diferentes elementos que componen el TMR0 incluyendo cada bit del OPTION_REG que afecta este módulo.

incluyendo cada bit del OPTION_REG que afecta este módulo. Operación Pasaremos a través de varios bloques
incluyendo cada bit del OPTION_REG que afecta este módulo. Operación Pasaremos a través de varios bloques

Operación

Pasaremos a través de varios bloques del TMR0 para ver su configuración, la selección de la fuente de reloj es hecha a través del bit 5 del registro OPTION_REG.

de la fuente de reloj es hecha a través del bit 5 del registro OPTION_REG. Ing.

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En el modo temporizador, el módulo el TMR0 incrementará
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En el modo temporizador, el módulo el TMR0 incrementará
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En el modo temporizador, el módulo el TMR0 incrementará
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En el modo temporizador, el módulo el TMR0 incrementará
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En el modo temporizador, el módulo el TMR0 incrementará

En el modo temporizador, el módulo el TMR0 incrementará con cada ciclo de instrucción (sin hacer pre-escalamiento). Si el registro TMR0 es escrito, el incremento se deshabilita por los siguientes dos ciclos de instrucciones. Así entonces se podrá trabajar con este, escribiendo y ajustando el valor deseado para el registro TMR0.

El modo contador es seleccionado al poner “1” el bit “5” del registro OPTION_REG. En modo contador, el TMR0 incrementará con cualquiera de los dos siguientes eventos: cada flanco de subida o cada flanco de bajada que se observe en el pin T0CKI.

o cada flanco de bajada que se observe en el pin T0CKI. La selección del flanco

La selección del flanco de la fuente está solo disponible para el modo de fuente externa, el falco con el que incrementa de TMR0 es determinado por el bit T0SE (bit “4” del registro OPTION_REG). Poner clear “0” en este bit, selecciona el incremento teniendo en cuenta el flanco de subida que se detecte en el pin T0CKI y al poner “1” en este bit, seleccionará el incremento con cada flanco de bajada que se detecte en el pin T0CKI.

el incremento con cada flanco de bajada que se detecte en el pin T0CKI. Ing. Oscar
el incremento con cada flanco de bajada que se detecte en el pin T0CKI. Ing. Oscar

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El pre-escalador es compartido entre el TMR0 y
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El pre-escalador es compartido entre el TMR0 y
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El pre-escalador es compartido entre el TMR0 y

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

El pre-escalador es compartido entre el TMR0 y el Watchdog Timer pero no en ambos simultáneamente, la asignación del pre-escalador es configurable por software y es hecha por el bit de control PSA (bit “3” del registro OPTION_REG), haciendo un clear “0” en este, asignará el pre-escalador al módulo del TMR0. El pre-escalador no es leíble ni escribible, cuando este es asignado para el TMR0, podemos tener valores de pre-escalamiento de 1:2, 1:4,……, 1:256. Los valores anteriores podrán ser configurados o escogidos a través de los bit PS0, PS1 y PS2

(OPTION_REG<0:3>).

través de los bit PS0, PS1 y PS2 (OPTION_REG<0:3>). El valor escogido en el prescaler determinará
través de los bit PS0, PS1 y PS2 (OPTION_REG<0:3>). El valor escogido en el prescaler determinará
través de los bit PS0, PS1 y PS2 (OPTION_REG<0:3>). El valor escogido en el prescaler determinará

El valor escogido en el prescaler determinará qué cantidad de flancos de la fuente se requerirán para incrementar el valor en el TMR0.

Cualquier escritura que se le haga al registro TMR0 como se mencionó anteriormente, causará la inhabilitación del registro en los dos siguientes ciclos de instrucción (2Tcy), es decir si yo muevo un valor o literal a este registro el TMR0 no será incrementado antes del tercer ciclo de instrucción, hay que tener en cuenta que si el pre-escalador es asignado al TMR0, cualquier escritura que se realice a este registro (TMR0), actualizará el valor del TMR0 con el valor que usted le escribió y el pre-escalador será borrado (cleared), así entonces el TMR0 y el pre-escalador será inhabilitado por los siguientes dos ciclos de instrucción (2Tcy). Por ejemplo si el valor del pre-escalador es configurado como 2, entonces después de escribir en el TMR0 el registro será inhabilitado y el TMR0 no incrementará después de los siguientes 4 pulsos de reloj.

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) *** *** *** *** *** Interrupción del TIMR0 Se
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) *** *** *** *** *** Interrupción del TIMR0 Se
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) *** *** *** *** *** Interrupción del TIMR0 Se
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) *** *** *** *** *** Interrupción del TIMR0 Se
*** *** *** *** ***
***
***
***
***
***

Interrupción del TIMR0

Se genera una interrupción cuando el registro TMR0 en su incremento llega a FFh y pasa a 00h (desbordamiento), este evento genera la activación del bit T0IF (registro INTCON<2>). Esta interrupción debe ser activada al poner en “1” el bit T0IE (registro INTCON<5>), el bit T0IF debe ser borrado por software por el módulo de servicio de interrupción del TMR0

;********************************************************************

;**** Aplicación para observar el funcionamiento del TMR0 ;**** Versión 0001 ;**** Autor: Oscar Andrés Pulido ;**** Fecha 17/12/2013 ;**** Adaptado de: MICROCHIP, Timers: TIMER0 Tutorial Parte 1

;********************************************************************

LIST P=16F877A #INCLUDE <P16F877A.INC>

ERRORLEVEL -302;Elimina el warning 302 ERRORLEVEL -305;Elimina el warning 305

CONFIG

_CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

CONTEO equ 0x20; Asignación de la dirección 0x20 con el nombre CONTEO

ORG 0X0000; Inicia en el vector de reset

;*********************************************************************** ;configuración del TMR0 ;***********************************************************************

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) CLRF STATUS BSF STATUS,5;Ingresa al banco 1 CLRF INTCON;
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) CLRF STATUS BSF STATUS,5;Ingresa al banco 1 CLRF INTCON;
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) CLRF STATUS BSF STATUS,5;Ingresa al banco 1 CLRF INTCON;

CLRF STATUS BSF STATUS,5;Ingresa al banco 1 CLRF INTCON; Deshabilita las interrupciones globales y la del TIMER0 MOVLW 0X08; Reloj interno MOVWF OPTION_REG; Prescaler asignado al WDT BCF STATUS,5;Vuelve al banco 0

PRINCIPAL

CLRF CONTEO; Inicia la variable conteo CLRF TMR0; pone en 0 el TMR0 y se inhabilita por los siguientes dos TCy nop;Ciclos de instrucción que no operan el TMR0 nop;Ciclos de instrucción que no operan el TMR0

CUENTA

BTFSS INTCON,TMR0IF;pregunta por el flag del TIMER0 para ver si se desbordó GOTO CUENTA;va a cuenta INCREMENTA INCF CONTEO,1; Incrementa la variable conteo después de desbordarse el TMR0 BCF INTCON,TMR0IF; Ponemos a 0 el flag que indica el desbordamiento del TMR0 CLRF TMR0; Borramos el contenido del TMR0 GOTO CUENTA; Se repite el programa de forma infinita END

GOTO CUENTA; Se repite el programa de forma infinita END En el programa anterior configuramos el

En el programa anterior configuramos el TMR0 para que incremente cada ciclo de instrucción utilizando como fuente de reloj el clock interno, para poder hacer que este se incremente cada ciclo de instrucción, se debe asignar el prescaler al WDT y para verificar el desbordamiento del TMR0 (2550), se hará por el método de poleo, en este caso entonces debemos desactivar la interrupción del TMR0 y las interrupciones globales.

Utilizaremos entonces el simulador de MPLAB X: primero al abrir el programa, damos clic en file\new proyect

de MPLAB X: primero al abrir el programa, damos clic en file\new proyect Ing. Oscar Andrés

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En el primer menú seleccionamos Microchip Embedded\Standalone
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En el primer menú seleccionamos Microchip Embedded\Standalone
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En el primer menú seleccionamos Microchip Embedded\Standalone

En el primer menú seleccionamos Microchip Embedded\Standalone Project:

menú seleccionamos Microchip Embedded\Standalone Project: Escogemos la Familia de medio rango, 8-bit MCUs y el
menú seleccionamos Microchip Embedded\Standalone Project: Escogemos la Familia de medio rango, 8-bit MCUs y el

Escogemos la Familia de medio rango, 8-bit MCUs y el dispositivo el 16F877A.

de medio rango, 8-bit MCUs y el dispositivo el 16F877A. Escogemos la opción de simulador: Ing.
de medio rango, 8-bit MCUs y el dispositivo el 16F877A. Escogemos la opción de simulador: Ing.

Escogemos la opción de simulador:

rango, 8-bit MCUs y el dispositivo el 16F877A. Escogemos la opción de simulador: Ing. Oscar Andrés

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Y por último seleccionamos el lenguaje de programación que
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Y por último seleccionamos el lenguaje de programación que
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Y por último seleccionamos el lenguaje de programación que

Y por último seleccionamos el lenguaje de programación que trabajaremos, en este caso assembler.

de programación que trabajaremos, en este caso assembler. Y por último damos el nombre al proyecto
de programación que trabajaremos, en este caso assembler. Y por último damos el nombre al proyecto

Y

por último damos el nombre al proyecto y finalizar

Y por último damos el nombre al proyecto y finalizar El entorno del programa queda de
Y por último damos el nombre al proyecto y finalizar El entorno del programa queda de

El entorno del programa queda de la siguiente forma:

al proyecto y finalizar El entorno del programa queda de la siguiente forma: Ing. Oscar Andrés

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En la parte derecha se ha establecido la
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En la parte derecha se ha establecido la
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) En la parte derecha se ha establecido la

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

En la parte derecha se ha establecido la ventana del proyecto, que es donde se gestionará todo los elementos necesarios del programa para llevarlo a la compilación y que esta sea satisfactoria, (recuerde que el hecho que sea satisfactoria, no quiere decir que funcione correctamente). Vamos a dar clic derecho sobre source Files\New\AssemblyFile.asm…

dar clic derecho sobre source Files\New\ AssemblyFile.asm… Damos el nombre del programa en assembler y si
dar clic derecho sobre source Files\New\ AssemblyFile.asm… Damos el nombre del programa en assembler y si
dar clic derecho sobre source Files\New\ AssemblyFile.asm… Damos el nombre del programa en assembler y si

Damos el nombre del programa en assembler y si se quiere cambiar la ruta de guardado lo puede hacer en Browse:

assembler y si se quiere cambiar la ruta de guardado lo puede hacer en Bro w

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ya tememos el espacio donde se creará el programa:
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ya tememos el espacio donde se creará el programa:
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ya tememos el espacio donde se creará el programa:

Ya tememos el espacio donde se creará el programa:

(MPLABX) Ya tememos el espacio donde se creará el programa: Al habilitar el simulador se activan
(MPLABX) Ya tememos el espacio donde se creará el programa: Al habilitar el simulador se activan

Al habilitar el simulador se activan los siguientes íconos:

Al habilitar el simulador se activan los siguientes íconos: Cuando el ícono de stop y pause

Cuando el ícono de stop y pause están en color es porque la simulación está funcionando de forma continua, damos clic en pause y se habilitan las otras funciones (si da clic en stop se detendrá la simulación en su totalidad y deberá habilitarla nuevamente):

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El programa se detendrá en cualquier línea, ahora vamos
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El programa se detendrá en cualquier línea, ahora vamos
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El programa se detendrá en cualquier línea, ahora vamos
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El programa se detendrá en cualquier línea, ahora vamos
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) El programa se detendrá en cualquier línea, ahora vamos

El programa se detendrá en cualquier línea, ahora vamos a observar cómo cambian los registros que nos interesan conforme va avanzando el programa y el tiempo que se va a tardar en ejecutar, entonces vamos al menú en Window\Debuggin\Watches y se habilitará en la parte inferior una ventana en donde vamos a agregar los registros SFR y GPR (creados) que queremos observar:

los registros SFR y GPR (creados) que queremos observar: Vamos a adicionar dando clic derecho y
los registros SFR y GPR (creados) que queremos observar: Vamos a adicionar dando clic derecho y

Vamos a adicionar dando clic derecho y clic en New Watch y se observa la siguiente pantalla, en esta vamos a adicionar INTCON, TMR0 y CONTEO.

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Para adicionar la variable CONTEO la cual fue creada
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Para adicionar la variable CONTEO la cual fue creada
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Para adicionar la variable CONTEO la cual fue creada
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Para adicionar la variable CONTEO la cual fue creada

Para adicionar la variable CONTEO la cual fue creada en los GPR en esta versión del MPLAB (V2.10) se debe escribir la dirección en donde se almacenó esta, en este caso la guardamos en la posición 0x20 h como se muestra en la figura:

en la posición 0x20 h como se muestra en la figura: La ventana del Watch quedará

La ventana del Watch quedará así:

se muestra en la figura: La ventana del Watch quedará así: Los valores o datos que

Los valores o datos que queremos ver de cada registro puede ser cambiado o adicionado dando clic derecho sobre Name.

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ahora como el programa ya está listo para
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ahora como el programa ya está listo para
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ahora como el programa ya está listo para

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

Ahora como el programa ya está listo para simular y lo que queremos es observar si lo programado corresponde a la función deseada, vamos a trabajar con las siguientes opciones:

deseada, vamos a trabajar con las siguientes opciones: Como ya habíamos iniciado la simulación y esta

Como ya habíamos iniciado la simulación y esta se detuvo en una línea diferente a la primera línea (ORG 0X000), si damos clic en “RESET” (ícono morado con dos flechas), este nos llevará al inicio del programa, con el ícono “RUN” lo simulará en tiempo real y no podremos observar que es lo que pasa en los registros (si dio clic en “RUN”, de clic en “PAUSE” y nuevamente en “RESET” si quiere volver al inicio del programa), con el ícono STEP INTO” (ícono con una hoja y una flecha amarilla recta hacia abajo) realizará la simulación cada vez que se pulse este botón (también se puede con el teclado de su PC al pulsar la tecla “F7”), esta función permite que el usuario decida cuándo avanzar a la siguiente instrucción, con el ícono STEP OVER” (ícono con una hoja y una flecha amarilla curva hacia abajo), el usuario también simulará paso a paso el programa pero hará que las subrutinas (instrucciones con llamadas o “CALL”) se ejecuten rápidamente, es como si no entrara en la subrutina, por último se agregarán BREAKPOINTS o puntos de parada para cuando el programa se ejecuta de forma continua RUNse detenga en el BREAKPOINT asignado (el BREAKPOINT se puede poner al dar clic sobre los números que indican el número de la línea de instrucción).

que indican el número de la línea de instrucción). Sabiendo lo anterior, vamos a ubicar un

Sabiendo lo anterior, vamos a ubicar un breakpoint en después del LABEL “CUENTA”

a ubicar un breakpoint en después del LABEL “CUENTA” Los registros que están siendo afectados ya

Los registros que están siendo afectados ya se encuentran en la ventana WATCH, también habilitaremos la ventana STOPWATCH, esta no permitirá medir los tiempos que se demora en ejecutarse el programa o una sección en particular:

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Como ya hemos ubicado el breakpoint, damos clic en
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Como ya hemos ubicado el breakpoint, damos clic en
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Como ya hemos ubicado el breakpoint, damos clic en
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Como ya hemos ubicado el breakpoint, damos clic en
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Como ya hemos ubicado el breakpoint, damos clic en

Como ya hemos ubicado el breakpoint, damos clic en “RESET” y luego damos click en RUN y observamos que se detendrá después del label CUENTA, y observamos en el Stopwatch que el tiempo que se tardó en llegar a este es de 10 us, si usted quiere ver qué pasa en cada registro paso a paso en la ventana watch puede observar esto realizando la simulación con STEP INTO.

puede observar esto realizando la simulación con STEP INTO. Se puede ahora borrar el tiempo del
puede observar esto realizando la simulación con STEP INTO. Se puede ahora borrar el tiempo del
puede observar esto realizando la simulación con STEP INTO. Se puede ahora borrar el tiempo del

Se puede ahora borrar el tiempo del Stopwatch con el botón Clear Stopwatch.

ahora borrar el tiempo del Stopwatch con el botón “ Clear Stopwatch ” . Ing. Oscar

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ahora vamos a quitar el breakpoint y ponemos uno
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ahora vamos a quitar el breakpoint y ponemos uno
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) Ahora vamos a quitar el breakpoint y ponemos uno

Ahora vamos a quitar el breakpoint y ponemos uno nuevo después del label“INCREMENTA” (para quitar el BREAKPOINT después de cuenta, solo hay que dar un clic sobre el número de la línea y para adicionarlo después de incrementa tan solo hay que dar un clic en la línea de la instrucción INCF CONTEO,1”):

en la línea de la instrucción “ INCF CONTEO,1 ”) : En esta parte del programa
en la línea de la instrucción “ INCF CONTEO,1 ”) : En esta parte del programa
en la línea de la instrucción “ INCF CONTEO,1 ”) : En esta parte del programa
en la línea de la instrucción “ INCF CONTEO,1 ”) : En esta parte del programa

En esta parte del programa se está evaluando el estado del bit “TMR0IF” del registro INTCON que indica cuando se ha desbordado el registro TMR0, la instrucción que evalúa esto es:

BTFSS INTCON,TMR0IF (línea 37) si este no se pone en uno se va a la instrucción GOTO CUENTA y se repite hasta que este bit esté en 1, después de eso irá al label INCREMENTA.

Demos clic en “RUN” nuevamente, el programa se detendrá y se observará en el stopwatch:

En este observamos que el tiempo que se demoró en desbordarse el TMR0 que fueron 260us, si el programa continua, la variable CONTEO se incrementará en 1, se borra el valor existente en el TMR0 y ponemos a cero el bit de testeo “TMR0IF” del registro INTCON y se repite el programa indefinidamente. Como esta primera parte no tiene en cuenta el borrado del bit TMR0IF, el borrado del TMR0 y el GOTO, vamos entonces a dar clic en STEP INTO hasta que llegue a label CUENTA, aquí observamos que toda la rutina tarda en ejecutarse 265us. Si ubicamos el BREAKPOINT en el momento justo que se incrementa la variable CONTEO, borramos el Stopwatch y volvemos a dar clic en RUN, observamos que el tiempo real que dura en incrementarse la variable CONTEO es de 265us, usted puede seguir borrando el Stopwatch y observar que siempre es de 265us:

Ing. Oscar Andrés Pulido Casallas

2013.

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX)

MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) BIBLIOGRAFÍA:  Traducido y adaptado al lenguaje assembler del
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) BIBLIOGRAFÍA:  Traducido y adaptado al lenguaje assembler del
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) BIBLIOGRAFÍA:  Traducido y adaptado al lenguaje assembler del
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) BIBLIOGRAFÍA:  Traducido y adaptado al lenguaje assembler del
MODULO TMR0 CONFIGURACIÓN, USO Y APLICACIONES (MPLABX) BIBLIOGRAFÍA:  Traducido y adaptado al lenguaje assembler del

BIBLIOGRAFÍA:

Traducido y adaptado al lenguaje assembler del documento en linea de Microchip DS51682ATIMERS: TIMER0 TUTORIAL (PART 1).

Ing. Oscar Andrés Pulido Casallas

2013.