You are on page 1of 7

INSTITUTO DE INVESTIGACIN EN

COMUNICACIN PTICA

UNIVERSIDAD AUTNOMA DE SAN LUIS POTOS

PRCTICA 7 DE MICRO CONTROLADORES:


ALARMA DIGITAL

07 DE ABRIL DEL 2017

OLIVER JESS ESPINOSA OLVERA


INTRODUCCIN
En sta prctica se ha desarrollado un sistema de prevencin, similar al
funcionamiento del de un automvil, que indica mediante un sonido cuando se ha
activado uno de sus sensores.

OBJETIVO DE LA PRCTICA
Hacer un programa que implemente una alarma digital usando las interrupciones
INT, RB y TMR0. Cuando la alarma est activada pero no se encuentre disparada,
debe encender y apagar el LED conectado a la terminal RB1cada 500 ms.
El disparo de la alarma se har por medio de teclas (externas a la tarjeta), que debern
conectarse a las terminales INT/RB0, RB4, RB5, RB6 y RB7, a travs del conector
J1.
Cando se dispare la alarma se deber generar una seal audible por medio del Buzzer,
y el LED conectado a RB1 quedar encendido permanentemente en cuanto no se
desactive la alarma y vuelva a las condiciones iniciales.
La desactivacin de la alarma deber hacerse por medio de la tecla S2, y S3 deber
activar la alarma.

MATERIAL Y EQUIPO UTILIZADO


Parte de la prctica realiz haciendo uso del programa MPLAB, mientras que otra
parte se llev a cabo en un programador especial para el programa MPLAB y una
tarjeta programable SD-PIC18F4550 como se aprecia en la figura 1. Tambin se us
una protoboard en la que se implementaron resistencias de 10 K y push buttons.
Figura 1. Tarjeta programable SD-PIC18F4550

DIAGRAMA ESQUEMTICO DEL CIRCUITO

Para cada uno de los push buttons se sigui el siguiente diagrama compuesto
con una resistencia de 10K y un push button.

Figura 2. Rb0, Rb4, Rb5, Rb6 y Rb7


PROGRAMA DOCUMENTADO
Figura 2. Comandos utilizados en los programas.

DESARROLLO DE LA PRCTICA
Dentro de la subrutina INICIA configuran los pines del puerto A como entradas-
salidas (E/S) digitales, y se eligieron RA4 y RA5 como entradas. Se programaron
como entradas los bits RB0 y RB4 a RB7 y como salida el bit RB1. Se configuraron
los bits RC0 a RC6 como salida y RC7 como entrada. Se le asign el valor inicial al
preescalador de 0x87 mediante el registro OPTION_REG. Se carg un 80 en el
registro INTCON, y se aadieron las variables FLAG y CONT. FLAG es una
variable de un bit que se inicia en 0, y CONT, un contador iniciado en 50 (cargando
un 32). Tambin se apag el TRIAC.
Para esta prctica se hizo uso de 2 rutinas de interrupcin, la del TMR0 y la de RB.
En la rutina de interrupcin del RB, ponemos el estado del bit FLAG en 1, el puerto
RB1 tambin en 1, y le asignamos un valor de 16 al preescalador. Esto ltimo se hace
seleccionando el banco 1, y cargando un 83 en el registro OPTION_REG.
En la rutina de interrupcin de TMR0 preguntamos el estado del bit FLAG. Si es 0,
preguntamos el valor de un contador que previamente iniciamos en 50 (cargando un
32). Si el contador no est en 0, lo decrementamos en uno y saltamos al final de esa
rutina, donde se le asigna un valor de 3D, que equivaldra a un 61, al registro TMR0.
Esta rutina se repite mientras el contador se decrementa hasta llegar a 0. Una vez que
el contador lleg a 0, preguntamos el estado del puerto RB1, y lo cambiamos de 0 a
1 o de 1 a 0 segn sea el caso, y se carga un 32 de nuevo el contador. El valor de 3D
que se le carga al TMR0 nos genera un retraso de 10 milisegundos. Al repetir el
proceso 50 veces, el estado del RB1 cambiara de 0 a 1 o de 1 a 0 cada 500
milisegundos. Esta rutina cuenta con una segunda parte, en el caso de que la bandera
FLAG est en 1. En esta parte se pregunta el valor del bit de RC0, y se cambia de 0
a 1 o de 1 a 0 dependiendo de su estado inicial, adems de cargar un 64 en el registro
TMR0.
En la rutina MAIN, preguntamos el estado de la tecla S3. Si se ha presionado,
preguntamos si ya se solt. Si ya se solt, ponemos a 0 el bit de FLAG, seleccionamos
el banco 1 para manipular el preescalador, y cargamos un 87 al registro
OPTION_REG, que equivaldra a un 256. Regresamos al banco 0, y cargamos un B8
en el registro INTCON para activar las interrupciones. De este modo la alarma queda
activada, y cada 500 milisegundos el led del puerto RB1 enciende y apaga. Una vez
que se genera una interrupcin en los puertos RB0, RB4, RB5, RB6, o RB7, se activa
la interrupcin de RB. Esto incluye que la bandera FLAG cambie a 1, por lo que
tambin se activa la 2da parte de la rutina TMR0, donde se carga el 64 en el TMR0
para obtener la frecuencia deseada de la seal audible, y, se alterna constantemente
el valor del bit de RC0 de 0 a 1 y viceversa. De este modo la alarma permanece
disparada.
Si se presiona S2, una vez que se haya soltado, apagamos el led del puerto RB1, y
ponemos a 0 todos los bits del registro INTCON para desactivar todas las
interrupciones y apagar la seal audible.

CONCLUCIONES
La prctica fue realizada de manera exitosa, obteniendo as el aprendizaje necesario
para utilizar el puerto B.

You might also like