Logo Studenta

P4_Mendoza_MCyPLCs_21-2_Eca - Javier Mendoza

¡Estudia con miles de materiales!

Vista previa del material en texto

25-3-2021 
 
 
 
Manejo de 
Interrupciones. 
Practica 4. 
Alumno: Mendoza Ruiz Javier Federico. 
Institución: UNITEC Ecatepec. 
Licenciatura: Ingeniería Mecatrónica. 
Materia: Microcontroladores y PLCs. 
Profesor: Abundis Noyola Omar. 
 
Universidad Tecnológica de México. 
Ejercicio 1: Alarma Automóvil. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 1. Diagrama de flujo 
Alarma Automóvil. (Programa Principal) 
 
 
 
Figura 2. Diagrama de flujo Alarma Automóvil. (RSI) 
 
Código. 
 
Figura 3. Compilación en MplabX 
 
En la imagen anterior se muestra la correcta ejecución del programa. El 
procedimiento de este programa constaba primeramente de cambiar al banco 1 
para configurar el Puerto B como entrada y la línea 0 del Puerto C como salida, ya 
con los puertos configurados regresamos al banco 0 para finalizar con la 
configuración del programa modificando el registro INTCON para habilitar las 
interrupciones externas por cambio de estado, y limpiar el contenido de la línea 0 
del Puerto C. Después de finalizar los pasos anteriores mandamos al 
microcontrolador a un estado de bajo consumo para que este sea despertado 
cuando la interrupción sea activada, esta consiste en que al momento de activarse 
la interrupción externa por cambio de estado en cualquier línea de la 4 a la 7 del 
Puerto B se procede a activar la línea 0 del Puerto C como indicador para después 
volver al programa principal, y cuando se active la línea 0 del Puerto B se volverá 
a la subrutina de interrupción y se desactivará el RC0 para poder regresar al 
programa principal y esperar a que ocurra otra interrupción mientras se encuentra 
en un estado de bajo consumo. 
El funcionamiento de este programa se muestra a continuación en con las capturas 
de pantalla obtenidas del software MplabX. 
*El código completo se adjunta aparte en formato .txt 
Simulación. 
 
Figura 4. Simulación en MplabX. Activación del Sensor 2. (Pin RB5) 
 
Figura 5. Simulación en MplabX. Desactivación por el pin RB0. 
 
 
 
 
Ejercicio 2: Alarma Casa. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 6. Diagrama de flujo 
Alarma Casa (Programa Principal). 
 
 
 
 
Figura 7. Diagrama de flujo 
Alarma Casa (RSI). 
 
Código. 
 
Figura 8. Compilación en MplabX 
 
En la imagen anterior se muestra la correcta ejecución del programa. El 
procedimiento de este programa constaba primeramente de cambiar al banco 1 
para configurar el Puerto B como entrada y el Puerto C como salida, ya con los 
puertos configurados regresamos al banco 0 para finalizar con la configuración del 
programa modificando el registro INTCON para habilitar las interrupciones 
externas por cambio de estado, y limpiar el contenido del Puerto C. Después de 
finalizar los pasos anteriores mandamos al microcontrolador a un estado de bajo 
consumo para que este sea despertado cuando la interrupción sea activada, esta 
consiste en que al momento de activarse la interrupción externa por cambio de 
estado en cualquier línea de la 4 a la 7 del Puerto B se procede a activar la línea 4 
del Puerto C y la correspondiente línea respecto al Puerto B como indicador para 
después volver al programa principal, y cuando se active la línea 0 del Puerto B se 
volverá a la subrutina de interrupción y se desactivará el RC0 para poder regresar 
al programa principal y esperar a que ocurra otra interrupción mientras se 
encuentra en un estado de bajo consumo. 
El funcionamiento de este programa se muestra a continuación en con las capturas 
de pantalla obtenidas del software MplabX. 
*El código completo se adjunta aparte en formato .txt 
Simulación. 
Figura 9. Simulación en MplabX. Activacion del Sensor 1 (Pin RB4) 
Figura 10. Simulación en MplabX. Desactivación por el pin RB0. 
 
Cuestionario. 
 
1. ¿Qué es una interrupción? 
Es una desviación del flujo de control del programa originada asíncronamente que 
no se halla bajo la supervisión de las instrucciones. 
2. ¿Para qué sirve el vector de interrupción? Y ¿qué posición ocupa en la memoria 
de programa? 
Es un mecanismo que permite localizar las subrutinas de interrupción y esta ubicado 
en la dirección 4 de la memoria de programa. 
3. ¿Cuántos tipos de interrupción se pueden manejar en el PIC16F873A? 
Con el PIC16F873A se pueden trabajar hasta 13 tipos de interrupciones. 
4. ¿Cuál es el nombre del registro de propósito especial encargado de configura las 
interrupciones? 
INTCON 
5. Describa ampliamente la función del bit GIE. 
Este bit es “el botón de encendido o apagado” con el que se habilitan o deshabilitan 
todas las interrupciones. Para poder trabajar con alguna de los 14 tipos de 
interrupción es necesario que además de activar el bit GIE se active su 
correspondiente bit. 
6. ¿Cómo funciona la instrucción RETFIE? 
Esta instrucción esta compuesta por 2 acciones, la primera salir de la subrutina y 
regresar al programa principal y la segunda, habilitar nuevamente las interrupciones 
poniendo a 1 el bit GIE del registro INTCON. 
7. ¿Qué pasa con los valores que están cargados en los puertos configurados como 
salida cuando se habilita la instrucción SLEEP? 
Estos valores no se ven afectados por la instrucción debido a que se encuentran 
almacenados en un circuito Latch y estos permanecerán ahí hasta que se modifiquen 
los valores. 
8. Cuando está un PIC en el modo de bajo consumo de energía, ¿cuáles son las 
acciones que se pueden realizar para que el PIC vuelva a ejecutar las instrucciones 
de un programa? 
El microcontrolador solo saldrá de este estado cuando sea Reseteado o al ser 
activada una Interrupción. 
 
 
Conclusiones. 
Con la presente practica aprendí cuales son los tipos de interrupciones con los 
que trabaja el PIC16F873A, la configuración que se debe realizar para hacer 
uso de estas en el registro INTCON, además de aplicar la interrupción por 
cambio de estado para los ejercicios 1 y 2. En anteriores practicas ya habíamos 
hecho uso de la interrupción correspondiente al desbordamiento del TMR0 y TMR1. 
Las interrupciones por cambio de estado son muy útiles porque nos ayudan a evitar 
que el microcontrolador gaste recursos al estarse preguntado si un bit se encuentra 
activado o no, con las interrupciones solo necesitamos crear la subrutina en donde 
indiquemos que es lo que queremos que haga el microcontrolador cuando se active 
alguno de los pines correspondientes a este tipo de interrupción y mandarlo a un 
estado de bajo consumo para que sea despertado únicamente cuando sea necesario. 
Este tipo de acciones podrían no parecer útiles a simple vista en un proyecto escolar 
porque casi siempre en estos proyectos solo se busca demostrar lo aprendido durante 
un breve periodo de tiempo y después de desarma el circuito elaborado, pero esto es 
muy importante cuando se trabaja con muchos circuito o cuando se maneja una 
mayor cantidad de energía para su operación, y así al poder mandar al 
microcontrolador a un estado de bajo consumo nos aseguramos que solo sea activado 
cuando se requiere.

Continuar navegando