Sie sind auf Seite 1von 12

LECCIÓN 9: MICROCONTROLADORES PIC.

TEMPORIZADORES (TMRs) 1

LECCIÓN 9: PERIFÉRICOS INTEGRADOS (I): TEMPORIZADORES (TIMERs)

Índice:
Introducción
TMR0
TMR1. Registro T1CON
TMR2. Registro T2CON
Ejercicios

Temporizadores/Contadores:

- todos pueden generar interrupciones al desbordarse (overflow)


- algunos pueden asociarse con módulos CCP (Captura/Comparación/PWM)

• TMR0

- Contador ascendente de 8 bits


- Los impulsos pueden ser de reloj interno o externo
- Admite divisor de frecuencia (prescaler) que comparte con el WDT
- Si se escribe en TMR0, el contador se inhibe los dos ciclos siguientes
- Al desbordarse activa el flag T0IF (debe borrarse por software)
- No puede sacar al MCU del modo sleep

- diagrama de bloques de TMR0 y sus registros asociados -


índice

• TMR1. REGISTRO T1CON


LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 2

- 16 bits divididos en dos registros de 8 bits: TMR1H y TMR1L


- Al desbordarse activa el flag TMR1IF (debe borrarse por software)
- Puede incrementarse con tres tipos de señal:
· reloj interno (Fosc/4)
· flanco de subida de la señal externa en RC0
· flanco de subida de un oscilador a cristal conectado entre RC0 y RC1
- Admite divisor de frecuencia
- Puede operar conjuntamente con módulos CCP
- Puede sacar al MCU del modo sleep

- diagrama de bloques de TMR1 -

- registro T1CON -
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 3

- valores de los condensadores y su conexión para TMR1 -


índice

• TMR2. REGISTRO T2CON

- 8 bits
- Admite dos divisores de frecuencia: prescaler y postscaler
- Puede emplearse como base de tiempos para el modo PWM de los módulos CCP

- diagrama de bloques de TMR2 -

- registro T2CON -
índice
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 4

EJERCICIOS

EJERCICIO 9.1

Escribir un programa que realice un parpadeo de 160 ms en el encendido/apagado de ocho


LEDs conectados en cátodo común al Puerto D de un microcontrolador PIC 16F877A operando
en modo XT con un oscilador de 4 MHz.

EJERCICIO 9.2

Debido a un accidente de circulación se han colocado cuatro señales luminosas a cada lado de la
calzada para que sirvan de advertencia a los conductores que circulan por esa ruta (ver figura).
El control del encendido/apagado se realiza mediante un microcontrolador PIC 16F877A y unos
drivers conectados a los terminales del puerto D, como indica la figura.

El sistema debe arrancar con todas las lámparas apagadas. Al apretar el pulsador conectado a
RA4, debe comenzar la siguiente secuencia de luces: L0, L2, L4, L6, L1, L3, L5 y L7, es decir,
primero las de la derecha y luego las de la izquierda. Al finalizar la secuencia, el ciclo debe
repetirse indefinidamente. El oscilador es XT de 4 MHz y el ciclo completo debe durar
(aproximadamente) 1 segundo.

No es necesario refrescar el WDT (perro guardián) y, si se utilizan interrupciones, no es


necesario salvar registros mientras se atienden.

EJERCICIO 9.3

Una variedad del ejercicio anterior consiste en hacer que las luces se enciendan por parejas y en
secuencia, es decir, L0 y L1, después L2 y L3 apagándose L0 y L1, después L4 y L5
apagándose L2 y L3, y finalmente L6 y L7 apagándose L4 y L5, para posteriormente repetirse
el ciclo. Para dar tiempo a ser observadas, el ciclo de encendido desde que se enciende la pareja
L0 - L1 hasta que vuelve a encenderse debe ser de (aproximadamente) 0,5 seg.
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 5

Escribir un programa en ensamblador que realice dicho control sabiendo que el oscilador es XT
de 4 Mhz.

EJERCICIO 9.4.-

Una variedad del ejercicio 9.3 es la siguiente: que cuando cada pareja de lámparas se encienda
no se apague la anterior. Cuando finalice la temporización de L6/L7 (con las otras 6 lámparas
también encendidas), deben apagarse todas un tiempo y comenzar de nuevo el ciclo.

No es necesario refrescar el WDT (perro guardián) y, si se utilizan interrupciones, no es


necesario salvar registros mientras se atienden.

EJERCICIO 9.5

Mediante un microcontrolador PIC 16F84 operando en modo RC con un oscilador de 4 MHz, se


desea controlar una máquina taladradora con las siguientes especificaciones:

- Al apretar el pulsador de arranque conectado al terminal RA0 se inicia el ciclo de


funcionamiento con un descenso rápido del taladro.

- Cuando la parte inferior del portabrocas activa el sensor conectado al terminal RA2
(pone RA2 a "0"), se activa un relé que hace que la broca gire. Simultáneamente el
descenso del taladro debe ser lento.

- Cuando la parte inferior del portabrocas activa el sensor conectado al terminal RA3
(pone RA3 a "0"), se considera que la pieza está taladrada y el taladro debe subir con
rapidez manteniendo el giro de la broca.

- Cuando el taladro en su regreso alcanza el final de carrera que está conectado al


terminal RA1 (pone RA1 a "0") debe detenerse la subida del taladro y desactivarse el
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 6

relé del giro de la broca. Además, debe activarse una señal acústica que avise del fin de
la operación.

- El nuevo ciclo comienza al apretarse de nuevo el pulsador de arranque

EJERCICIO 9.6

Para una determinada aplicación se necesita que los 8 segmentos de un display conectado al
puerto D de un microcontrolador PIC 16F877A parpadeen simultáneamente con una frecuencia
de 1 Hz (aproximadamente), es decir, 0,5 segundos encendidos y 0,5 segundos apagados. El
display debe iniciarse apagado y el parpadeo debe comenzar al apretar un pulsador conectado al
terminal RA4, como indica la figura. El parpadeo debe detenerse al apretar otro pulsador
conectado al terminal RB0 (ver figura). La inicialización del sistema se consigue mediante otro
pulsador conectado a la patilla MCLR (que no se analizará).

Escribir un programa en ensamblador que cumpla las especificaciones sabiendo que el oscilador
es de tipo XT de frecuencia 4 MHz y que los dos pulsadores no pueden apretarse a la vez. No es
necesario refrescar el perro guardián y, si se utilizan interrupciones, no es necesario salvar
registros mientras se atienden.

EJERCICIO 9.7

Se necesita que al apretar un pulsador conectado al terminal RB0 de un microcontrolador PIC


16F877A, un diodo LED conectado al terminal RD3 parpadee con una frecuencia de 0,1 seg, es
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 7

decir, 0,1 seg encendido y 0,1 seg apagado. El parpadeo debe detenerse al apretar otro pulsador
conectado a RA4. El oscilador es de cristal de cuarzo de 4 MHz.

Se pide: escribir un programa fuente que realice dicha función.

EJERCICIO 9.8

Para una determinada aplicación se necesita un cronómetro que debe medir 3 segundos y que
debe operar de la siguiente forma: inicialmente, en el display debe verse el número "3". Al
apretar el pulsador conectado a RA4, y transcurrido 1 segundo, debe aparecer el número "2".
Transcurrido otro segundo, debe aparecer el número "1" y transcurrido otro segundo el número
"0". Cuando debería verse un hipotético "-1", el display debe apagarse y quedar dispuesto para
un nuevo ciclo.

Para realizarlo se utilizará un microcontrolador PIC 16F877A con un oscilador de tipo XT de


frecuencia 4 MHz. El display es de cátodo común, es decir, los segmentos a, b, c,....g se
encienden con "1" en los respectivos terminales RD.

EJERCICIO 9.9

Para el circuito de la figura, inicialmente el display debe aparecer apagado. Al apretar el


pulsador conectado a RA4 deben ir apareciendo sucesivamente las letras: "H", "O", "L", "A" de
forma que cada una de ellas se vea durante un cuarto de segundo (aproximadamente). Tras
aparecer la A, deben volver a verse las letras indefinidamente.

El oscilador es de cristal y de frecuencia 4 MHz. El display es de cátodo común (los segmentos


a, b, c,....g se encienden con "1" en los terminales RD). Se pide: escribir un programa fuente que
cumpla con las especificaciones indicadas.
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 8

EJERCICIO 9.10

Se desea gobernar con un microcontrolador PIC 16F877A las luces situadas sobre el techo de
una UVI móvil (L0, L1, ... L7). Estas luces están conectadas a través de sendos drivers a los
terminales del PORTD de forma que L0 está conectada a RD0, L1 está conectada a RD1 y así
sucesivamente hasta L7 que está conectada a RD7, como indica la figura. Se pretende que al
accionar el pulsador conectado a la patilla RA4 del microcontrolador (ver figura), las luces se
activen iluminándose en primer lugar L0 y L4 y una vez transcurridos aproximadamente 0,2
segundos L0 y L4 se apaguen y se iluminen L1 y L5 para que, transcurridos otros 0,2 seg, se
apague L1 y L5 y se enciendan L2 y L6. Tras otros 0,2 seg. deben apagarse L2 y L6 y
encenderse L3 y L7 de forma que, tras estar otros 0,2 seg. encendidas, el ciclo finaliza y deben
encenderse de nuevo L0 y L4. De esa forma se obtiene, mirando desde encima, un efecto visual
de movimiento de luz de izquierda a derecha en las luces delanteras y de derecha a izquierda en
las traseras. El oscilador es de cristal de cuarzo de 4 MHz.

EJERCICIO 9.11

Se desean controlar con un microcontrolador PIC 16F877A los intermitentes de un automóvil


(los dos de la derecha conectados a RD0 y RD6 y los dos de la izquierda conectados a RD1 y
RD7 a través de sendos buffers) de forma que el ciclo completo dure 0,5 seg., es decir,
aproximadamente 0,25 seg. encendidos y 0,25 seg. apagados. La pareja de intermitentes que
está parpadeando en cada momento viene determinada por una señal digital exterior al
microcontrolador que está conectada a RA4 de forma que si esa señal es un "1" funcionan los
intermitentes de la izquierda y si es "0" los de la derecha. El oscilador es de cristal de cuarzo de
4 MHz.

EJERCICIO 9.12
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 9

Se desean controlar con un microcontrolador PIC 16F877A las luces de avería de un automóvil
(los cuatro intermitentes parpadeando simultáneamente) de forma que el ciclo completo dure 1
seg., es decir, aproximadamente 0,5 seg encendidos y 0,5 seg apagados. El parpadeo debe
comenzar cuando se apriete un determinado pulsador. El oscilador es de cristal de cuarzo de 4
MHz.

EJERCICIO 9.13

Para una determinada aplicación es necesario generar un parpadeo de aproximadamente 0,5 seg.
(es decir, 0,25 seg. encendido y 0,25 seg. apagado) en un diodo LED conectado al terminal RB3
de un microcontrolador PIC 16F877A, como se puede observar en la figura.

Dicho parpadeo debe comenzar al apretar el pulsador conectado al terminal RA4. Una vez
comenzado, el pulsador no tiene ningún efecto. El parpadeo se detiene mediante otro pulsador
externo conectado al terminal de reset (MCLR) del PIC (no se analizará). La frecuencia del
oscilador es de 1 MHz.

Se pide: escribir un programa en ensamblador que realice las especificaciones indicadas.

EJERCICIO 9.14

Se desea que cuando se apriete el pulsador conectado a RA4 (ver figura), los LEDs conectados a
PORTD, inicialmente apagados, realicen el barrido indicado, es decir, primero enciende el
conectado a RD7, tras 20 ms enciende también el conectado a RD6, y así sucesivamente hasta
encender los 8. Una vez transcurridos otros 20 ms (con todos encendidos) deben comenzar a
apagarse sucesivamente, es decir, en primer lugar se apaga el conectado a RD7, tras 20 ms se
apaga también el conectado a RD6 y así sucesivamente hasta apagarse todos. Transcurridos
otros 20 ms, el sistema debe repetir el ciclo si se aprieta de nuevo el pulsador. El oscilador es de
4 MHz.

Se pide: escribir un programa en ensamblador que realice las secuencias mencionadas.

No es necesario refrescar el WDT y, si se utilizan interrupciones, no es necesario salvar


registros mientras se atienden.
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 10

EJERCICIO 9.15

Se desea que, cuando se apriete el pulsador conectado a RA4, en los LEDs conectados a
PORTD se realice un barrido de izquierda a derecha seguido de otro de derecha a izquierda,
como indica la figura, estando en cada situación durante 30 ms. Una vez finalizadas las dos
secuencias, el sistema debe quedar listo para repetirlas si se vuelve a apretar el pulsador. El
oscilador es de 4 MHz. Inicialmente las luces deben estar apagadas.

EJERCICIO 9.16

El marcador de un polideportivo donde se juega a baloncesto necesita añadir un display de 7


segmentos donde se observe la cuenta descendente de las décimas de segundo, como indica la
figura. Dicho display estará controlado por un PIC 16F877A, cuyo oscilador es de 4 MHz, y se
activará cuando la cifra de menos peso de los segundos alcance el valor "0", momento en el cual
envía un "0" al terminal RA4 del PIC.

Transcurrida una décima de segundo, debe verse en el display el "9". Transcurrida otra décima
de segundo, el "8" y así sucesivamente. Cuando en el display aparezca el "0", debe permanecer
encendido y simultáneamente activarse una bocina (indicadora del final del partido) conectada
al terminal RD7 durante 1 segundo, transcurrido el cual, el sistema debe quedar listo para un
nuevo ciclo.
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 11

EJERCICIO 9.17

Para aumentar el nivel de ventas, un comerciante presenta una oferta que anuncia mediante un
rótulo rectangular de 1m x 0,8 m situado en el escaparate de su tienda. Para atraer la atención,
coloca en el perímetro del rótulo 8 bombillas cuyo encendido/apagado se controla (a través de
drivers) con los terminales del PORTD de un MCU PIC 16F877A, como indica la figura.

Se desea que inicialmente las 8 bombillas estén apagadas y que, al apretar el pulsador conectado
a RA4, se enciendan en secuencia y en el sentido de las agujas del reloj durante 0,5 seg.
aproximadamente (deben llegar a encenderse las 8 bombillas). Una vez finalizado este ciclo,
deben parpadear las 8 simultáneamente durante unos 4 seg. aproximadamente, transcurridos los
cuales volverán a la secuencia y así indefinidamente. El oscilador es de cristal de 4 MHz.

Se pide: escribir un programa en ensamblador que efectúe dicho control. No es necesario


refrescar el WDT y, si se utilizan interrupciones, no es necesario salvar registros mientras se
atienden.

EJERCICIO 9.18

Se desea realizar un pequeño juego electrónico basado en un MCU PIC 16F877A. Se trata de
acertar qué LED, de entre los cuatro conectados a los terminales RB3 - RB0, permanecerá
encendido tras apretar el pulsador conectado al terminal RA4. En cada momento debe de estar
encendido solamente uno de esos cuatro LEDs, pero el jugador no debe de saber cuál es. Al
apretar dicho pulsador, quedará encendido uno de ellos. La frecuencia del oscilador es de 4
MHz.
LECCIÓN 9: MICROCONTROLADORES PIC. TEMPORIZADORES (TMRs) 12

EJERCICIO 9.19

Para una determinada aplicación es necesario cronometrar 4 segundos y la cuenta debe


observarse en 4 diodos LED conectados a los terminales RB3 - RB0 del puerto B de un
microcontrolador PIC 16F877A. Inicialmente, deben estar encendidos los 4 LEDs. Al apretar el
pulsador conectado a RA4, y transcurrido 1 segundo, debe apagarse el LED de más peso, es
decir, el conectado a RB3. Transcurrido otro segundo, debe apagarse también el LED conectado
a RB2. Transcurrido otro segundo, el conectado a RB1 y transcurrido otro segundo deben
quedar apagados los 4 LEDs. Tras otro segundo, el sistema debe quedar dispuesto para un
nuevo ciclo.

La frecuencia del oscilador es de 4 MHz.

EJERCICIO 9.20

Se desea que cuando se apriete el pulsador conectado a RA4 se realice un barrido de izquierda a
derecha seguido de otro de derecha a izquierda, como indica la figura, estando en cada situación
durante 30 ms. Una vez finalizadas las dos secuencias, el sistema debe quedar listo para
repetirlas si se vuelve a apretar el pulsador. El oscilador es de 4 MHz. Inicialmente las luces
deben estar apagadas.

Se pide: escribir un programa en ensamblador que realice las secuencias mencionadas.

No es necesario refrescar el WDT y, si se utilizan interrupciones, no es necesario salvar


registros mientras se atienden.

Das könnte Ihnen auch gefallen