MICROCONTROLADORES
LABORATORIO 07
Manejo de Timer y las Interrupciones
- Capacidad Terminal
- Utilizar al microcontrolador en aplicaciones de control electrónico.
- Desarrollar y ejecutar programas en un microcontrolador PIC
- Programar y configurar interfaces básicas del microcontrolador.
2. Competencia Específica de la Sesión
CCS Compiler instalado
Entrenador de PICS
PIC16F877A

- Conocer el funcionamiento y la configuración de las interrupciones.
- Conocer el funcionamiento y la configuración del Timer Cero.
- Aplicar estos conocimientos en la realización de un cronómetro.
CCS Compiler instalado

4. Fundamento Teórico
INTERRUPCIONES Y TEMPORIZADORES
- Una interrupción es un aviso provocado por un módulo del PIC, por un cambio en el estado de un pin o un recordatorio de que ha pasado un cierto tiempo. Como su nombre indica este aviso interrumpirá la tarea que se este haciendo en ese momento y pasaremos a ejecutar una rutina de servicio o gestión de la interrupción.
- Además de los bits anteriores que afectan de forma global a las interrupciones, para cada fuente de interrupción hay tres bits asociados:
- IE (interrupt enable): determina si la interrupción está o no habilitada. Si no lo está, aunque la condición de la interrupción se cumpla, la interrupción no se producirá.
- IF (interrupt flan): indica si la condición de la interrupción se ha producido. Es responsabilidad del usuario borrar dicho bit antes de regresar de la ISR.
- IP (interrupt priority): indica si la prioridad asociada a la interrupción es alta (1) o baja (0). Obviamente, solo tiene efecto si está activado el modo de niveles de prioridad.
- Un temporizador es simplemente un contador que se incrementa con cada ciclo máquina (4 ciclos del oscilador). Dicho contador puede configurarse como de 8 o 16 bits. Cuando dicho contador rebosa y pasa de 0xFF a 0x00 (modo 8 bits) o de 0xFFFF a 0x0000 (modo 16 bits) la bandera IF asociada a la interrupción del TMR0 se pone a 1.
5.Desarrollo de tareas indicadas en el laboratorio:
- Realice los cambios necesarios para realizar un programa que CUENTE EN FORMA DESCENDENTE, (temporizador regresivo), bajo las siguientes condiciones:
- Al presionar pulsador en D0, incrementar SEGUNDOS. el temporizador aún no debe estar contando el tiempo. (sirve para configurar tiempo de cuenta).
- Al presionar pulsador en D1, iniciar CUENTA REGRESIVA desde los minutos previamente configurados.
- Si la cuenta llega a 00:00, congelar la cuenta y sonar BIP 3 veces.
- Considerando todo lo anterior agregar: que al presionar el pulsador en E1, incrementar MINUTOS y el temporizador aún no debe estar contando.
SOLUCIÓN MEDIANTE PROGRAMACIÓN
6. EVIDENCIA DE TRABAJO
7. OBSERVACIONES Y RECOMENDACIONES
OBSERVACIONES
- Se observó que para llevar a cabo la funcionalidad del programa, que al iniciar el cronómetro en cero minutos y segundos no ejecute la última condición de los tres BIP pedidos fue necesario declarar una nueva variable a la cual se le brindó como valor inicial cero.
- Para obtener en nuestra pantalla LCD como expresión inicial del cronómetro en 00:00 se realizó distintas modificaciones dentro del void timer cero, dentro de las cuales se usó la equivalencia tanto para minutos y segundos de "== -1" con el cual se podía verificar que las variables ya mencionadas ya llegaron al valor cero y se evite que la cuenta se vuelva a iniciar desde 255 esto a partir de la utilización de los 8 bits.
- Se observó que las funciones destinadas a cada pin que representaba un pulsador deben estar descritas dentro del bucle WHILE ya que de nos ser así no se podría ejecutar lo esperado.
- Se observó que para evitar la repetición constante de BIP'S entendiendo que solo se nos pedía que se repita tres veces, se propuso entonces que estos se detuvieran cuando únicamente el valor de nuestra nueva variable introducida retome el valor cero; si como alternativa se proponía solo adecuar que se ejecute tal acción solo cuando las variables minutos y segundos sean ceros se presentaba una confusión y al energizar el LCD ya se emitía la última acción la cual es la emisión de pitidos en buzzer.
RECOMENDACIONES
8. BIBLIOGRAFÍA
- Se recomienda la introducción de una nueva variable a la cual podamos otorgar un valor equivalente y esta misma pueda llevar a cabo las limitaciones en la programación y así evitar cruces en el orden de las funciones designadas.
- Se recomienda tomar bien en cuenta las indicaciones que se nos puedan brindar en el informe, ya que estas nos brindan las referencias para tomar el camino correcto en el desarrollo de nuestra programación para microcontroladores.
- Se recomienda el usar un delay después de presionar cada pulsador, esto con la finalidad de evitar falsos disparos y hacer que nuestra configuración de segundos y minutos sea lo más precisa posible ya que de lo contrario al presionar un pulsador, este aumentaría desproporcionalmente.
8. BIBLIOGRAFÍA
- Marin, Francisco (2007) Diseño basado en microcontroladores. Málaga: Universidad de Málaga. (004.16/M26D)
- Pereira, Fabio (2007) Microcontroladores PIC. Sao Paulo:s.n. (005.13/P43)
- José María Angulo Usátegui [y otros]. (2007) Electrónica digital y microprogramable .Madrid: Thomson. (621.381/A37/I)
9. INTEGRANTE
Condori Ortíz, Daniel Agustín C5 - A











