Diseño de Controladores Digitales.



Documentos relacionados
PENTA MANUAL DE USUARIO

Para comenzar realizaremos el ejercicio-ejemplo de poner a titilar un led.

Control, Instrumentación e Instalaciones Ingeniería Ambiental

La central reproduce un sonido largo si los datos de configuración son almacenados de forma correcta, y dos sonidos cortos si hay un error.

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

AUTOMATIZACIÓN INDUSTRIAL

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Guía de Usuario. Premier 24/48/88/168/640

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

***EXPLICACIÓN DEL PROGRAMA:***

Introducción. Asterisco ( * ) Se utiliza para activar funciones, marcándose antes del código correspondiente.

Manual de operación Tausend Monitor

MANUAL DE USUARIO TITAN CRK 300 (V. 1.2d)SP 30 AGOSTO 2004 CENTRAL DE INCENDIOS ANALÓGICA DIRECCIONABLE DE TRES BUCLES AMPLIABLE A 96 CON CAPACIDAD

Manual para la utilización de PrestaShop

ACTIVAR EL SISTEMA: ARMAR PRESENTE / AUSENTE :

Capítulo 9. Archivos de sintaxis

CONDICIONES TECNICAS DE FUNCIONAMIENTO

SISTEMA DE ALARMAS. Manual de usuario

ENSAMBLE Y CONFIGURACIÓN DEL TELÉFONO CELULAR

HOW TO SOBRE FIREWALL

MANUAL DEL USUARIO Y GUÍA DE SOPORTE TÉCNICO

Programación Básica de su Alarma GSM LL2000 Wireless Alarm System. Inserte su tarjeta SIM. Programación del sistema

15 CORREO WEB CORREO WEB

Manual de Usuario "IDEC"

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Manual del usuario. - Uso del sistema de alarma - Accionar ante una evento - Números de contacto

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

COMANDO PARA ENTRAR A PROGRAMACION ES: 8888#

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

Enermol GRUPOS ELECTROGENOS SOLUCIONES EN ENERGIA

CheckOUT HELP DESK. Una vez en sesión, UD. Podrá registrar problemas, consultas y hacer un seguimiento de los problemas que UD. ha ingresado.

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

3.1. Guardar un libro de trabajo

Teclado sobre una PDA para Personas con Parálisis Cerebral

Vehicle Security System VSS3 - Alarm system remote

VOCALISER. Manual de Usuario VOCALISER

Software de Control - Trol2002

Guía rápida para la activación de la Alarma

Web Publishing con LabVIEW (I)

Sistema de alarma inalámbrico 8 zonas inalam. 4 alam. (AF-002) Tabla de Contenido

Sistema de Alarma Doméstico de Línea Fija

MANUAL DE CONFIGURACIÓN CORREOS ISF.ES

2_trabajar con calc I

Manual de uso. Manual de uso - citanet 1

Sube Selector Canales. Canal. Baja. Tema 4: Bases Matemáticas II. 4.1 Sistemas con memoria o secuenciales Introducción.

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

Nombre del estudiante: Grimaldo velazquez Rafael. Herrera Díaz Jefree. Campus: san Rafael

1- Qué es SimonVOX.BASIC Pág Antes de usar su central SimonVOX.BASIC Pág Como utilizar el sistema con los pulsadores Pág.

ARMADO EN SILENCIO (SIN SONIDO DE CONFIRMACIÓN)

SIMULADOR DE SISTEMAS DE EVENTOS DISCRETOS

Guía Rápida ELECTRONICA

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

18. Camino de datos y unidad de control

Introducción al Sistema

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

HIPERVÍNCULOS. Es posible asignar un vínculo a un texto, a una imagen, o a parte de una imagen

GUÍA PARA INICIAR UN TRÁMITE DESDE LA OFICINA VIRTUAL

COMUNICACION DE PLC S MEDIANTE EL PUERTO RS- 485 Y MONITOREADO POR PANTALLA.

Curso sobre Microcontroladores Familia HC9S08 de Freescale

En esta sección revisaremos como dar de alta cuentas de clientes así como los diferentes ajustes que se pueden aplicar a las mismas.


podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid

Guía del usuario de teléfono de la Universidad Pablo de Olavide

Pantalla HMI como maestro 3 PLC esclavo

2º Introducimos 1+primer número para envíos sms+ok. Por ejemplo, si queremos que nos envié los SMS al teléfono 666,123,456, introduciremos:

Curso sobre Controladores Lógicos Programables (PLC).

Módulo II - PowerPoint

Curso sobre Controladores Lógicos Programables (PLC).

Programación básica de su kit de alarma GSM

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

Actividad 4: Comunicación entre PLC s vía Ethernet

QUÉ ES UN NÚMERO DECIMAL?

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

MANUAL DE USUARIO SISTEMA DE FACTURACION ELECTRÓNICA

MANUAL SERVICIOS TELEFONIA FIJA

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA

Operaciones con Temporizadores

SY120SA Series. Manual de Instalación y Operación. Version by SYRIS Technology Corp.

Enviar y recibir mensajes a través de la plataforma

1 Ejercicios varios. 1.1 Llenado automático de una tolva de grano

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL USUARIO CENTRAL INCENDIOS URANO

INGENIERIA EN MICROCONTROLADORES. Maquinas de Estado. Introducción

MANUAL DE FACTURACIÓN TOUCH SCREEN

Introducción a la plataforma Moodle Aníbal de la Torre Plataforma Moodle. Accediendo a los contenidos

CÓMO CREAR NUESTRO CATÁLOGO

Manual de usuario. Autor: Oriol Borrás Gené.


MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

MODELO 2700A. (Antena) (Sirena cableada) (Teclado o panel) (A la línea de teléfono ) (El adaptador de corriente ) (Teléfono opcional al lado)

Índice. Generalidades Pág. 2

Para descargar la versión más reciente de Skype accedemos al sitio web de Skype y luego hacemos clic en Descargar Skype para escritorio de Windows.

MANUAL DEL CONTROLADOR DEPORTIVO. Modelo Master 103 / Master 203

Sistema de Alarma de. Seguridad G5. RC-80 Guía Rápida. Versión Guía 1.0

GUÍA DE USUARIO DEL CORREO

Servicios Educativos Del Estado De Chihuahua Sistema Integral de Presupuestos y Materiales. Indice. Introducción Barra de Herramientas...

Transcripción:

Universidad Nacional de Quilmes. Ingeniería en Automatización y Control Industrial. Diseño de Controladores Digitales. Presentación final. Proyecto de aplicación del Microcontrolador MC68HC11F1. Diseño de una Alarma para domicilio. Fecha: 28-12-00. Docente: Sille, Germán. Alumnos: Galicchio, Pablo. Scarfó, Germán A.

Diseño de una Alarma para domicilio Página 2 de 20 Alarma digital de última generación. Descripción general. Esta alarma está diseñada para un fácil y rápido adaptamiento a sus funcionalidades. Consiste principalmente en la utilización de sensores inductivos, para detectar la apertura de puertas y ventanas y un sensor de movimiento. El modelo aquí presentado posee tres sensores inductivos, uno para la puerta del frente, uno para alguna ventana y el tercero aplicado a la puerta lateral. El tratamiento para cada uno de los sensores es de forma diferenciada. Para la utilización de las distintas funciones está provista de un teclado matricial, indicadores lumínicos (leds y un display de siete segmentos), un parlante para avisar de los acontecimientos, y un pulsador de activación inmediata. El tratamiento aplicado a los distintos sensores, cuando el sistema está armado, es el siguiente: 1- Para la puerta del frente se cuenta con un retardo de treinta segundos, luego de detectada la señal de que esta se abrió, ya que debe dársele tiempo al propietario de poder desarmar el sistema antes que se active la alarma. 2- Los sensores de la ventana, la puerta lateral y el detector de movimiento producen una activación inmediata de la alarma, ya que no son lugares por donde el morador pueda ingresar normalmente. El sensor de movimiento lleva una alimentación de 12V y, al igual que los otros sensores, se comporta como una llave abierta o cerrada según la circunstancia. Esta capacidad es la que se aprovecha en la implementación del sistema, conectando los sensores entre Vcc y un pin de algún port, conocidos ambos, lo que permite detectar si la llave se encuentra abierta o cerrada. Las funciones de armado del sistema y desactivación de la alarma sólo son posibles a través del teclado. El armado se realiza con la sola condición de apretar una tecla y para lograr apagar la alarma es necesario ingresar la clave correspondiente. El sistema utiliza una clave tres dígitos. En el momento del armado se realiza una revisión de todos los sensores, para verificar su correcto funcionamiento y saber si las aberturas se encuentran cerradas. Luego de este test hay una espera treinta segundos y posteriormente el sistema se encuentra armado. El pulsador de activación inmediata tiene una prioridad especial sobre cualquier situación en que se encuentre el sistema. Su función es la de actuar como botón de pánico, esto se utiliza para poder activar la alarma en caso de alguna emergencia, cuando los ocupantes se encuentren dentro del domicilio. Para poder realizar la cuenta de los tiempos de espera, se programan los timers y se utiliza la posibilidad de enmascarar o no sus interrupciones. Cuando

Diseño de una Alarma para domicilio Página 3 de 20 es necesario contar el tiempo se habilita la interrupción, y cuando no es necesario, la interrupción está desabilitada. Para poder realizar el sonido de la alarma, también se aprovecha un timer, programándolo, para que el llegar su interrupción, cuando se la atiende, se envía un pulso que a cada llamada invierte su valor, logrando con esto una señal periódica cuadrada. Instrucciones de funcionamiento. Una vez que haya conectado su central de alarma con poco puede comenzar a disfrutar de la tranquilidad que esta le brinda. Armando el sistema. Para lograr esta operación sólo necesita presionar la tecla (*). En este momento la central realiza un diagnóstico del sistema. Para este diagnóstico se cuenta con cuatro indicadores lumínicos que le servirán para identificar posibles fallas o descuidos. Pasada esta etapa, el sistema se encuentra armado (deberá encenderse el led sistema armado ) y listo para cazar a los amigos de lo ajeno. Detectando fallas. Como se dijo arriba, durante la orden de armado usted debe observar los leds indicadores. Si alguno de éstos se encontrare encendido al dar la orden de armado, está indicando que algún sensor se encuentra fuera de servicio o, según la indicación puede ser: Puerta del frente: ésta se halla abierta, debe cerrarla para permitir el armado. Puerta lateral: si sale de casa, ciérrela o alguien podrá entrar a pasear. Ventana: verifique que está cerrada. Garaje: el sensor está descompuesto o el gato anda por allí. Luego de identificar el problema, puede intentar nuevamente el armado. Botón de pánico. Como medida de seguridad extra, el sistema cuenta con un pulsador que le permitirá a usted activar la alarma en cualquier circunstancia, con sólo presionarlo. Para poder utilizarlo no es necesario que el sistema se encuentre armado, ya que, si usted se encuentra dentro del domicilio e ingresan los malechores, necesitará activar de inmediato la alarma. Apagando la alarma. Una vez que se ha producido algún incidente, que origine en el encendido de la alarma, ésta sólo podrá ser apagada mediante el ingreso de la clave personal del sistema. Para que el sistema atienda su pedido de ingresar la clave, debe presionar la tecla (#), verá en el display la señal indicadora y seguidamente puede ingresar la clave según el orden establecido: centenas, decenas y unidades. Si la clave tecleada es la correcta, la alarma dejará de sonar. En caso

Diseño de una Alarma para domicilio Página 4 de 20 de que comience a ingresar la clave y se equivoque, podrá presionar la tecla (#) para volver a comenzar con el ingreso de la clave. Desarmando el sistema. La única forma de realizar esta operación, como la anterior, es mediante el ingreso de la clave personal del sistema. Los pasos son los mismos que los descriptos arriba. Cuando logre su cometido observará que el led indicador se apaga. Cambiando la clave. El sistema debe estar desarmado. Los pasos para realizar esta tarea son: 1. Presionar la tecla numeral. 2. Ingresar la clave vieja. 3. Luego verá la indicación en el display ( C ). 4. Presionar nuevamente numeral. 5. Ingresar la nueva clave. Luego de estos pasos el sistema ya está programado con la clave por usted elegida. Clave personal del sistema: 284. Fotos del proyecto. Vista de la maqueta

Diseño de una Alarma para domicilio Página 5 de 20 Tablero de comandos Interiores del tablero Sensores interiores de la maqueta

Diseño de una Alarma para domicilio Página 6 de 20 Diagramas de flujo de la aplicación. COMIENZO -ASIGNAR SP -PROGRAMAR PORTS -HAILITAR INTERRUPCIONES -DECLARACION DE VARIABLES 1 MASKP=PORTD PANICO MASKA=PORTG CONECTAR MASKN=PORTG CAMBIO CLAVE PANICO ALARMA NUMERAL 1

Diseño de una Alarma para domicilio Página 7 de 20 ALARMA -HABILITAR INTERRUPCION DEL OC2 FIN NUMERAL TECLA no si Tecla = # MUESTRA n no TECLA si Digitos=3 Tecla no =U,D,C si MUESTRA H 1

Diseño de una Alarma para domicilio Página 8 de 20 CONECTAR SENSAR TODOS LOS DETECTORES ERROR=1 ERROR=0 no si 1 MASKI1=P0RTG si HABILITA TIMER OC4 PANICO MASKi2=PORTG si PANICO MASKI3=PORTG si PANICO MASKM=PORTG si PANICO MASKP=PORTD si PANICO MASKN=PORTG si PANICO

Diseño de una Alarma para domicilio Página 9 de 20 CAMBIO CLAVE NUMERAL MUESTRA C NUMERAL -CLAVEU =CLAVETECU -CLAVED=CLAVETECD -CLAVEC=CLAVETECC 1 Listado comentado del código programado. PORTA EQU $1000 PORTAx EQU $0 DDRA EQU $1001 PORTG EQU $1002 DDRG EQU $1003 PORTB EQU $1004 PORTF EQU $1005 PORTC EQU $1003 DDRC EQU $1006 PORTD EQU $1008 DDRD EQU $1009 PORTE EQU $100A TOC2 EQU $1018 TOC4 EQU $101C TMSK1 EQU $1022 TFLG1 EQU $1023 TFLG1x EQU $23 SPCR EQU $1028 org $0 ; Esta la direccion de comienzo del programa. Comienza: ; Esta la direccion de comienzo del programa. lds #$3FF ; Inicializacion del SP. ldaa #0 ; Seteamos los puertos A y G como entrada,

Diseño de una Alarma para domicilio Página 10 de 20 staa DDRA ; colocando en cero sus DDR. staa DDRG ldaa #%11111000 ; Seteamos como salida los pines libres del staa DDRD ; PORTD. ldaa #0 staa SPCR ; Colocamos en cero el registro SPCR. ldaa #0 ; Limpiamos el puerto D. staa PORTD cli ; Habilitamos interrupciones enmascarables. jmp Main ; Salto al flujo principal del programa. ;Nuestras definiciones de variales. ClaveU: BYTE $4 ; La clave del sistema, unidades. ClaveD: BYTE $8 ; La clave del sistema, decenas. ClaveC: BYTE $2 ; La clave del sistema, centenas. ClaveTecU: BYTE $0 ; Valor de la clave tecleada, unidades. ClaveTecD: BYTE $0 ; Valor de la clave tecleada, decenas. ClaveTecC: BYTE $0 ; Valor de la clave tecleada, centenas. org $024 ; Comienzo de la tabla usada para prender el ; display con lo tecleado. BYTE %11111010 ; 0 BYTE %10100000 ; 1 BYTE %11010110 ; 2 BYTE %11110100 ; 3 BYTE %10101100 ; 4 BYTE %01111100 ; 5 BYTE %01111111 ; 6 BYTE %11100000 ; 7 BYTE %11111111 ; 8 BYTE %11111100 ; 9 BYTE %11101110 ; * ( A ) ; Tabla usada para guardar el numero tecleado. BYTE $0 BYTE $1 BYTE $2 BYTE $3 BYTE $4 BYTE $5 BYTE $6 BYTE $7 BYTE $8 BYTE $9 ;Nuestras definiciones de variables. ERROR: BYTE 0 ; La variable para leer los sensores. ; Mascaras para buscar los valores tecleados. Mask0: BYTE %00001000 ; Esta en el portg. Mask1: BYTE %00000001 ; Esta en el porta. Mask2: BYTE %00000010 ; Esta en el porta. Mask3: BYTE %00000100 ; Esta en el porta. Mask4: BYTE %00001000 ; Esta en el porta. Mask5: BYTE %00010000 ; Esta en el porta. Mask6: BYTE %00100000 ; Esta en el porta. Mask7: BYTE %01000000 ; Esta en el porta. Mask8: BYTE %10000000 ; Esta en el porta.

Diseño de una Alarma para domicilio Página 11 de 20 Mask9: BYTE %00000001 ; Esta en el portg. MaskA: BYTE %00000010 ; Esta en el portg, el asterisco. MaskN: BYTE %00000100 ; Esta en el portg, el numeral. MaskI1: BYTE %00010000 ; Esta en el portg, ind. 1, puerta. MaskI2: BYTE %00100000 ; Esta en el portg, ind. 2, ventana. MaskI3: BYTE %01000000 ; Esta en el portg, ind. 3, puerta lateral. MaskM: BYTE %10000000 ; Esta en el portg, mov. para el garage. MaskP: BYTE %00000100 ; Esta en el portd, el boton de panico. Timer2Ac: BYTE 0 ; La variable para reconocer el timer OC4. Timer1Ac: BYTE $1 ; La variable para reconocer el timer OC2. Digitos: BYTE $0 ; La cantidad de digitos tecleados. InClave: BYTE $0 ; Valor del digito ingresado. Conec: BYTE $0 ; Variable para salir de la casa. AUX: BYTE $0 ; Variable sin importancia. NEWCLAVE: BYTE $FF ; Variale para indicar el cambio de clave. ; FLUJO PRINCIPAL DEL PROGRAMA. Main: clr Conec ; Limpiamos la variable ldaa PORTD ; Leemos el portd. anda MaskP ; Buscamos que el pulsador este apretado. bne PanicoA2 ; Saltamos a la funcion de Panico. ldaa PORTG ; Leemos el portg. anda MaskA ; Buscamos que se apriete el asterisco. bne ConectarA1 ; Saltamos a la funcion de Conectar. ldaa PORTG ; Leemos el portg. anda MaskN ; Buscamos que se apriete el numeral. bne CambioCla ; Saltamos a la funcion de Cambiar la clave. jmp Main ; Volvemos al comienzo de este flujo. ;Rutina para contar treinta segundos, continuacion... Treinta: ldaa TSEG1 ; Vemos el valor de TSEG1 comparandolo con cmp #0 ; cero. beq DecT2 ; Si es asi saltamos -> dec TSEG1 ; Decrementamos el valor de TSEG1. Salir: ldaa #$10 ; Limpia el flag de interrupcion del OC2. staa TFLG1 Final: rts ; Volvemos al lugar de partida. DecT2: ldaa #$FF ; Incializamos otra vez TSEG1. staa TSEG1 dec TSEG2 ; Decrementamos TSEG2. ldaa TSEG2 cmp #0 ; Si es cero ya paso el tiempo deseado. beq Enmas ; Saltamos para enmascarar. jmp Salir ; Sino lo seguimos usando. Enmas: ; Para no atender la interrupcion del OC2 ldaa #$0 ; lo inhabilitamos en la mascara. staa TMSK1 ldaa #1 ; Variable para saber que termino el tiempo. staa Conec ldaa #$FF ; Dejamos inicializada TSEG1.

Diseño de una Alarma para domicilio Página 12 de 20 staa TSEG1 ldaa #$2 ; Dejamos inicializada TSEG2. staa TSEG2 clr Timer1Ac ; Limpiamos la variable. clr PORTB ; Apagamos la C del display. jmp Final ; Saltamos para salir TSEG1: BYTE $FF ; El conteo interior. TSEG2: BYTE $2 ; El conteo exterior. ;Rutina para que suene el parlante. Parlante: neg BIT ; Invertimos el valor la variable. ldaa BIT anda #%00100000 ; Hacemos esto para enviar un bit solo al pin staa PORTF ; donde esta el parlante. ldaa #$40 ; Limpiamos el flag de interrupcion del OC2. staa TFLG1 ldaa FRECU ; Para que cuente lo mismo siempre debemos adda TOC2 ; sumar. staa TOC2 ; Fijamos duracion pulso. rts ; Vuelve a la rutina principal BIT: BYTE $1 ; La variable para el pulso. FRECU: BYTE $13 ; El ciclo de la onda. ;Etiquetas por el largo de los saltos. PanicoA2: jmp PanicoA1 ConectarA1: jmp Conectar ;Rutina para contar treinta segundos. org $D6 ; Direccion a donde apunta el vector de int. ; del timer OC4. jsr Treinta ; Llamamos a la funcion usada. rti ; Retornamos al lugar de partida. ;Rutina para que suene el parlante. org $DC ; Direccion a donde apunta el vector de int. ; del timer OC2. jsr Parlante ; Llamamos a la funcion usada. rti ; Retornamos al lugar de partida. ;Funcion para cambiar la clave. CambioCla: jsr Numeral ; Debe teclearse la clave vieja antes de poder ldaa #%01011011 ; cambiarla. staa PORTB ; Prendemos la C que indica la funcion. clr NEWCLAVE ; Limpiamos la variable para usarla debajo. jsr Numeral ; Vamos a buscar la nueva clave. ldaa ClaveTecU ; Guardamos los valores tecleados, la nueva staa ClaveU ; clave. ldaa ClaveTecD

Diseño de una Alarma para domicilio Página 13 de 20 staa ClaveD ldaa ClaveTecC staa ClaveC inc NEWCLAVE jmp Main ; Clave cambiada, volvemos al MAIN. ;*********************************************************************** ;Funcion para cuando se presiona el boton de panico. Panico: jsr Alarma ; Llamamos al encendido del parlante. ldaa #%11001110 ; Cargamos una P. staa PORTB ; La mostramos en el display. jsr Numeral ; Vamos a esperar el codigo. jmp Main ;Funcion para activar el timer que hara sonar el parlante. Alarma: ldaa #$40 ; Colocamos un uno en OC2I para habilitar las staa TMSK1 ; interrupciones del timer OC2. rts ;Funcion para armar el sistema. Conectar: clr PORTF ; Apagamos los leds que indican los errores. clr ERROR ; Limpiamos la variable. ldaa PORTG ; Leemos el portg, la puerta. anda MaskI1 ; Para saber si esta abierto el sensor. beq Error1 ; Si esta abierto -> jmp OkI1 ; Sino saltamos a ver el otro sensor. Error1: ldab #%00000010 ; -> lo marcamos en el led correspondiente, stab PORTF ; y damos valor a Error. stab AUX ldaa #1 staa ERROR OkI1: ldaa PORTG ; Leemos el portg, la ventana. anda MaskI2 ; Para saber si esta abierto el sensor beq Error2 ; Si esta abierto -> jmp OkI2 ; Sino saltamos a ver el otro sensor. ;Etiqueta por el largo de los saltos. MainA1: jmp Main Error2: ldab #%00000100 ; -> lo marcamos en el led correspondiente. orab PORTF ; Si habia otro error la se al se mantiene, stab PORTF ; y damos valor a Error. ldaa #1 staa ERROR OkI2: ldaa PORTG ; Leemos el portg, la puerta lateral. anda MaskI3 ; Para saber si esta abierto el sensor beq Error3 ; Si esta abierto -> jmp OkI3 ; Sino saltamos a ver el otro sensor. Error3: ldab #%00001000 ; -> lo marcamos en el led correspondiente.

Diseño de una Alarma para domicilio Página 14 de 20 orab PORTF ; Si habia otro error la se al se mantiene, stab PORTF ; y damos valor a Error. ldaa #1 staa ERROR OkI3: ldaa PORTG ; Leemos el portg, el detec. de movimiento. anda MaskM ; Para saber si esta abierto el sensor. beq Error4 ; Si esta abierto -> jmp OkM4 ; Sino seguimos. ;Etiqueta por el largo de los saltos. PanicoA1: jmp Panico Error4: ldab #%00010000 ; -> lo marcamos en el led correspondiente. orab PORTF ; Si habia otro error la se al se mantiene, stab PORTF ; y damos valor a Error. ldaa #1 staa ERROR OkM4: ldaa #1 ; Si hubo algun error volvemos al Main, sino cmpa ERROR ; esperamos los treinta seg. antes de armar beq MainA1 ; el sistema. jsr Timer1 Esperamos: ldaa Conec ; En este bucle esperamos el tiempo. cmp #0 ; Conec se setea en el Timer. beq Esperamos ldaa #%00000001 ; Prendemos un led que indica el armado del staa PORTF ; sistema. staa Timer1Ac ; Y seteamos la variable. Sensado: ; Aqui estamos cuando se arma el sistema. ldaa PORTG anda MaskI1 beq JTimer1 ; Si la puerta esta abierta activamos el RetTimer: ; timer para esperar la clave. ldaa TMSK1 cmpa #$10 ; Si esta activado esperamos la clave, beq Desac ; saltamos para desarmar el sistema. SigoSensando: ; Sino seguimos viendo el estado del sistema. ldaa PORTG anda MaskI2 beq PanicoA1 ; Si esta abierta la ventana, la alarma suena ldaa PORTG ; en el acto. anda MaskI3 ; Si esta abierta la puerta lateral, la alarma beq PanicoA1 ; suena en el acto. ldaa PORTG anda MaskM ; Y lo mismo para el detector de movimiento. beq PanicoA1 ldaa PORTD anda MaskP ; Buscamos que el pulsador este apretado. bne PanicoA1 ; Si es asi saltamos a la funcion de Panico. ldaa PORTG anda MaskN ; Buscamos el numeral para desarmar bne Desac ; Si es asi vamos a desarmar el sistema. jmp Sensado ; Seguimos en el bucle de sensado. Desac: ; Para desarmar el sistema. jsr Numeral ; Vamos a buscar la clave. jmp Main ; Volvemos al Main.

Diseño de una Alarma para domicilio Página 15 de 20 JTimer1: jsr Timer1 ; Llamamos para activar el timer. jmp RetTimer ; Volvemos arriba. ;Activar el timer, para esperar que salga de la casa. Timer1: ldaa #1 staa Timer1Ac ; En uno para saber que esta activado. ldaa #$10 ; Activacion del timer de treinta segundos. staa TMSK1 ldaa #%01011111 ; Prendemos una E en el display. staa PORTB rts ; Volvemos al lugar de partida. ;Subrutina para levantar el numeral. Numeral: ; Aqui esperamos la se al (#) que indica ; el ingreso de la clave. ldaa #$0 ; Cargamos para la cantidad de digitos. staa Digitos ; Indicamos que no se tecleo nada. ldaa PORTG ; Levantamos el valor del portg, si es el anda MaskN ; numeral, prende una n ->. bne ShowN ldaa Timer1Ac ; Si pasaron los treinta segundos se debe cmp #0 ; activar la alarma. beq Alarm0 RetAlarm0: jmp Numeral ; Seguimos esperando que se teclee el numeral. Alarm0: jsr Activa ; Llamamos para hacer sonar el parlante. jmp RetAlarm0 ; Volvemos arriba. ;Funcion para mostrar el numeral. ShowN: ldab #%00101110 ; Cargamos una n y la mostramos. stab PORTB jsr Retardo ; Llamamos al retardo para ver la letra. clr PORTB ; Se apaga el display. clr ClaveTecU ; Limpiamos los valores de la clave tecleada, clr ClaveTecD ; ya que debe tomar los valores debajo. clr ClaveTecC ; Luego buscamos los datos para conocer la ; clave tecleada. ; En esta parte leemos el porta y el portg Numeros: ; segun el numero que queremos ver y al -> ldx #$24 ; Ponemos el indice para usar la tabla. ldaa PORTG ; -> encontrarlo con la mascara saltamos a la anda Mask0 ; funcion asociada. ldx #$25 ; Ponemos el indice para usar la tabla. ldaa PORTA anda Mask1 ldx #$26 ; Ponemos el indice para usar la tabla. ldaa PORTA anda Mask2 ldx #$27 ; Ponemos el indice para usar la tabla.

Diseño de una Alarma para domicilio Página 16 de 20 ldaa PORTA anda Mask3 ldx #$28 ; Ponemos el indice para usar la tabla. ldaa PORTA anda Mask4 ldx #$29 ; Ponemos el indice para usar la tabla. ldaa PORTA anda Mask5 ldx #$2A ; Ponemos el indice para usar la tabla. ldaa PORTA anda Mask6 ldx #$2B ; Ponemos el indice para usar la tabla. ldaa PORTA anda Mask7 ldx #$2C ; Ponemos el indice para usar la tabla. ldaa PORTA anda Mask8 ldx #$2D ; Ponemos el indice para usar la tabla. ldaa PORTG anda Mask9 ldx #$2E ; Ponemos el indice para usar la tabla. ldaa PORTG anda MaskA jmp SaltoAux ; Salto necesario por la intercalacion. ;Etiqueta por el largo de los saltos. Numeros1: jmp Numeros ;Funcion para prender el display y guardar los datos - intercalada. ShowAll: inc Digitos ; Lo incrementamos para saber cuantos se ldab $0,x ; teclearon. stab PORTB ; Mostramos el numero tecleado. jsr Retardo ; Llamamos para verlo. clr PORTB ; Se apaga el display ldab $B,x ; Cargamos el numero tecleado usando la tabla stab InClave ; correspondiente. ldaa InClave ; Aqui se guarda la clave ingresada segun ldab Digitos ; sea unidades, decenas o centenas. cmpb #1 bne Uno staa ClaveTecC ; Si es el primero guardamos en las centenas. jmp Fin ; No se guardan mas. Uno: ldab Digitos cmpb #2 bne Dos staa ClaveTecD ; Si es el segundo guardamos en las decenas. Dos: ldab Digitos cmpb #3 bne Fin staa ClaveTecU ; Si es el tercero guardamos en las unidades.

Diseño de una Alarma para domicilio Página 17 de 20 Fin: ldaa Digitos ; Vemos la cantidad de valores tecleados, si cmp #$3 ; todavia no tengo los tres sigue, si ya los bne No ; tengo vemos si estamos cambiando la clave. ldaa NEWCLAVE cmp #0 beq CClave0 ; Si es asi saltamos a la funcion asociada. ; Aqui realizamos la comparacion de la clave ldaa ClaveTecU ; ingresada y la guardada. cmpa ClaveU bne No ; Si el primero es distinto salimos. ldaa ClaveTecD ; Si es igual seguimos comparando el otro. cmpa ClaveD bne No ; Si el segundo es distinto salimos. ldaa ClaveTecC ; Si es igual seguimos comparando el otro. cmpa ClaveC beq Acierto ; Si los tres son iguales saltamos -> No: ldaa Digitos ; Cargamos el valor de Digitos y vemos si es cmpa #$3 ; 3 para no permitir ingresar mas numeros, bne Numeros1 ; sino seguimos buscando numeros. jmp Numeral ; Volvemos a esperar un numeral. CClave0: ; Volvemos a la funcion de partida. rts ; Necesario cuando se cambia la clave. ;Etiqueta por el largo de los saltos. Numeral1: jmp Numeral SaltoAux: ldaa PORTG anda MaskN bne SubrNN ldaa Timer1Ac ; Si pasaron los treinta segundos se debe cmp #0 ; activar la alarma beq Alarm1 RetAlarm1: clra ; Limpiamos el acumulador. jmp Numeros ; Volvemos para seguir esperando una tecla. Alarm1: ; Etiqueta para poder realizar un salto jsr Activa ; condicional a la subrutina. jmp RetAlarm1 ; Volvemos arriba. ;Subrutina para que suene el parlante. Activa: ldaa #$40 ; Permitimos atender la interrupcion del staa TMSK1 ; OC2, el del parlante. rts ; Retorna al lugar de llamado. ;Funcion para clave correcta Acierto: staa TMSK1 ldab #%10101110 ; Muestra una H en el display stab PORTB jsr Retardo ; Llamamos para poder verla clr PORTB ; Se apaga el display. clr PORTF ; Se apaga el led de armado. jmp StopTimer2 RetsTimer2: rts

Diseño de una Alarma para domicilio Página 18 de 20 ;Se enmascara el timer2. StopTimer2: ldaa #0 ; Se pone en cero para saber que esta staa Timer2Ac ; enmascarado. clr TMSK1 ; Se limpia el registro para no atender jmp RetsTimer2 ; la interrupcion. ;Funcion para el numeral SubrNN: ldab #%01010110 ;Esta fucion es para el caso de ingreso stab PORTB ;equivocado jsr Retardo clr PORTB ldaa #$0 ; Cargamos para la cantidad de digitos, staa Digitos ; se guarda para volver a 0 y poder ingresar jmp Numeros ; de nuevo. ;Ciclo de retardo Retardo: ldaa #5 staa Contador1?Loop1: ldaa #180 staa Contador2?Loop2: clr Contador3?Loop3: inc Contador3 bne?loop3 inc Contador2 bne?loop2 dec Contador1 bne?loop1 rts Contador1: BYTE $00 Contador2: BYTE $00 Contador3: BYTE $00

Diseño de una Alarma para domicilio Página 19 de 20 Diagramas en bloque del sistema.

Diseño de una Alarma para domicilio Página 20 de 20 PLAQUETA