Tesispptfinal

248
TESIS: ALARMA DIGITAL DE 4 ZONAS EXPOSITOR: Alcocer Sotil, Álvaro INTRODUCCIÓN I PLANTEAMIENTO DEL PROBLEMA 1.1 Antecedentes 1.2 Justificación 1. 3 Formulación de problema 1.4 Limitaciones II OBJETIVOS 2.1 Objetivo General 2.2 Objetivos Específicos

Transcript of Tesispptfinal

Page 1: Tesispptfinal

TESIS: ALARMA DIGITAL DE 4 ZONAS 

EXPOSITOR: Alcocer Sotil, Álvaro

  INTRODUCCIÓN

I PLANTEAMIENTO DEL PROBLEMA 

1.1 Antecedentes 1.2 Justificación1.3 Formulación de problema1.4 Limitaciones

II OBJETIVOS

2.1 Objetivo General 2.2 Objetivos Específicos

Page 2: Tesispptfinal

III MARCO TEÓRICO Y CONCEPTUAL

3.1 Antecedentes de la investigación .3.1.1 Sistema de radio

3.1.1.1 Ventajas3.1.1.2 Inconvenientes

3.1.2 Sistema de cableado3.1.2.1 Ventajas3.1.2.2 Inconvenientes

3.1.3 Sistema volumétrico de sensores3.1.3.1 Ventajas

3.1.3.2 Inconvenientes3.1.4 Sistema de alarma simple

3.1.4.1 Ventajas3.1.4.2 Inconvenientes

3.1.5 Sistema de vigilancia y seguridad usando mux demux3.1.5.1 Descripción la operación completa del circuito3.1.5.2 Desventajas

3.1.6 Circuito de alarma usando un latch d 3.1.6.1 Descripción

  

Page 3: Tesispptfinal

 3.1.7 Detector Infrarrojo de proximidad

  3.2 Bases teóricas3.3   Definición de términos básicos

3.3.1    alarma3.3.2    sensor

3.4   hipótesis IV SISTEMA DE VARIABLES

4.1 Determinación de Variables4.2 Propuesta de indicadores V METODOLOGÍA DE LA INVESTIGACIÓN 5.1  Diseño y técnicas de recolección de información.5.2   Población y muestra5.3   Técnica de análisis

5.3.1  Sistema de codificación y tabulación.

Page 4: Tesispptfinal

 

5.4  Índice analítico tentativo del proyecto.5.5  Guía de trabajo de campo.5.6 Tipo y nivel de investigación.

5.6.1    Cobertura de estudio.5.6.1.1.Universo y Población 5.6.1.2.Muestra

5.7 Fuentes, Técnicas y Instrumentos de Recolección de Datos

       VI.- ASPECTOS ADMINISTRATIVOS

6.1.- Recursos: Humanos 6.1.1 Asesores 6.2.- Presupuesto 6.3.- Cronograma de Actividades.6.4.- Financiamiento.

Page 5: Tesispptfinal

VII.- DESARROLLO DEL PROYECTO- ALARMA DIGITAL DE 4 ZONAS CON PIC16F877 7.1 Introducción:7.2 Descripción7.3 Funcionamiento en el programa de simulación proteus

Circuito pictórico de la Alarma Digital

7.4 Tipos de sensores 7.5 Tecnología RISC

7.5.1 Explicación del sistema7.5.2 Descripción de los elementos utilizados7.5.3 Apreciación global del dispositivo7.5.4  Organización de la memoria

7.5.4.1 Organización de la memoria de programa 7.5.4.2 Organización de la memoria de datos7.5.5 Archivos de registro de propósito general

7.5.5.1  Option_reg register7.5.5.2   Intcon register (address 0bh, 8bh, 10bh, 18bh)\

7.2.6 LCD Juego de caracteres 

Page 6: Tesispptfinal

 

IX.- ANEXOS

9.1        Diagrama de Flujo

9.2        Programa de la alarma en assembler

9.3        Programa del LCD en assembler          

9.4      Especificaciones técnicas de los componentes usados en el proyecto

9.4.1 74HC04

9.4.2     7805

9.4.3     2N2222

9.4.4 1N4148

 

Page 7: Tesispptfinal

Introducción

El presente trabajo está distribuido en 5 partes, el primero trata de la realidad del problema describiéndolo, formulándolo y avalando la necesidad del trabajo mediante una justificación para la inversión en el proyecto. La segunda parte se plantean los conocimientos teóricos y técnicos necesarios para entender el problema, así como la solución propuesta; La tercera parte establecemos las consideraciones metodológicas que garantizan la calidad y veracidad del texto como documento científico, identificamos las estrategias, técnicas, población, muestra y valores de metodología científica consideradas y por considerar. En la cuarta parte presentamos lo relacionado con la gestión financiera del proyecto, un análisis técnico.Por último desarrollamos nuestro proyecto anexando el circuito, el programa en assembler y el diagrama de flujo.

Page 8: Tesispptfinal

I.-PLANTEAMIENTO DEL PROBLEMA Se necesita de una plataforma que implica tecnología, que opere en una red de comunicaciones digitales y en tiempo real de ser factible; solo así será posible detectar el crimen y al criminal a tiempo, atraparlo y castigarlo.

  1.1.- Antecedentes

Una solución que se ha utilizado por muchos años es el uso de electrónica digital basada en circuitos integrados (CI) de baja y mediana integración. La prueba de esta lógica muchas veces se hace utilizando los CI en los llamados "protoboards".

Page 9: Tesispptfinal

1.2.- Justificación  Esto es un problema real que diariamente sucede en los hogares donde los encargado de los cuidados (la policía ) transita con menos frecuencia, así afectando la economía de las familias ya que si sucede un robo nada dejan a su paso es por eso hacer instalaciones de alarmas digitales que reflejaría de un uso vital en el hogar

Page 10: Tesispptfinal

1.3.-Formulación del problema  ¿Cuáles deben de ser las herramientas y recursos mínimos necesarios que deberán ser considerados, utilizados e instalados para poder crear la tranquilidad de la población y así poder disponer de una plataforma que permita detectar en forma eficiente los distintos robos para que puedan ser procesados por el sistema legal peruano?

 1.4.- Limitaciones

Radica en la actualidad del proyecto que se desarrolla, pues para que el mismo sirva a sus propósitos, debe ser actual con relación al medio donde se utiliza

Page 11: Tesispptfinal

II. OBJETIVOS

2.1.-Objetivo General  Establecer, prevenir y llevar tranquilidad a las familias

  2.2.- Objetivos específicos

       *   Llegar a todos los hogares con publicidad u orientación, como una alternativa para la prevención de los robos.  

* Identificar cuáles son los mecanismos de mayor éxito y seguros que se utilizan en diversas partes de la población en la lucha contra el robo de hogares. * Identificar el posible impacto social y económico de la propuesta.

 

Page 12: Tesispptfinal

  III.- MARCO TEÓRICO Y CONCEPTUAL  3.1.-Antecedentes de la investigación Sistemas de alarmaSistemas de alarma

-La elección de alarma para un hogar debe basarse en el grado de seguridad que deseemos o necesitemos. -Una alarma en un hogar garantiza al menos un poco de seguridad al alertar a las personas en las cercanías de la intrusión.-Hay distintos sistemas de alarma: 3.1.1 Sistema de radioVentajas:- Su instalación no requiere reforma alguna en el hogar. - Más económico que el sistema cableado. Inconvenientes: - Menor grado de vigilancia que el cableado. Circuito ace home center 

Page 13: Tesispptfinal

3.1.2 Sistema de cableado

Ventajas:- Garantiza la vigilancia en toda la vivienda

Inconvenientes: - No es posible su instalación sin un previo levantamiento del suelo o paredes, según el caso, para colocar los cables.

-Los costes de instalación y mantenimiento son más elevados

3.1.3 Sistema volumétrico de sensores: captan el movimiento en el campo de actuación determinado por la longitud de onda.

Ventajas:- Garantiza una seguridad activada por el propio usuario.

Inconvenientes:- La alarma puede saltar con mayor facilidad que el resto de los sistemas.

Page 14: Tesispptfinal

3.1.4 Sistema de alarma simple: baratas y de fácil instalación, su objetivo es ahuyentar a los intrusos.

Ventajas:- Las más baratas. - Su instalación es muy sencilla.

Inconvenientes:- No están conectadas a una central receptora, por lo que la policía no acudirá en caso de que suene, salvo que alguien les avise. - Los precios son muy diversos y dependen mucho tanto del modo en que se instalen las alarmas como de las características de la propia vivienda.  

3.1.5 Sistema de vigilancia y seguridad usando mux demux. Un planteamiento que reduciría la cantidad de alambrado hacia el panel de monitoreo consiste en usar una combinación multiplexor-demultiplexor. En la fig.3.1 se muestra un sistema que puede manejar ocho puertas, pero la idea básica se puede expandir a cualquier número de puertas.

Page 15: Tesispptfinal

 Fig.3.1 Sistema de vigilancia y seguridad

Page 16: Tesispptfinal

 Fig. 3.2 (a) El decodificador 74ALS138 puede operar como un demultiplexor con e1 usado como la entrada de datos (b) Formas de ondas comunes para un código de SELECT    

Fig. 3.3 Un demultiplexor de reloj transmite la señal de reloj a un destino determinado por las entradas de SELECT de código   

Page 17: Tesispptfinal

3.1.5.1 Descripción la operación completa del circuito. Por ejemplo, digamos que el contador está en el conteo de 110(6). Mientras el contador está en ese estado, se puede decir que la puerta 6 está cerrada. El nivel BAJO en Io pasará por el MUX y se invertirá para producir un ALTO en Z. Este ALTO pasará por el DEMUX hacia la salida O6 de modo que el LED 6 estará

apagado, lo que indica que la puerta 6 está cerrada. Ahora supongamos que la puerta 6 está abierta. Aparecerá un nivel bajo en Z y O6 de modo que el LED 6 estará iluminado para señalar

que la puerta 6 está abierta. Por supuesto, todos los otros LEDs estarán apagados durante este tiempo porque O6 es la única

salida activa.  A medida que el contador se sincroniza a través de sus ocho estados de 000 a 111, los LEDs indicarán secuencialmente el estado de las ocho puertas. Si todas las puertas están cerradas, ninguno de los LEDs estará iluminado aun cuando se seleccione la salida correspondiente del DEMUX. Si se abre una puerta, su LED se iluminará sólo en el intervalo en el contador en que el intervalo este en el conteo apropiado

Page 18: Tesispptfinal

 3.1.5.2 Desventajas. Los datos de la tabla 3.1 revela que los LEDs correctos destellan para las puertas abiertas de la 4 a la 7. Asimismo, muestran que para puertas abiertas de la 0 a la 3 el número de LED destellando es cuatro, más que el número de la puerta y de los LEDs 0 al 3 que siempre están apagados.

Tabla 3.1-detección de fallas

Page 19: Tesispptfinal

 3.1.6 Circuito de alarma usando un latch d.   

Fig. 3.4  3.1.6.1 Descripción. Con la luz proyectada en el fototransistor se puede suponer que es completamente conductora, de manera que la resistencia entre el colector y el emisor es muy pequeña. Así , Vo será próxima a 0V. de manera que SET=CLEAR=0.Cuando el haz de luz se interrumpe, el fototransistor se desactiva y su resistencia entre el colector y el emisor se hace muy alta Esto causa que Vo se eleve aproximadamente a 5V; esto activa la entrada SET, lo cual fija Q en ALTO y enciende la alarma. Q permanecerá en ALTO y la alarma continuará encendida aun si Vo retorna a 0V esto se debe a que SET y CLEAR serán BAJOS, lo cual no produce ningún cambio en Q.

Page 20: Tesispptfinal

3.1.7 Detector Infrarrojo de proximidad: Sirve para puerta de casa o bien detectores para carros, delanteros y traseros, para estacionamiento de autos. Este circuito emite señales luminosas infrarrojas, al rebotar contra un objeto, se reciben con un receptor. Al ser recibidas el sistema detecta proximidad con lo que el led de salida se acciona (brilla). El circuito integrado es un generador/decodificador de tonos que bien cumple con las necesidades de este diseño. Tanto el fotodiodo como el fototransistor deberán estar situados con unidades de enfoque adecuadas para mejorar el alcance.

Page 21: Tesispptfinal

3.2 Bases teóricas 

Microprocesadores I y IIAplicaciones electrónicas I y II.Sistemas digitales Circuitos Electrónicos

3.3Definición de términos básicos

3.3.1 alarma. Dispositivo electrónico que pone en advertencia a la gente de un peligro particular o de un problema. Existen alarmas contra incendios, alarmas contra humo, etc.

 3.3.2 sensor. Dispositivo electrónico que reacciona a la luz, calor, presión,

movimiento, temperatura, etc para activar o desactivar un proceso electrónico o mecánico.

Page 22: Tesispptfinal

  3.4 Hipótesis

Con la implementación de un sistema de resguardo de hogares a bajo costo permitirá incrementar este tipo de servicios a mayor cantidad de hogares limitando los robos a los mismos.  IV. SISTEMAS DE VARIABLES 4.1 Determinación de variables La variable de estudio para este proyecto de tesis están comprendidos por:

-Modalidad de robos-Sistemas de seguridad y prevención

4.2 Propuesta de indicadores-Los puntos vulnerables de seguridad en los hogares -Demanda del sistema de seguridad -Estadísticas de robos en los hogares (lugares como en La Molina) 

Page 23: Tesispptfinal

V. METODOLOGÍA DE LA INVESTIGACIÓN 5.1.- Diseño y técnicas de recolección de información.

Zonas Bravas ( El Comercio, Domingo 8 de julio del 2006 (Policiales))

Page 24: Tesispptfinal

 

Trabas para los ladrones (El Comercio, Domingo 15 de julio del 2006 (Mi Hogar))

Page 25: Tesispptfinal

 

El reto de la próxima gestión edilicia, El Comercio 6 de agosto del 2006, Pág.. A17 

 

Page 26: Tesispptfinal

 

El reto de la próxima gestión edilicia, El Comercio 6 de agosto del 2006, Pág.. A16

 

Page 27: Tesispptfinal

 5.2.- Población y muestra.Para realizar el presente estudio se ha tomado como referencia los alumnos de San Marcos que viven en los diferentes distritos de la capital.

5.3.- Técnicas de análisis.5.3.1 Sistema de codificación y tabulación.Son las técnicas estadísticas para evaluar la calidad de los datos. Comprobar las hipótesis u obtener conclusiones.

5.4.- Índice analítico tentativo del proyecto.Se elaboró un índice analítico tentativo que dé una visión general de las partes o capítulos que contiene el trabajo a realizar.

Page 28: Tesispptfinal

5.5.- Guía de trabajo de campo.Para su elaboración se siguió los siguientes pasos:Estudio previo o sondeo.Diseño de la muestra.Preparación de los materiales de recolección de datos.Equipo de trabajo necesario: multímetro, fuente de voltaje DC, etc.Revista y prueba experimental de las etapas anteriores.Recolección de datos, ya sea primarios o secundarios.Elaboración del informe del trabajo de campo.

5.6 Tipo y nivel de investigaciónTécnico- experimental. 5.6.1Cobertura de estudio.

5.6.1.1Universo y Población.La población beneficiaria de este proyecto son los hogares situados en la clase media o baja de Lima Metropolitana. 

5.6.1.2 Muestra. Para realizar el presente estudio se ha tomado como referencia los alumnos de San Marcos que viven en los diferentes distritos de la capital.

Page 29: Tesispptfinal

5.7 Fuentes, Técnicas y Instrumentos de Recolección de DatosSe procedió a realizar las entrevistas a las personas co-responsables de cada hogar, a fin de determinar sus necesidad de seguridad, en esta parte se elaboró una encuesta a fin de obtener información puntual (50 hogares)

La preguntas fueron:ENCUESTA SOBRE SEGURIDAD EN CASA

 MARQUE CON √ O X SU RESPUESTA 1) ¿Han robado tu casa alguna vez? Si □ No □Si tu respuesta es SÍ responde la pregunta 2 y si es NO pasa a la pregunta 42) ¿Cómo entraron?Por la puerta: □de madera □de fierro □de otra clase de material □Por la ventana □  Otra manera:_________________________________

Page 30: Tesispptfinal

 3) ¿Qué presumes que hayan usado los rateros para entrar a tu casa?·          Pata de cabra □·          Una llave de acero □·          Lo abrieron de un balazo □·          Otra cosa:________________________________4) ¿Tienes en casa alguna clase de protección contra robos?Si tu respuesta es NO pasa a la pregunta 5¿Qué tipo de protección?Alarma empotrada a la puerta □Alarma digital con pantalla y teclado para elegir zonas a proteger de la casa □Alarma con sensor infrarrojo en la puerta □  Otro tipo_____________________________________ 5) ¿Cuánto es lo máximo que pagaría por una alarma u otro tipo de protección para la casa? 50 soles □   150 soles □  otra cifra _____________________6) ¿En qué distrito vives?__________________________________

ESTADISTICAS

Page 31: Tesispptfinal

 VI.           ASPECTOS ADMINISTRATIVOS

En ésta sección se ubica los aspectos administrativos del proyecto.6.1.- Recursos humanos.Aquí se relaciona las personas que participarán: asesores, equipo de recolección de datos, etc., especificando la calificación profesional y su función en la investigación.

6.1.1 Asesores:Carlos Fiestas.Ingeniero electrónico. Asesoría en la parte de microcontroladores PIC y simulación de circuitosJorge Manrique.Economista. Asesoría en la parte de estructura y organización de la tesisCristian Cóndor. Estudiante de Ingeniería electrónica. Asesoría en la parte de diseño de circuitosLa recolección de datos estuvo a cargo del tesista.

Page 32: Tesispptfinal

6.2.- Presupuesto.

El presente estudio tiene los siguientes costos:-Fotocopias s/.30.00-Pasajes s/.100.00-Pic 16F877 s/.2.00-El cristal s/.2.00-el sensor magnético (para las puertas o ventanas) s/.7.00-resistencias x20 s/.2.00-condensadores x3 s/.0.50-impresión de la placa x2 s/.70.00- el quemador de pics s/.70.00-la pantalla LCD s/.25.00-el teclado matricial s/.15.00-buffer 7407 (para reemplazo en el quemador) x2 s/.2.00-timer 555 (para reemplazo en el quemador) x2 s/.1.00-transistor PNP 78L12 x3 s/.0.50-transistor PNP 78L05 x3 s/.0.50-transistor PNP 2N3906 x3 s/.0.50

El presupuesto total fue de S/326.

Page 33: Tesispptfinal

CRONOGRAMA  

ACTIVIDADES TIEMPO (días)

1. - ASESORIA METODOLOGICA 30

2. – PROPUESTA  3

3. – OBSERVACIONES  5

4. - DISEÑO DEL PROYECTO  3

5. – OBSERVACIONES  2

6. – PROYECTO  30

7. – OBSERVACIONES  5

8. – ENCUESTA  1

9. - CLASIFICACION DE MATERIAL  4

10. - TRATAMIENTO INFORMACIÓN  3

11. - ANÁLISIS E INTERPRETACIÓN  6

12. – REDACCIÓN  21

6.3.- Cronograma de Actividades.

6.4.- Financiamiento. Esta a cargo del tesista.

Page 34: Tesispptfinal

VII DESARROLLO DEL PROYECTO- ALARMA DIGITAL DE 4 ZONAS CON PIC16F877 7.1 Introducción Esta es una poderosa alarma digital, de simple construcción y que utiliza componentes de fácil adquisición en el mercado local. El circuito trabaja con una fuente de 12 voltios

  7.2 Descripción

Page 35: Tesispptfinal

 7.3 Funcionamiento en el programa de simulación proteus Se hace el diseño en este programa ( es bien parecido al ORCAD sino que este es más completo) . Aquí se presenta (fig1) el diseño sin simular. No se sorprenda con el teclado, la distribución es la siguiente (si no que use este porque no había uno exactamente igual al deseado)1 2 3 A4 5 6 B7 8 9 C* 0 #  

Fig. 1 

Fig. 1

Page 36: Tesispptfinal

Circuito pictórico de la Alarma Digital

Page 37: Tesispptfinal

 

CAPA TOP

Page 38: Tesispptfinal

CAPA BOTTOM

Page 39: Tesispptfinal

7.4 Tipos de sensores  

 

Sensor para montaje sobre la superficie: se usa en puertas o ventanas.

Detector Dual de Movimiento PIR: Ignora situaciones comunes de alarmas falsas y provee detección precisa.

Detector Infrarrojo Pasivo Inalámbrico: inmune a mascotas. Equipado con un lente diseñado para entre humanos y mascotas.

Page 40: Tesispptfinal

Detector de Movimiento para Montaje en el Techo: con detector de cristales rotos. 360 grados.

Detector de Cristales Rotos: detectan todos los sonidos. Sistema de micrófonos que se analiza digitalmente. Inmunidad RF con protección de descarga estática y de transeúntes.

Page 41: Tesispptfinal

7.5 Tecnología RISC

7.5.1 Explicación del sistema.

El sistema esta basado en el microcontrolador PIC16F877 y una serie de sensores que están supervisando constantemente los diferentes eventos ocurridos en el exterior del recinto a supervisar.

Page 42: Tesispptfinal

 

7.5.2 Descripción de los elementos utilizadosMicrocontroladores FLASH CMOS de 8 bits de 28/40 pinesTipos de encapsulado del PIC16F874/7 

Page 43: Tesispptfinal

7.5.3 Apreciación global del dispositivo. El PIC16F877/874 vienen en empaques de 40 pines. 7.5.4 Organización de la memoria. Hay tres bloques de memoria en cada uno de estos PICmicro. La memoria de programa y la Memoria de Datos, tienen buses separados de manera que el acceso concurrente puede ocurrir. Estos PIC tienen un bloque de memoria de datos EEPROM. 7.5.4.1 Organización de la memoria de programa. Los dispositivos PIC16F87X tienen contador de programa de 13 bits capaz de direccionar un espacio de memoria de programa de 8K x 14. Los dispositivos PIC16F877/876 tienen palabras de 8K x 14 de memoria de programa FLASH y los dispositivos PIC16F873/874 tienen 4K x 14.El vector de reset está en 0000h y el vector de interrupción está en 0004h. 

Page 44: Tesispptfinal
Page 45: Tesispptfinal

7.5.4.2 Organización de la memoria de datos. Los bits RP1 (STATUS<6>) y RP0 (STATUS<5>) son los bits de selección de banco.

Cada banco se extiende hasta 7Fh (128 bytes). Las posiciones más bajas de cada banco están reservadas para Registros de Función Especial. Sobre estas están los Registros de Propósito General, implementados como RAM estática.  

Page 46: Tesispptfinal

7.5.5 Archivos de registro de propósito general. El archivo de registro puede ser accesado directa o indirectamente a través de Registro de Selección de Archivo FSR. 

 

Page 47: Tesispptfinal

7.5.5.1 OPTION_REG Register 

Page 48: Tesispptfinal

7.5.7.2 INTCON REGISTER (ADDRESS 0Bh, 8Bh, 10Bh, 18Bh)

Page 49: Tesispptfinal

  7.2.6.1 introducción1 Vss Vss Patilla de tierra de alimentación2 Vdd Vdd Patilla de alimentación de +5V3 Vo Vo Patilla de contraste del cristal líquido.

Normalmente se conecta a un potenciómetro a través del cual se aplica una tensión variable entre 0 y +5V que permite regular el contraste del cristal líquido.

4 RS RA0 Selección del registro de control/registro de datos:

RS =0 Selección del registro de controlRS =1 Selección del registro de datos

5 R/W RA1 Señal de lectura/escrituraR/W =0 El Módulo LCD es escritoR/W= 1 El Módulo LCD es leído

6 E RA2 Señal de activación del módulo LCD:E=0 Módulo desconectadoE=1 Modulo conectado

7-14 D0-D7 RB0-RB7 Bus de datos bi-direccional.  

7.2.6 LCD

Page 50: Tesispptfinal

 Juego de caracteresEs el mostrado en la siguiente Figura. Las posiciones marcadas como CG RAM (n) corresponden a uno de los 8 posibles caracteres gráficos definidos por el usuario. 

Page 51: Tesispptfinal

Definición de macros:JeJae

CmpWriteRead

Banco0Banco1

Definición de columnas de matricialDefinición de clave de fabricanteDefinición de Dígitos del teclado

Definición de variablesInicio

Configuración de puertos y registrosLimpiar contadoresLlamada inicio LCD

Mensaje “Bienvenido Ir Menú Presione A”Configuración de interrupción

Interrupción

Page 52: Tesispptfinal

ExploraRc_tmr0

DetecciónDetección de clave nueva

Detección de clave anteriorClave para desactivar alarmaDetec2 (ingresa_submenú)

Tecla_14Tecla_12

Cambio_claveLz

Mensaje “Ingrese clave anterior”Detec1

Detec1_2Detec1_3Detec1_4

Page 53: Tesispptfinal

Compara_clave_aIr_clave2_aIr_clave3_aIr_clave4_a

Compara_antigua_clave_aMensaje_error_aClave_correcta_a

Mensaje “Nueva Clave”Detección del primer digito de la clave nueva

Detección del segundo digito de la clave nuevaDetección del tercer digito de la clave nuevaDetección del cuarto digito de la clave nueva

Mensaje “Confirmar clave”

Page 54: Tesispptfinal

SaltaDetección de confirmación del primer digito de la clave nueva

Detección de confirmación del segundo digito de la clave nuevaDetección de confirmación del tercer digito de la clave nuevaDetección de confirmación del cuarto digito de la clave nueva

Comparar nuevas claves y la confirmaciónEerror

CorrectoGrabar en eepromIngresar_submenú

Mensaje “Menú activar zonas 1 2 3 4 A C” Bloque de detección 2

Page 55: Tesispptfinal

Tecla1_2 Contador1Tecla2_2 Contador1Tecla3_2 Contador1Tecla4_2 Contador11

Tecla11_2 A activar todas Tecla14_2 Confirmar dirección cursor

Mensaje “Zonas Activas”Activar_selec Comparación para el testeo de selección

Page 56: Tesispptfinal

Test_a

Lazo

Test_b

Lazo1

Test_c

Lazo2

Test_d

Lazo3

Test_ab

Lazo4

Test_ac

Lazo5

Test_ad

Lazo6

Page 57: Tesispptfinal

Test_bcLazo7

Test_bdLazo8

Test_cdLazo9

Test_abcLazo10

Test_acdLazo11

Test_bcdLazo12

Test_abcdLazo13

Page 58: Tesispptfinal

Mensaje “Todas activadas”Lazo14AlarmaLazos

Mensaje “Alarma Ingresar clave para desactivar”RonaldDetec3

Detec3_2Detec3_3Detec3_4

Compara_claveIr_clave2Ir_clave3Ir_clave4

Page 59: Tesispptfinal

Compara nueva claveLeer en eeprom y comparación de nuevas claves de usuario

Mensaje_errorMensaje “error”Clave correcta

Mensaje “Clave correcta”Bloqueo de alarma

Reset buqle para resetear el programaMensaje “Ingrese clave”

DEMORA5

Page 60: Tesispptfinal

demora5sdetección bloque detección de teclado

tecla1_0tecla2_0tecla3_0

Tecla4_0 tecla5_0 tecla6_0 tecla7_0tecla8_0tecla9_0

tecla_10_0tecla_11_0tecla_12_0tecla_13_0tecla_14_0tecla_15_0tecla_16_0cmpara2

end

Page 61: Tesispptfinal

list p=16f877include <p16f877.inc>errorlevel -207, -302, -305, -209, -205, -306, -203, -301

__CONFIG _XT_OSC & _LVP_OFF & _WDT_OFF & _CP_OFF 

; definición de macrosje macro dirección

btfsc STATUS,Zgoto dirección

endm 

jae macro dirección.btfsc STATUS,Cgoto direccion.

endm 

cmp macro reg,ctemovlw ctesubwf reg,W

endm  Programa de la alarma en assembler

Page 62: Tesispptfinal

 write macro direcc,dato

 bsf STATUS,RP1BSF STATUS,RP0BTFSC EECON1,WRGOTO $-1BCF STATUS,RP0

 movlw direccMOVWF EEADRbcf STATUS,RP1movf dato,wbsf STATUS,RP1MOVWF EEDATA

BSF STATUS,RP0

BCF EECON1,EEPGD

Programa de la alarma en assembler

Page 63: Tesispptfinal

read macro direcc1 BSF STATUS,RP1BCF STATUS,RP0

  movlw direcc1

MOVWF EEADR

BSF EECON1,WREN

BCF INTCON,GIE

MOVLW 55H

MOVWF EECON2

MOVLW 0AAh

MOVWF EECON2

BSF EECON1,WR

BSF INTCON,GIEBCF EECON1,WRENendm 

Programa de la alarma en assembler

Page 64: Tesispptfinal

 

banco0 macro

bcf STATUS,RP0

bcf STATUS,RP1

endm

BSF STATUS,RP0

BCF EECON1,EEPGD

BSF EECON1,RD

BCF STATUS,RP0

MOVF EEDATA,Wendm

banco1 macro

bsf STATUS,RP0

bcf STATUS,RP1

endm

Programa de la alarma en assembler

Page 65: Tesispptfinal

  

#define c4 PORTB,3#define c3 PORTB,2#define c2 PORTB,1#define c1 PORTB,0

 #define clave1 'A'#define clave2 '3' ;define clave secreta de fabricante 4 ;dígitos#define clave3 'B';para activar la alarma#define clave4 '4'

   n_tmr0 EQU d'131'

cod1 EQU b'11101110'cod2 EQU b'11101101'cod3 EQU b'11101011'cod4 EQU b'11011110'cod5 EQU b'11011101'cod6 EQU b'11011011'

Programa de la alarma en assembler

Page 66: Tesispptfinal

cod7 EQU b'10111110'cod8 EQU b'10111101'cod9 EQU b'10111011'cod0 EQU b'01111101'cod# EQU b'01110111'codA EQU b'11100111'codB EQU b'11010111'codC EQU b'10110111'codD EQU b'01110111'cod EQU b'10111110'

 

Programa de la alarma en assembler

Page 67: Tesispptfinal

  cblock 20h

fila, columna, ficol, ficol0, ficol0_2, ficol0_3, ficol0_4, ficol1, ficol2, ficol3,ficol3_2, ficol3_3, ficol3_4,ficol01,tecla, dato2, dato1, dato3, dato4, num, numA, num1, num2, num3, num4,num5, num6, num7, num8,num9, num10, num11, num12,num13, num14, num15, num16, conta,contador,conta1, conta2,conta3,conta4, conta5, conta6, conta7, conta8, conta9, conta10, conta11, conta12, conta13, conta14, conta15,conta2.2, conta2.3, conta2.4, nuevo_num1, nuevo_num2, nuevo_num3, nuevo_num4, nuevo_num5, nuevo_num6, nuevo_num7, nuevo_num8, conta7.2, conta7.3, conta7.4,conta_e, PDel0, PDel1, PDel2,PDel0_1, PDel1_1, PDel2_1, conta16,conta17,conta18, conta00, count,conta55, endc

Programa de la alarma en assembler

Page 68: Tesispptfinal

  org 0goto inicioorg 4goto inter

inicio: 

bsf STATUS,RP0;INICIO

movlw b'11111111';sensores

movwf TRISCmovlw b'00000000'movwf TRISA

;actuadormovlw b'11110000'movwf TRISBmovlw b'00000010'movwf OPTION_REGbcf STATUS,RP0

Programa de la alarma en assembler

Page 69: Tesispptfinal

lazos1:;lazo infinito después de apagar la alarma

clrf PORTAclrf teclaclrf conta18clrf conta17clrf conta16clrf conta15clrf conta14clrf conta13clrf conta12clrf conta11clrf conta10

Programa de la alarma en assembler

Page 70: Tesispptfinal

clrf conta9

clrf conta8

clrf conta7

clrf conta6

clrf conta5

clrf conta4

clrf conta3

clrf conta2

clrf conta

clrf contador

clrf num

clrf numA

  Programa de la alarma en assembler

Page 71: Tesispptfinal

 movlw b'00000001'call EnviaCmdLCD incf contadorcall inicio_LCD;dirección de la fila

movlw h'81' ;dirección cursor primera filacall EnviaCmdLCDmovlw ' 'call EnviaCarLCDmovlw '*'call EnviaCarLCDmovlw '*'call EnviaCarLCDmovlw '*'call EnviaCarLCD

Programa de la alarma en assembler

Page 72: Tesispptfinal

movlw 'B'

call EnviaCarLCD

movlw 'I'

call EnviaCarLCD

movlw 'E'

call EnviaCarLCD

movlw 'N'

call EnviaCarLCD

movlw 'V'

call EnviaCarLCD

movlw 'E'Programa de la alarma en assembler

Page 73: Tesispptfinal

 call EnviaCarLCDmovlw 'N'call EnviaCarLCDmovlw 'I'call EnviaCarLCDmovlw 'D'call EnviaCarLCDmovlw 'O'call EnviaCarLCD movlw h'c1'call EnviaCmdLCDmovlw 'I'call EnviaCarLCDmovlw 'R'

Programa de la alarma en assembler

Page 74: Tesispptfinal

call EnviaCarLCD

movlw ' '

call EnviaCarLCD

movlw 'M'

call EnviaCarLCD

movlw 'E'

call EnviaCarLCD

movlw 'N'

call EnviaCarLCD

movlw 'U'

call EnviaCarLCD

movlw ' '

Programa de la alarma en assembler

Page 75: Tesispptfinal

 call EnviaCarLCDmovlw 'P'call EnviaCarLCDmovlw 'R'call EnviaCarLCDmovlw 'E'call EnviaCarLCDmovlw 'S'call EnviaCarLCDmovlw 'I'call EnviaCarLCDmovlw 'O'call EnviaCarLCD

Programa de la alarma en assembler

Page 76: Tesispptfinal

movlw 'N'

call EnviaCarLCD

movlw 'E'

call EnviaCarLCD

movlw '<'

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw '>'

call EnviaCarLCD 

movlw h'd2'

call EnviaCmdLCD

 Programa de la alarma en assembler

Page 77: Tesispptfinal

 movlw d'131' ;interrup c/10 msmovwf TMR0movlw b'10100000' ;habilita int. TMR0movwf INTCONclrf filaclrf columnaclrf ficolclrf teclamovlw b'00001110' ;c1=0movwf PORTBmovwf columna

goto $ ; bucle infinito 

Programa de la alarma en assembler

Page 78: Tesispptfinal

;rutina interrupción

inter: ;se pulso tecla

movf PORTB,W

movwf columna

movwf fila

movlw b'11110000'

andwf fila,F ;lo almacena en fila

movlw b'00001111'

andwf columna,F

btfss fila,4 ;es f1=0goto detec ;si, tecla presionadabtfss fila,5 ;no, es f2=0 goto detec

Programa de la alarma en assembler

Page 79: Tesispptfinal

btfss fila,6 ;es f3=0goto detecbtfss fila,7 ;es f4=0goto detec 

explora: btfss columna,0 ;es c1=0goto act2btfss columna,1 ;es c2=0goto act3btfss columna,2 ;es c3=0goto act4 

act1: bsf c4nopbcf c1goto rec_tmr0

Programa de la alarma en assembler

Page 80: Tesispptfinal

act2: bsf c1

nop

bcf c2

goto rec_tmr0

act3: bsf c2

nop

bcf c3

goto rec_tmr0

act4: bsf c3

nop

bcf c4

goto rec_tmr0 Programa de la alarma en assembler

Page 81: Tesispptfinal

 rec_tmr0: movlw n_tmr0

movwf TMR0bcf INTCON,T0IFretfie 

; bloque de detección detec: movf fila,W

;detección de solo dos teclas para ir menú y poner claveiorwf columna,Wmovwf ficol 

;detección de clave nueva a comparacióncmp conta18,d'1' ;cuarto digito almacenadojae detec0_8cmp conta17,d'1' ;tercer digito almacenadojae detec0_7

Programa de la alarma en assembler

Page 82: Tesispptfinal

cmp conta16,d'1';segundo digito almacenado

jae detec0_6

cmp conta15,d'1' ;primer digito guardado

jae detec0_5

;detección de clave nueva

cmp conta14,d'1' ;cuarto digito almacenadoje detec0_4

cmp conta12,d'1' ;tercer digito almacenadoje detec0_3

cmp conta10,d'1' ;segundo digito almacenadoje detec0_2

Programa de la alarma en assembler

Page 83: Tesispptfinal

  ;detección de clave anterior

cmp conta7.4,d'1'jae detec1_4cmp conta7.3,d'1'jae detec1_3cmp conta7.2,d'1'jae detec1_2cmp conta7,d'1'jae detec1 ;si conta7 es mayor

;o igual a 1 se va a etiqueta

cmp conta9,d'1' ;primer digito guardado

je detec0 ;si conta9 es igual a 1

;se va a etiqueta detec0(clave_correcta_a)

Programa de la alarma en assembler

;detec1(cambio_clave) 

Page 84: Tesispptfinal

;clave para desactivar alarma

cmp conta2.4,d'1'

jae detec3_4

cmp conta2.3,d'1'

jae detec3_3

cmp conta2.2,d'1'

jae detec3_2

cmp conta2,d'1'

jae detec3 ;si conta2 es mayor o ;igual a 1 se va a etiqueta detec3 (desactivar alarma)

Programa de la alarma en assembler

Page 85: Tesispptfinal

  

;etiqueta para ir al sub-menúcmp conta,d'1'jae detec2 ;si conta es mayor

;o igual a 1 se va a etiqueta detec2(ingresa_submenú)    cmp ficol,codC ;compara tecla C

je tecla_14cmp ficol,codA ;compara tecla Aje tecla_12goto explora

tecla_14:incf conta5 ;incrementar hasta 7 vecescmp conta5,d'7'je cambio_clave ;etiqueta para cambio de clavegoto explora 

 

Programa de la alarma en assembler

Page 86: Tesispptfinal

tecla_12: movlw 'A'

movwf numA ;almacenar valor para ;comparar

call EnviaCarLCD

call retardo 

movlw h'd2'

call EnviaCmdLCD ;solo 1 dígitos

cmp numA,'A' ;compara tecla A

je ingresa_submenú ;ingresa al sub menú ;para activar los sensores 1 2 3 4 A C

goto explora

 

Programa de la alarma en assembler

Page 87: Tesispptfinal

cambio_clave: ;cambio de clave primero se pedirá la clave ;anterior

lz: incf conta7 ;y luego la clave nueva y ;reconfirmar clave

movlw b'00000001‘

call EnviaCmdLCD

movlw h'80‘ ;dirección cursor primera fila

call EnviaCmdLCD

movlw 'I'

call EnviaCarLCD

movlw 'N

call EnviaCarLCD;ingrese clave antigua

Programa de la alarma en assembler

Page 88: Tesispptfinal

movlw 'G'call EnviaCarLCDmovlw 'R'call EnviaCarLCDmovlw 'E'call EnviaCarLCDmovlw '.'call EnviaCarLCDmovlw 'C'call EnviaCarLCDmovlw 'lcall EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'V'call EnviaCarLCDmovlw 'E'call EnviaCarLCDmovlw ' '

Programa de la alarma en assembler

Page 89: Tesispptfinal

 call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'N'call EnviaCarLCDmovlw 'T'call EnviaCarLCDmovlw 'E'call EnviaCarLCDmovlw 'R'call EnviaCarLCDmovlw 'I'call EnviaCarLCD

Programa de la alarma en assembler

Page 90: Tesispptfinal

movlw 'O'

call EnviaCarLCD

movlw 'R'

call EnviaCarLCD

call retardo

movlw h'c8'

call EnviaCmdLCD

call retardo

call retardo

call retardo

goto explora

Programa de la alarma en assembler

Page 91: Tesispptfinal

 ;detección primer digitodetec1:

movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf num1

 ;detección segundo digito

incf conta7.2clrf conta7goto explora

 

Programa de la alarma en assembler

Page 92: Tesispptfinal

detec1_2:

 

movf ficol,w

movwf ficol0

call deteccion

movf num,w

movwf num2

 

;detección tercer digito

incf conta7.3

clrf conta7.2

goto explora

 Programa de la alarma en assembler

Page 93: Tesispptfinal

 detec1_3:  movf ficol,w

movwf ficol0call deteccionmovf num,wmovwf num3

 ;detección cuarto digitoincf conta7.4clrf conta7.3goto explora

 detec1_4: movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf num4

 clrf conta7.4

  Programa de la alarma en assembler

Page 94: Tesispptfinal

 compara_clave_a: 

clrf conta6 ;limpiar contador read 15hbcf STATUS,RP1movwf conta1 movlw d'1'subwf conta1,wbtfsc STATUS,Zgoto compara_antigua_clave_a cmp num1,clave1je ir_clave2_agoto mensaje_error_a 

Programa de la alarma en assembler

Page 95: Tesispptfinal

ir_clave2_a:

cmp num2,clave2

je ir_clave3_a

goto mensaje_error_a 

ir_clave3_a: cmp num3,clave3

je ir_clave4_a

goto mensaje_error_a 

ir_clave4_a:

cmp num4,clave4

je clave_correcta_a

goto mensaje_error_a

 Programa de la alarma en assembler

Page 96: Tesispptfinal

 compara_antigua_clave_a: 

;leer en EEPROM y;comparación de claves nuevas del usuario 

read 01hbcf STATUS,RP1movwf dato1movf num1,wsubwf dato1,wbtfss STATUS,Zgoto mensaje_error_a read 04hbcf STATUS,RP1movwf dato2movf num2,wsubwf dato2,wbtfss STATUS,Zgoto mensaje_error_a 

Programa de la alarma en assembler

Page 97: Tesispptfinal

read 08h

bcf STATUS,RP1

movwf dato3

movf num3,w

subwf dato3,w

btfss STATUS,Z

goto mensaje_error_a

 read 12hbcf STATUS,RP1movwf dato4movf num4,wsubwf dato4,wbtfss STATUS,Zgoto mensaje_error_agoto clave_correcta_a 

Programa de la alarma en assembler

Page 98: Tesispptfinal

mensaje_error_a: clrf num1clrf num2clrf num3clrf num4 movlw b'00000001';limpiarcall EnviaCmdLCD movlw h'81';dirección cursor primera filacall EnviaCmdLCDmovlw 'E'call EnviaCarLCDmovlw 'R'call EnviaCarLCDmovlw 'R'call EnviaCarLCDmovlw 'O'call EnviaCarLCDmovlw 'R'call EnviaCarLCD

Programa de la alarma en assembler

Page 99: Tesispptfinal

incf conta_ecall retardocall retardocall retardocall retardomovlw d'3‘ ;compara hasta 3 sino se reinicia el

;programasubwf conta_e,wbtfsc STATUS,Zgoto lazos1goto lz ;lazo repetitivo pide de nuevo ingresar

;la clave anterior

  clave_correcta_a: clrf conta7clrf num1clrf num2clrf num3clrf num4 

Programa de la alarma en assembler

Page 100: Tesispptfinal

call EnviaCarLCD

movlw 'U

call EnviaCarLCD

movlw 'E'

call EnviaCarLCD ;ingrese nueva clave

movlw 'V'

;nueva clave a ingresar

movlw b'00000001'

call EnviaCmdLCD

movlw h'81' ;dirección cursor primera fila

call EnviaCmdLCD

movlw 'N‘

Programa de la alarma en assembler

Page 101: Tesispptfinal

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw ' '

call EnviaCarLCD

movlw 'C'

call EnviaCarLCD

movlw 'l

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw 'V'

call EnviaCarLCD

movlw 'E' Programa de la alarma en assembler

Page 102: Tesispptfinal

 call EnviaCarLCDmovlw ':'call EnviaCarLCDmovlw h'8e'call EnviaCmdLCDincf conta9goto explora 

;detección del primer digito de la clave 

detec0: clrf conta9movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf nuevo_num1 

Programa de la alarma en assembler

Page 103: Tesispptfinal

 incf conta10goto explora

detec0_2:clrf conta10movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf nuevo_num2 

;detección del tercer digito incf conta12goto explora 

;detección del segundo digito

Programa de la alarma en assembler

Page 104: Tesispptfinal

detec0_3:

clrf conta12

movf ficol,w

movwf ficol0

call deteccion

movf num,w

movwf nuevo_num3 

;detección del cuarto digito 

incf conta14

goto explora

Programa de la alarma en assembler

Page 105: Tesispptfinal

 detec0_4: clrf conta14

movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf nuevo_num4

movlw h'c1';dirección cursor primera ;fila

call EnviaCmdLCDmovlw 'C'call EnviaCarLCDmovlw 'Ocall EnviaCarLCDmovlw 'N'

Programa de la alarma en assembler

Page 106: Tesispptfinal

call EnviaCarLCD ;ingrese nueva ;clave

movlw 'F'

call EnviaCarLCD

movlw '.'

call EnviaCarLCD

movlw ' '

call EnviaCarLCD

movlw 'C'

call EnviaCarLCD

movlw 'l

call EnviaCarLCD

movlw 'A'

Programa de la alarma en assembler

Page 107: Tesispptfinal

call EnviaCarLCDmovlw h'ce'call EnviaCmdLCDincf conta15goto explora 

;

call EnviaCarLCDmovlw 'V'

call EnviaCarLCD

movlw 'E‘

call EnviaCarLCDmovlw ':'

Programa de la alarma en assembler

Page 108: Tesispptfinal

salta: movlw h'ce'call EnviaCmdLCDmovlw ' 'call EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw h'ce'call EnviaCmdLCDincf conta15goto explora

;XXXXXXXXXXXXXXXXXXXXXx;XXXXXXXXXXXXXXXXXXXXX

Programa de la alarma en assembler

Page 109: Tesispptfinal

;detección del primer digito de la clave detec0_5: clrf conta15 

movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf nuevo_num5 

;detección del segundo digito incf conta16goto explora

Programa de la alarma en assembler

Page 110: Tesispptfinal

detec0_6:

clrf conta16

movf ficol,w

movwf ficol0

call deteccion

movf num,w

movwf nuevo_num6 

;detección del tercer digito

 

incf conta17

goto explora

 

Programa de la alarma en assembler

Page 111: Tesispptfinal

 detec0_7:

clrf conta17movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf nuevo_num7 

;detección del cuarto digito incf conta18goto explora 

detec0_8:clrf conta18movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf nuevo_num8 

Programa de la alarma en assembler

Page 112: Tesispptfinal

;comparar claves nueva y la confirmación 

movf nuevo_num1,w

subwf nuevo_num5,w

btfss STATUS,Z

goto eerror 

movf nuevo_num2,w

subwf nuevo_num6,w

btfss STATUS,Z

goto eerror 

movf nuevo_num3,w

subwf nuevo_num7,w

btfss STATUS,Z

goto eerror

 Programa de la alarma en assembler

Page 113: Tesispptfinal

movf nuevo_num4,wsubwf nuevo_num8,wbtfss STATUS,Zgoto eerrorgoto correcto

 eerror:

incf conta00cmp conta00,d'3'je lazos1goto salta 

correcto:  

movlw d'1'movwf conta1write 15h,conta1

 Programa de la alarma en assembler

Page 114: Tesispptfinal

;grabar en EEPROMwrite 01h,nuevo_num1write 04h,nuevo_num2write 08h,nuevo_num3write 12h,nuevo_num4 bcf STATUS,RP1;regresar al banco 0bcf STATUS,RP0;regresar al banco 0goto inicio 

ingresa_submenú: incf contamovlw b'00000001' ;limpiar displaycall EnviaCmdLCD movlw h'81';dirección cursor primera filacall EnviaCmdLCD

Programa de la alarma en assembler

Page 115: Tesispptfinal

movlw 'M'

call EnviaCarLCD

movlw 'E'

call EnviaCarLCD

movlw 'N'

call EnviaCarLCD ;menú activar zonas

movlw 'U'

call EnviaCarLCD

movlw ' '

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw 'C'

call EnviaCarLCDPrograma de la alarma en assembler

Page 116: Tesispptfinal

 movlw 'T'call EnviaCarLCDmovlw 'I'call EnviaCarLCDmovlw 'V'call EnviaCarLCDmovlw '.'call EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw 'Z'call EnviaCarLCDmovlw 'O'call EnviaCarLCDmovlw 'N'call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'S'call EnviaCarLCD

Programa de la alarma en assembler

Page 117: Tesispptfinal

  movlw h'c0'call EnviaCmdLCDmovlw '1'

;zona 1 call EnviaCarLCDmovlw h'c3'call EnviaCmdLCDmovlw '2‘

;zona 2 call EnviaCarLCDmovlw h'c6'call EnviaCmdLCDmovlw '3‘

;zona 3 call EnviaCarLCDmovlw h'c9'call EnviaCmdLCDmovlw '4'

Programa de la alarma en assembler

Page 118: Tesispptfinal

;zona 4 call EnviaCarLCD

movlw h'cc'

call EnviaCmdLCD

movlw '/'; separation

call EnviaCarLCD

movlw h'cf'

call EnviaCmdLCD

movlw 'A';activar todas las zonas

call EnviaCarLCDmovlw h'd2‘

call EnviaCmdLCDmovlw 'C';confirmar zonas activadas

Programa de la alarma en assembler

Page 119: Tesispptfinal

call EnviaCarLCDmovlw h'cd'call EnviaCmdLCDcall retardocall retardocall retardogoto explora ; bloque de detección 2 

detec2: movf ficol,wmovwf ficol2 cmp ficol2,cod1je tecla1_2cmp ficol2,cod2je tecla2_2cmp ficol2,cod3je tecla3_2cmp ficol2,cod4je tecla4_2cmp ficol2,codAje tecla_11_2cmp ficol2,codCje tecla_14_2goto explora

Programa de la alarma en assembler

Page 120: Tesispptfinal

 ;el contador empieza con 1tecla1_2: incf contador ;1<--contador

movlw h'c1';dirección cursor ,segunda fila

call EnviaCmdLCDmovlw 'a'call EnviaCarLCDcall retardogoto explora 

tecla2_2: incf contador ;5 <--contadorincf contadorincf contadorincf contadorincf contadormovlw h'c4'

;dirección cursor ,segunda filacall EnviaCmdLCDmovlw 'a'call EnviaCarLCDcall retardogoto explora

Programa de la alarma en assembler

Page 121: Tesispptfinal

 tecla3_2: incf contador ;9<--contador

incf contadorincf contadorincf contadorincf contadorincf contadorincf contadorincf contadorincf contadormovlw h'c7'

;dirección cursor ,segunda filacall EnviaCmdLCDmovlw 'a'movwf num3call EnviaCarLCDcall retardogoto explora

Programa de la alarma en assembler

Page 122: Tesispptfinal

 tecla4_2: incf contador ;12<--contador

incf contadorincf contadorincf contadorincf contadorincf contadorincf contadorincf contadorincf contadorincf contadorincf contadorincf contadormovlw h'ca' ;dirección cursor ,segunda filacall EnviaCmdLCDmovlw 'a'call EnviaCarLCDcall retardogoto explora

Programa de la alarma en assembler

Page 123: Tesispptfinal

 tecla_11_2: movlw h'd0'; "A" activas todas dirección cursor ; ,segunda fila

call EnviaCmdLCD

movlw 'A'call EnviaCarLCDcall retardo;limpiar displaymovlw b'00000001'call EnviaCmdLCDgoto activar_todas

;etiqueta de testeo de todos los sensores

Programa de la alarma en assembler

Page 124: Tesispptfinal

 tecla_14_2: movlw h'd3'

;"confirmar" dirección cursor ,segunda filacall EnviaCmdLCDmovlw 'C'call EnviaCarLCDcall retardo;limpiar displaymovlw b'00000001'call EnviaCmdLCDmovlw h'81'

;dirección cursor primera filacall EnviaCmdLCDmovlw 'Z'call EnviaCarLCDmovlw 'O'call EnviaCarLCDmovlw 'N'

Programa de la alarma en assembler

Page 125: Tesispptfinal

 call EnviaCarLCDmovlw h'ca'call EnviaCmdLCDmovlw 'Acall EnviaCarLCDmovlw 'C'call EnviaCarLCD

call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'S'call EnviaCarLCDmovlw ':'

Programa de la alarma en assembler

Page 126: Tesispptfinal

movlw 'T'

call EnviaCarLCD

movlw 'I'

call EnviaCarLCD

movlw 'V'

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw 'D'

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw 'S'

 

Programa de la alarma en assembler

Page 127: Tesispptfinal

 activar_selec: ;comparación para el testeo de selección

;combinaciones de 4 números abcd de ;uno,dos,tres y cuatro dígitos;sin q se repitancmp contador,d'2'je test_acmp contador,d'6'je test_bcmp contador,d'10'je test_c

movlw h'c0' call EnviaCmdLCD

goto activar_selec; etiqueta de testeo ;dependiendo de los sensores ; seleccionados

 

Programa de la alarma en assembler

Page 128: Tesispptfinal

cmp contador,d'13'

je test_d

cmp contador,d'7'

je test_ab

cmp contador,d'11'

je test_ac

cmp contador,d'14'

je test_ad

cmp contador,d'15'

je test_bc

Programa de la alarma en assembler

Page 129: Tesispptfinal

cmp contador,d'18'

je test_bd

cmp contador,d'22'je test_cd

cmp contador,d'16'je test_abc

cmp contador,d'23'je test_acd

cmp contador,d'27'je test_bcd

cmp contador,d'28'je test_abcd

Programa de la alarma en assembler

Page 130: Tesispptfinal

test_a: movlw '1';visualiza alarma 1 activada

call EnviaCarLCDcall demora5smovlw b'00000001';limpiar y apagar

display call EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5 ;demora de 5 minutos

para ;q el usuario pueda salir del perímetro

Programa de la alarma en assembler

Page 131: Tesispptfinal

 lazo: btfsc PORTC,4

; pin para resetear el programagoto resetbtfss PORTC,0 ;es 1

; testeo de la entradagoto lazo ; nogoto alarma ;si

 test_b: movlw '2';visualiza alarma 2 activada

call EnviaCarLCDcall demora5smovlw b'00000001'

;limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

Programa de la alarma en assembler

Page 132: Tesispptfinal

lazo1: btfsc PORTC,4goto resetbtfss PORTC,1goto lazo1goto alarma

 test_c: movlw '3'

;visualiza alarma 3 activadacall EnviaCarLCDcall demora5smovlw b'00000001'

;limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo2: btfsc PORTC,4goto resetbtfss PORTC,2goto lazo2goto alarma

 

Programa de la alarma en assembler

Page 133: Tesispptfinal

test_d: movlw '4';visualiza alarma 4 activadacall EnviaCarLCDcall demora5smovlw b'00000001';limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo3:

btfsc PORTC,4goto reset

btfss PORTC,3

goto lazo3goto alarma

  Programa de la alarma en assembler

Page 134: Tesispptfinal

 test_ab: movlw '1'

;visualiza alarma 1y2 activadacall EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '2'call EnviaCarLCDcall demora5smovlw b'00000001'

;limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo4: btfsc PORTC,4goto resetbtfsc PORTC,0 ;es 0goto alarma ;nobtfss PORTC,1 ;si es 1goto lazo4 ;nogoto alarma ;si

Programa de la alarma en assembler

Page 135: Tesispptfinal

test_ac: movlw '1';visualiza alarma 1y3 activadacall EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '3'call EnviaCarLCDcall demora5smovlw b'00000001';limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo5: btfsc PORTC,4goto resetbtfsc PORTC,0goto alarmabtfss PORTC,2goto lazo5goto alarma

 

Programa de la alarma en assembler

Page 136: Tesispptfinal

 test_ad: movlw '1'

;visualiza alarma 1y4 activadacall EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '4'call EnviaCarLCDcall demora5smovlw b'00000001';limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo6: btfsc PORTC,4goto resetbtfsc PORTC,0goto alarmabtfss PORTC,3goto lazo6goto alarma

Programa de la alarma en assembler

Page 137: Tesispptfinal

test_bc: movlw '2';visualiza alarma 2y3 activada

call EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '3'call EnviaCarLCDcall demora5smovlw b'00000001'

;limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo7: btfsc PORTC,4goto resetbtfsc PORTC,1goto alarmabtfss PORTC,2goto lazo7goto alarma Programa de la alarma en assembler

Page 138: Tesispptfinal

 test_bd: movlw '2'

;visualiza alarma 2y4 activadacall EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '4'call EnviaCarLCDcall demora5smovlw b'00000001'

;limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo8: btfsc PORTC,4goto resetbtfsc PORTC,1goto alarmabtfss PORTC,3goto lazo8goto alarma Programa de la alarma en assembler

Page 139: Tesispptfinal

 test_cd: movlw '3'

;visualiza alarma 3y4 activadacall EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '4'call EnviaCarLCDcall demora5smovlw b'00000001'

;limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo9: btfsc PORTC,4goto resetbtfsc PORTC,2goto alarmabtfss PORTC,3goto lazo9goto alarma

 

Programa de la alarma en assembler

Page 140: Tesispptfinal

 test_abc: movlw '1'

;visualiza alarma 12y3 activadacall EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw '2'call EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '3'call EnviaCarLCDcall demora5smovlw b'00000001'

;limpiar y apagar displaycall EnviaCmdLCDmovlw b'00001000'call EnviaCmdLCDcall DEMORA5

lazo10: btfsc PORTC,4goto resetbtfsc PORTC,0goto alarma

Programa de la alarma en assembler

Page 141: Tesispptfinal

 test_acd: movlw '1'

;visualiza alarma 13y4 activadacall EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw '3'call EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '4'call EnviaCarLCDcall demora5smovlw b'00000001'

btfsc PORTC,1

goto alarma

btfss PORTC,2

goto lazo10

goto alarma

Programa de la alarma en assembler

Page 142: Tesispptfinal

;limpiar y apagar display

call EnviaCmdLCD

movlw b'00001000'

call EnviaCmdLCD

call DEMORA5

lazo11: btfsc PORTC,4

goto reset

btfsc PORTC,0

goto alarma

btfsc PORTC,2

goto alarma

btfss PORTC,3

goto lazo11

goto alarmaPrograma de la alarma en assembler

Page 143: Tesispptfinal

 test_bcd: movlw '2'

;visualiza alarma 2 3 y 4 activadacall EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw '3'call EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '4'call EnviaCarLCDcall demora5smovlw b'00000001'

;limpiar y apagar display

call EnviaCmdLCD

movlw b'00001000'

call EnviaCmdLCD

call DEMORA5Programa de la alarma en assembler

Page 144: Tesispptfinal

lazo12: btfsc PORTC,4goto resetbtfsc PORTC,1goto alarmabtfsc PORTC,2goto alarmabtfss PORTC,3goto lazo12goto alarma 

test_abcd: movlw '1';visualiza alarma 1 2 3 y 4 activada

call EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw '2'call EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw '3'

Programa de la alarma en assembler

Page 145: Tesispptfinal

call EnviaCarLCDmovlw 'y'call EnviaCarLCDmovlw '4'call EnviaCarLCDcall demora5smovlw

b'00000001‘ ;limpiar y apagar display

call EnviaCmdLCD

movlw b'00001000'

call EnviaCmdLCD

call DEMORA5

Programa de la alarma en assembler

Page 146: Tesispptfinal

lazo13: btfsc PORTC,4goto resetbtfsc PORTC,0goto alarmabtfsc PORTC,1goto alarmabtfsc PORTC,2goto alarmabtfss PORTC,3goto lazo13goto alarma activar_todas:movlw h'81'

activar_todas:;dirección cursor primera filacall EnviaCmdLCDmovlw 'Tcall EnviaCarLCDmovlw 'O'call EnviaCarLCD

Programa de la alarma en assembler

Page 147: Tesispptfinal

 call EnviaCarLCDmovlw 'Acall EnviaCarLCDmovlw 'C'call EnviaCarLCDmovlw 'T'call EnviaCarLCDmovlw 'I'call EnviaCarLCDmovlw 'V'call EnviaCarLCDmovlw 'A'call EnviaCarLCD

;visualiza todas activadasmovlw 'D'call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'S'call EnviaCarLCDmovlw ' '

Programa de la alarma en assembler

Page 148: Tesispptfinal

movlw 'A'call EnviaCarLCD movlw 'S'

call EnviaCmdLCDcall demora5s

movlw b'00000001';limpiar y apagar display

call EnviaCmdLCDmovlw b'00001000' call EnviaCmdLCD call DEMORA5

lazo14: btfsc PORTC,4

goto reset

btfsc PORTC,0

goto alarma

btfsc PORTC,1

goto alarma

movlw 'D'

call EnviaCarLCD

Programa de la alarma en assembler

Page 149: Tesispptfinal

btfsc PORTC,2goto alarmabtfss PORTC,3goto lazo14goto alarma 

alarma:bsf PORTA,3;alarma encendida ;sirena

  ;encender displaymovlw b'00001111'call EnviaCmdLCD 

lazos: cmp conta55,d'1'jae resetcall retardocall retardocall retardocall retardocall retardo

Programa de la alarma en assembler

Page 150: Tesispptfinal

 movlw b'00000001'call EnviaCmdLCDmovlw h'80';dirección cursor primera filacall EnviaCmdLCDmovlw '*'call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'L'call EnviaCarLCDmovlw 'A';visualiza alarma ingrese clave ;para descativarlacall EnviaCarLCD

Programa de la alarma en assembler

Page 151: Tesispptfinal

movlw 'R'

call EnviaCarLCD

movlw 'M'

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw '*'

call EnviaCarLCD

movlw ' '

call EnviaCarLCDmovlw 'I'

call EnviaCarLCDmovlw 'N'

call EnviaCarLCDmovlw 'G‘ Programa de la alarma en assembler

Page 152: Tesispptfinal

 call EnviaCarLCDmovlw ' 'call EnviaCarLCDmovlw 'C'call EnviaCarLCDmovlw 'L'call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'V'call EnviaCarLCDmovlw 'E'call EnviaCarLCD movlw h'c1'call EnviaCmdLCD

call EnviaCarLCD

movlw '.'

Programa de la alarma en assembler

Page 153: Tesispptfinal

movlw 'P'

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw 'R'

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw ' '

call EnviaCarLCD

movlw 'D'

call EnviaCarLCD

movlw 'E'Programa de la alarma en assembler

Page 154: Tesispptfinal

 call EnviaCarLCDmovlw 'C'call EnviaCarLCDmovlw 'T'call EnviaCarLCDmovlw '.'call EnviaCarLCD 

ronald: movlw h'cf'call EnviaCmdLCDincf conta2 ;inc conta2clrf num1clrf num2clrf num3clrf num4goto explora

  

call EnviaCarLCD

movlw 'S'

call EnviaCarLCD

movlw 'A'

Programa de la alarma en assembler

Page 155: Tesispptfinal

  

;desactivar alarma ;primer digito

detec3:movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf num1 

;segundo digitoclrf conta2incf conta2.2goto explora 

detec3_2: movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf num2 

;tercer digitoclrf conta2.2incf conta2.3goto explora

Programa de la alarma en assembler

Page 156: Tesispptfinal

 detec3_3: movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf num3 

;cuarto digito clrf conta2.3incf conta2.4goto explora 

detec3_4: movf ficol,wmovwf ficol0call deteccionmovf num,wmovwf num4 clrf conta2.4

compara_clave: clrf conta3 ;limpiar contadorread 15hbcf STATUS,RP1movwf conta1

Programa de la alarma en assembler

Page 157: Tesispptfinal

movlw d'1'subwf conta1,wbtfsc STATUS,Zgoto compara_nueva_clave

 cmp num1,clave1je ir_clave2goto mensaje_error

 ir_clave2: cmp num2,clave2

je ir_clave3goto mensaje_error

 ir_clave3: cmp num3,clave3

je ir_clave4goto mensaje_error

  ir_clave4: cmp num4,clave4je clave_correctagoto mensaje_error ;mensaje error y falta

;limpiar pantalla  

Programa de la alarma en assembler

Page 158: Tesispptfinal

 compara_nueva_clave: 

;leer en EEPROM Y;comparación de claves nuevas del usuario read 01hbcf STATUS,RP1movwf dato1movf num1,wsubwf dato1,wbtfss STATUS,Zgoto mensaje_error read 04hbcf STATUS,RP1movwf dato2movf num2,wsubwf dato2,wbtfss STATUS,Zgoto mensaje_error 

Programa de la alarma en assembler

Page 159: Tesispptfinal

read 08h

bcf STATUS,RP1

movwf dato3

movf num3,w

subwf dato3,w

btfss STATUS,Z

goto mensaje_error

  read 12h

bcf STATUS,RP1

movwf dato4

movf num4,w

subwf dato4,w

btfss STATUS,Z

goto mensaje_error

goto clave_correcta

Programa de la alarma en assembler

Page 160: Tesispptfinal

 mensaje_error:

clrf num1clrf num2clrf num3clrf num4

 movlw b'00000001' ;limpiarcall EnviaCmdLCD

 movlw h'81' ;dirección cursor primera fila

Programa de la alarma en assembler

Page 161: Tesispptfinal

call EnviaCmdLCD

movlw 'E'

call EnviaCarLCD

movlw 'R'

call EnviaCarLCD

movlw 'R'

call EnviaCarLCD

movlw 'O'

call EnviaCarLCD

movlw 'R'

call EnviaCarLCD

incf conta4

cmp conta4,d'3'

je bloqueo_alarma

goto lazos

Programa de la alarma en assembler

Page 162: Tesispptfinal

  clave_correcta: 

bcf PORTA,3;apagar alarma movlw b'00000001'

;limpiarcall EnviaCmdLCD movlw h'80‘ ;dirección cursor

;primera filacall EnviaCmdLCDmovlw '*'call EnviaCarLCDmovlw '*'

;clave bloqueadacall EnviaCarLCDmovlw 'C'call EnviaCarLCDmovlw 'L'call EnviaCarLCDmovlw 'A'' '

Programa de la alarma en assembler

Page 163: Tesispptfinal

call EnviaCarLCD

movlw 'V'

call EnviaCarLCD

movlw 'E'

call EnviaCarLCD

movlw  call EnviaCarLCD

movlw 'C'

call EnviaCarLCD

movlw 'O'

call EnviaCarLCD

movlw 'R'

call EnviaCarLCD

movlw 'R'Programa de la alarma en assembler

Page 164: Tesispptfinal

call EnviaCarLCDmovlw 'C'call EnviaCarLCDmovlw 'T'call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw '*'call EnviaCarLCDmovlw '*'call EnviaCarLCDcall retardocall retardocall retardocall retardogoto lazos1; después de apagar se reinicia el ;programa

 

call EnviaCarLCD

movlw 'E'

Programa de la alarma en assembler

Page 165: Tesispptfinal

 

bloqueo_alarma: movlw h'81' ;dirección cursor primera filacall EnviaCmdLCDmovlw '*'call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'L'call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw 'R'call EnviaCarLCDmovlw 'M'call EnviaCarLCDmovlw 'A'call EnviaCarLCDmovlw ' 'call EnviaCarLCD

Programa de la alarma en assembler

Page 166: Tesispptfinal

movlw 'B'

call EnviaCarLCD

movlw 'L'

call EnviaCarLCD

movlw 'O'

call EnviaCarLCD

movlw 'Q'

call EnviaCarLCD

movlw 'U'

call EnviaCarLCD

movlw 'E'

call EnviaCarLCD

movlw 'A'

call EnviaCarLCDPrograma de la alarma en assembler

Page 167: Tesispptfinal

movlw 'D'

call EnviaCarLCD

movlw 'A'

 

call EnviaCarLCD

movlw '*'

call EnviaCarLCD

movlw h'd5'

call EnviaCmdLCD

 

call DEMORA5

call DEMORA5

Programa de la alarma en assembler

Page 168: Tesispptfinal

goto lazos1 ;se reinicia alarma ;después de 8 minutos y se va lazos1

;-------------------------------;bucle para resetear e rpograma;--------------------------------

reset: movlw b'001101' ;sirenamovwf PORTA;encender displaymovlw b'00001111'call EnviaCmdLCD

 call retardocall retardomovlw b'00000001'

Programa de la alarma en assembler

Page 169: Tesispptfinal

 call EnviaCmdLCDmovlw h'81' ;dirección cursor primera filacall EnviaCmdLCDmovlw 'I'call EnviaCarLCDmovlw 'N'call EnviaCarLCDmovlw 'G'call EnviaCarLCDmovlw 'R'call EnviaCarLCDmovlw '.'call EnviaCarLCD 

Programa de la alarma en assembler

Page 170: Tesispptfinal

movlw 'C'

call EnviaCarLCD

movlw 'L'

call EnviaCarLCD

movlw 'A'

call EnviaCarLCD

movlw 'V'

call EnviaCarLCD

movlw 'E'

call EnviaCarLCD

movlw ':'

call EnviaCarLCD

incf conta55 

goto ronald Programa de la alarma en assembler

Page 171: Tesispptfinal

 

 

 

;-------------------------------------------------------------

; Generado con PDEL ver SP r 1.0 el 07/06/05 Hs 10:01:45 p.m.

; Descripción: Delay 300000000 ciclos retardo 5 minutos

;-------------------------------------------------------------

DEMORA5:movlw .193 ; 1 set numero de repetición (C)

movwf PDel0 ; 1 |

PLoop0 movlw .232 ; 1 set numero de repetición (B)

movwf PDel1 ; 1 |

PLoop1 movlw .248 ; 1 set numero de repetición (A)

movwf PDel2 ; 1 |

PLoop2 clrwdt ; 1 clear watchdog

Programa de la alarma en assembler

Page 172: Tesispptfinal

PDelL1 goto PDelL2 ; 2 ciclos delayPDelL2 goto PDelL3 ; 2 ciclos delayPDelL3 goto PDelL4 ; 2 ciclos delayPDelL4 goto PDelL5 ; 2 ciclos delayPDelL5 goto PDelL6 ; 2 ciclos delayPDelL6 goto PDelL7 ; 2 ciclos delayPDelL7 goto PDelL8 ; 2 ciclos delayPDelL8 goto PDelL9 ; 2 ciclos delayPDelL9 goto PDelL10 ; 2 ciclos delayPDelL10 goto PDelL11 ; 2 ciclos delayPDelL11 goto PDelL12 ; 2 ciclos delayPDelL12 clrwdt ; 1 ciclo delay

Programa de la alarma en assembler

Page 173: Tesispptfinal

decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A) goto PLoop2 ; 2 no, loop decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B) goto PLoop1 ; 2 no, loop decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C) goto PLoop0 ; 2 no, loopPDelL13 goto PDelL14 ; 2 ciclos delayPDelL14 goto PDelL15 ; 2 ciclos delayPDelL15 goto PDelL16 ; 2 ciclos delayPDelL16 goto PDelL17 ; 2 ciclos delayPDelL17 goto PDelL18 ; 2 ciclos delayPDelL18 goto PDelL19 ; 2 ciclos delayPDelL19 goto PDelL20 ; 2 ciclos delayPDelL20 goto PDelL21 ; 2 ciclos delayPDelL21 goto PDelL22 ; 2 ciclos delayPDelL22 goto PDelL23 ; 2 ciclos delayPDelL23 goto PDelL24 ; 2 ciclos delayPDelL24 clrwdt ; 1 ciclo delayreturn ; 2+2 Fin.;-------------------------------------------------------------  

Programa de la alarma en assembler

Page 174: Tesispptfinal

 ;-------------------------------------------------------------; Generado con PDEL ver SP r 1.0 el 23/06/05 Hs 12:51:42 a.m.; Descripción: Delay 5000000 ciclos;-------------------------------------------------------------demora5s: movlw .165 ; 1 set numero de repetición (C) movwf PDel0_1 ; 1 |PLoop0_1 movlw .41 ; 1 set numero de repetición (B) movwf PDel1_1 ; 1 |PLoop1_1 movlw .147 ; 1 set numero de repetición (A) movwf PDel2_1 ; 1 |PLoop2_1 clrwdt ; 1 clear watchdog clrwdt ; 1 ciclo delay decfsz PDel2_1, 1 ; 1 + (1) es el tiempo 0 ? (A) goto PLoop2_1 ; 2 no, loop decfsz PDel1_1, 1 ; 1 + (1) es el tiempo 0 ? (B) goto PLoop1_1 ; 2 no, loop decfsz PDel0_1, 1 ; 1 + (1) es el tiempo 0 ? (C) goto PLoop0_1 ; 2 no, loopreturn ; 2+2 Fin.;------------------------------------------------------------- 

Programa de la alarma en assembler

Page 175: Tesispptfinal

  ;bloque de detección de tecladodetección:

cmp ficol0,cod1je tecla1_0cmp ficol0,cod2je tecla2_0cmp ficol0,cod3je tecla3_0cmp ficol0,cod4je tecla4_0cmp ficol0,cod5je tecla5_0cmp ficol0,cod6je tecla6_0cmp ficol0,cod7je tecla7_0cmp ficol0,cod8je tecla8_0cmp ficol0,cod9je tecla9_0cmp ficol0,cod0je tecla_10_0

Programa de la alarma en assembler

Page 176: Tesispptfinal

 cmp ficol0,cod#je tecla_11_0cmp ficol0,codAje tecla_12_0cmp ficol0,codBje tecla_13_0cmp ficol0,codCje tecla_14_0cmp ficol0,codDje tecla_15_0cmp ficol0,codje tecla_16_0 ;nuevo nuevo num 

tecla1_0: movlw '*'call EnviaCarLCDcall retardomovlw '1'movwf numgoto cmpara2 ;se va a etiqueta cmpara2

Programa de la alarma en assembler

Page 177: Tesispptfinal

tecla2_0: movlw '*'call EnviaCarLCDcall retardomovlw '2'movwf numgoto cmpara2

tecla3_0: movlw '*'call EnviaCarLCDcall retardomovlw '3'movwf numgoto cmpara2

tecla4_0: movlw '*'call EnviaCarLCDcall retardomovlw '4'movwf numgoto cmpara2

Programa de la alarma en assembler

Page 178: Tesispptfinal

tecla5_0: movlw '*'

call EnviaCarLCD

call retardo

movlw '5'

movwf num

goto cmpara2tecla6_0:

movlw '*'

call EnviaCarLCD

call retardo

movlw '6'

movwf num

goto cmpara2

Programa de la alarma en assembler

Page 179: Tesispptfinal

tecla7_0:movlw '*'call EnviaCarLCDcall retardomovlw '7'movwf numgoto cmpara2

tecla8_0:movlw '*'call EnviaCarLCDcall retardomovlw '8'movwf numgoto cmpara2

Programa de la alarma en assembler

Page 180: Tesispptfinal

tecla9_0:

movlw '*'

call EnviaCarLCD

call retardo

movlw '9'

movwf num

goto cmpara2

tecla_10_0:

movlw '*'

call EnviaCarLCD

call retardo

movlw '0'

movwf num

goto cmpara2 Programa de la alarma en assembler

Page 181: Tesispptfinal

tecla_11_0: movlw '*'call EnviaCarLCDcall retardomovlw '#'movwf numgoto cmpara2

tecla_12_0: movlw '*'call EnviaCarLCDcall retardomovlw 'A'movwf numgoto cmpara2

Programa de la alarma en assembler

Page 182: Tesispptfinal

tecla_13_0: movlw '*'

call EnviaCarLCD

call retardo

movlw 'B'

movwf num

goto cmpara2

tecla_14_0: movlw '*'

call EnviaCarLCD

call retardo

movlw 'C'

movwf num

goto cmpara2

Programa de la alarma en assembler

Page 183: Tesispptfinal

tecla_15_0:movlw '*'call EnviaCarLCDcall retardomovlw 'D'movwf numgoto cmpara2

 tecla_16_0:

movlw '*'call EnviaCarLCDcall retardomovlw 's'movwf numgoto cmpara2

 cmpara2:return;----------------------------------------------------------- include "lcd.asm" ;se incluye la macro de lcdend   

Programa de la alarma en assembler

Page 184: Tesispptfinal

0%

10%

20%

30%

40%

50%

60%

SI HAN SIDOROBADOS

NO HAN SIDOROBADOS

ROBOS EN CASA

ROBOS EN CASA

PROCEDENCIA DE LOS QUE DIJERON NO

0

1

2

3

4S.M.P.

CALLAO

SANTA ANITA

VITARTE

CERCADO

RIMAC

S.J.L.

COMASCIENEGUILLA

CHORRILLOS

VILLA EL SAL

PTE PIEDRA

V.M.T

LA VICTORIA

SURCO

PROCEDENCIA DELOS QUE DIJERONNO

Page 185: Tesispptfinal

CUANTO PAGARIAN LOS QUE DIJERON NO

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

MAX. 50SOLES

MAX. 150SOLES

MAX. 10SOLES

MAX. 1SOLES

CUANTO PAGARIANLOS QUE DIJERON NO

POR DONDE ENTRARON LOS RATEROS A SU CASA

0,00%

20,00%

40,00%

60,00%PUERTA DE FIERRO

PUERTA DE MADERA

VENTANA

TECHO

PUERTA OTRO MAT

TENIAN LLAVEPOR DONDE ENTRARONLOS RATEROS A SUCASA

Page 186: Tesispptfinal

QUE USARON PARA ENTRAR

0%10%20%30%40%

PATA DE CABRA

LLAVE DE ACERO

METIERON LA MANO

BALAZO

ESCALERAS

NO ESPECIFICA

QUE USARON PARAENTRAR

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

TIENE ALARMA NO TIENEALARMA

DE LOS QUE DIJERON QUE SI LE HABIAN ROBADO

DE LOS QUE DIJERONQUE SI LE HABIANROBADO

Page 187: Tesispptfinal

QUE TIPO DE ALARMA TIENEN

0,00%

5,00%

10,00%EMPOTRADA A PUERTA

CONFIG DE ZONAS

CON SENSORINFRARROJO

TIENE PERRO

NO ESPECIFICA QUE TIPO DE ALARMATIENEN

CUANTO PAGARIAN POR UNA ALARMADE LOS QUE HAN SIDO ROBADO

0,00%5,00%

10,00%15,00%20,00%25,00%30,00%35,00%

MAX. 5

0 SOLE

S

MAX. 1

50 S

OLES

NO ESPECIF

ICA

CUANTO PAGARIANPOR UNA ALARMADELOS QUE HAN SIDOROBADO

Page 188: Tesispptfinal

;pantalla LCD 

cblockCHAR ;ubicación del caracterTEMP ;almacenamiento temporalNumCadena ;numero de la cadena;índicecontador1 ;registro usado por retardocontador2 ;registro usado por retardoW_tempendc

 DATOS EQU PORTD ;líneas de datos = portDCNTRL EQU PORTD ;líneas de control = portD

 E EQU 1 ;línea de control E = bit1RW EQU 2 ;línea de control RW = bit2RS EQU 3 ;línea de control RS = bit3

|

Page 189: Tesispptfinal

DISP_ON_CURSOR_BLINK EQU B'00001111' ;Display ;on, cursor on,blink

DISP_ON_NOCURSOR EQU B'00001100' ;Display on, cursor offDISP_CLEAR EQU B'00000001' ;Aclarar displayDISP_OFF EQU b'00001000' ;apaga el displayDISP_LINEA2 EQU b'11000000' ;segunda línea

 t0 equ 0x0;constante para generar aprox.50mst4.6ms equ 0x06*4;constante para generar 4,6mst15.4ms equ 0x14*4 ;constante para generar 15,4mst200us equ 0x01 ;constante para generar aprox. 200us

Page 190: Tesispptfinal

;*******************************************************;EnviaCarLCD - Envía un caracter a la pantalla LCD *;Esta rutina separa el caracter entre el nibble superior e inferior*;y los envía a la pantalla LCD, nibble mas alto primero *;*******************************************************EnviaCarLCDmovwf W_temp ;almacena temporal Wmovwf CHAR ;W contiene caracter a ser enviadocall TestBusyLCD ;Esperar que LCD este listomovf CHAR,wandlw 0xF0 ;Obtener el nibble superiormovwf DATOS ;Enviar datos al LCDbcf CNTRL,RW ;Poner al LCD en modo lecturabsf CNTRL,RS ;Poner al LCD en modo de datosnopbsf CNTRL,E ;Conmutar Enopbcf CNTRL,Eswapf CHAR,w

Page 191: Tesispptfinal

andlw 0xF0 ;Obtener el nibble inferiormovwf DATOS ;Enviar datos al LCDbcf CNTRL,RW ;Poner al LCD en modo lecturabsf CNTRL,RS ;Poner al LCD en modo de datosnopbsf CNTRL,E ;Conmutar Enopbcf CNTRL,Emovf W_temp,W ;restaura W

 return

 ************************************************************;*EnviaCmdLCD - Envía comando a la pantalla LCD *;*Esta rutina separa el comando en nibble superior y nibble *;*inferior y los envía a la pantalla LCD, nibble mas alto primero *************************************************************

Page 192: Tesispptfinal

EnviaCmdLCDmovwf CHAR ;Caracter a ser enviado esta en reg. Wcall TestBusyLCD ;esperar LCD listomovf CHAR,wandlw 0xF0 ;Obtener nibble superiormovwf DATOS ;enviar dato al LCD

bcf CNTRL,RW ;Poner LCD en modo lectura bcf CNTRL,RS ;Poner LCD en modo comando

nopbsf CNTRL,E ;conmutar E para LCDnopbcf CNTRL,Eswapf CHAR,wandlw 0xF0 ; Obtener nibble inferiormovwf DATOS ;enviar dato al LCDnopbsf CNTRL,E ;conmutar E para LCDnopbcf CNTRL,Ereturn

Page 193: Tesispptfinal

;* Esta rutina chequea el flag de busy de la pantalla LCD, *;* retorna cuando no esta ocupado *;* Afecta: *;* TEMP - retorna con busy/address *TestBusyLCDbanco1movlw b'11110000' ;Seleccionar DATOS[4..7]movwf TRISD banco0bcf CNTRL,RS ; Poner LCD en modo comandobsf CNTRL,RW ; prepara para leer flag de busynopbsf CNTRL,E ;E='1'nopmovf DATOS,W ;Lee flag de busy

;del nibble sup., dirección DDRambcf CNTRL,E ;conmuta E para tomar nibble inferiorandlw 0F0h ;Enmascara el nibblemovwf TEMP ;lo almacenanopbsf CNTRL,Enop

Page 194: Tesispptfinal

swapf DATOS,w ;Lee flag de busy del nibble inf., dirección DDRambcf CNTRL,E ;Poner E='0'andlw 00Fh ;Enmascara nibble superioriorwf TEMP ;Combina nibblesbtfsc TEMP,7 ;Chequea flag de busy, alto = ocupadogoto TestBusyLCD ;Si esta ocupado, chequear nuevamentebcf CNTRL,RWbanco1movlw 0x00 ;poner DATOS como salidasmovwf TRISDbanco0return

Page 195: Tesispptfinal

 ;******************************************************;* Esta rutina inicializa la pantalla LCD *;* Afecta: *;* TEMP - retornado con busy/address *;******************************************************inicio_LCDbanco0

 bcf CNTRL,E ; aclara líneas de controlbcf CNTRL,RWbcf CNTRL,RSmovlw 0x0F ;aclara líneas de datosmovwf DATOS;Configurar puertos DATOS[4..7] y CNTRL[1..3] como salidasbanco1movlw B'00001111' ;4 bits mas altos de DATOSmovwf TRISDbcf TRISD,E ;bits de control como salidasbcf TRISD,RWbcf TRISD,RSbanco0

Page 196: Tesispptfinal

 ;Inicializar la pantalla LCDmovlw t15.4ms ;guarda de 15msmovwf contador2call retardomovlw B'00110000' ;Configurar LCD para interfaz de 4 bitsmovwf DATOSnopbsf CNTRL,E ;conmutar E para LCDnopbcf CNTRL,Emovlw t4.6msmovwf contador2call retardomovlw B'00110000' ;Función escoger 2 líneasmovwf DATOS ;de caracteres de 5x7 bitsnopbsf CNTRL,E ;conmutar E para LCDnopbcf CNTRL,Emovlw B'00110000' ;Parte de la secuencia de encendidomovwf DATOS

Page 197: Tesispptfinal

call retardomovlw B'00100000' ;Configurar modo 4 bitsmovwf DATOSnopbsf CNTRL,E ;conmutar E para LCDnopbcf CNTRL,E

 ;El flag de ocupado estaría valido después de este punto

movlw B'00101000' ;Interfaz de 4 bits, 2 líneascall EnviaCmdLCD ; de caracteres de 5x7

nop

bsf CNTRL,E ;conmutar E para LCD

nop

bcf CNTRL,E

movlw t200us ;retardo

movwf contador2

Page 198: Tesispptfinal

movlw DISP_ON_CURSOR_BLINK ;Display on, cursor on,blink

call EnviaCmdLCD

movlw DISP_CLEAR ;Aclarar display

call EnviaCmdLCD

movlw B'00000110' ;Poner modo ;incremental, sin desplazamiento

call EnviaCmdLCD

movlw B'10000000' ;Address DDRam ;upper left

call EnviaCmdLCD

return

Page 199: Tesispptfinal

retardo: Rutina que genera un retardo,;* el registro contador2 contiene la duración del retardo;*frecuencia de reloj = 16.000 Mhz;********************************************retardo:

clrf contador1 ;aclara contador1ret:

decfsz contador1,F ;goto retdecfsz contador2,Fgoto retreturn 

ret100ms: ;RETARDO 100 msmovlw t0movwf contador2call retardocall retardoreturn 

 

Page 200: Tesispptfinal

ret300ms:;RETARDO 300 ms

call ret100ms

call ret100ms

call ret100ms

return 

ret600ms:;RETARDO 600 ms

call ret300ms

call ret300ms

return

Page 201: Tesispptfinal

STATUS,Z →0

DIRECCION

endm

STATUS,Z →0

ENDM

DIRECCION

List p= 16f877Include <p16f877.inc>

Errorlevel -207, -302, -305, -209, -205, -306, -203, -301_CONFIG_XT_OSC & _LVP_OFF & _WDT_OFF & _CP_OFF

Je macro direccion

Jae macro direccion

Cte – reg, w

endm

cmp macro reg,cte

Diagrama de Flujo

Page 202: Tesispptfinal

BANCO3: STATUS,RP0 →1 STATUS,RP1 →1

EECON1,WR → 0

BANCO2: STATUS,RP1 →0

Dato → EEDATA direcc→ EEADR

BANCO3: STATUS,RP1 →1

INTCON,GIE →0EECON1, EEPGD →0EECON1, WREN →1O55H→ WW → EECON2OAAH→ WW → EECON2EECON1, WREN →0EECON1, WR →1EECON1, GIE→1

ENDM

write macro

direc,dato

Diagrama de Flujo

Page 203: Tesispptfinal

BANCO2: STATUS,RP0 →1STATUS,RP1 →0

Dato → EEDATA direcc→ EEADR

BANCO3: STATUS,RP1 →1

EECON1, EEPGD →0EECON1, RD →1W→ EEDATA

endm

BANCO0: STATUS,RP0 →0STATUS,RP1 →0

endm

BANCO0: STATUS,RP0 →0STATUS,RP1 →0

endm

read macro

direc,dato

Banco0 macro

Banco0 macro

Diagrama de Flujo

Page 204: Tesispptfinal

COD1 EQU b’11101110'COD2 EQU b’11101101'COD3 EQU b’11101011'COD4 EQU b’11011110'COD5 EQU b’11011101'COD6 EQU b’11011011'COD7 EQU b’10111110'COD8 EQU b’10111101'COD9 EQU b’10111011'COD0 EQU b’01111101'COD# EQU b’01110111'CODA EQU b’11100111'CODB EQU b’11010111'CODC EQU b’10110111'CODD EQU b’01110111'COD EQU b’10111110'

#define c1 → PORTB,0#define c2 → PORTB,1#define c3 → PORTB,2#define c4 → PORTB,3

#define clave1 → ‘A’#define clave2 → ‘3’#define clave3 → ‘B’#define clave4 → ‘4’

Diagrama de Flujo

Page 205: Tesispptfinal

/declarando variables Ficol, Ficol0, Ficol1, Ficol2, Ficol3, conta, contador,

conta1, conta2, conta_e, conta3, conta4, conta5, conta6, conta7, conta7.1, conta7.2, conta7.3, conta7.4, conta8, conta9, conta10, conta11, conta12, conta13, conta14,

conta15, conta16, conta17, conta18, conta2.2, conta2.3, conta2.4, , nuevo_num1, nuevo_num2, nuevo_num3,

nuevo_num4, nuevo_num5, nuevo_num6, nuevo_num7, nuevo_num8, numA, num, num1, num2, num3, num4, num5, num6, num7, num8, dato1, dato2, dato3, dato4,

PDel0, PDel1, PDel2, PDel0_1, PDel1_1, PDel2_1, conta55, conta00, ficol0_2, ficol0_3, ficol0_4, ficol3_2,

ficol3_3, ficol3_4, ficol01

Endc

Org0Goto inicio

Org4Goto inter

inicio

b’11111111'w → TRISCb’0000000'

w → TRISAb’11110000'w → TRISBb’00000010'

w → OPTION_REG

Diagrama de Flujo

Page 206: Tesispptfinal

Clrf PORTAClrf tecla

Clrf conta18Clrf conta17Clrf conta16Clrf conta15Clrf conta14Clrf conta13Clrf conta12Clrf conta11Clrf conta10Clrf conta9Clrf conta8Clrf conta7Clrf conta6Clrf conta5Clrf conta4Clrf conta3Clrf conta2Clrf conta

Clrf contadorClrf num

Clrf numA

w→ b’00000001'Call EnviaCmdLCD

Contador = Contador +1Call inicio_LCD

Bienvenido Ir MENU Presione A

Diagrama de Flujo

Page 207: Tesispptfinal

W → d’131'TMR0 → w

W → b’10100000'INTCON → w

Clrf filaClrf columna

Clrf ficolClrf tecla

W → b’00001110'PORTB → wColumna → w

w→ PORTBColumna → w

Fila → wB’11110000' * fila

B’00001111' * columna

Fila,4 =1 ?

Fila,5 =1 ?

Fila,6 =1 ?

Fila,7 =1 ?

detec

detec

detec

detec

inter

Diagrama de Flujo

Page 208: Tesispptfinal

Columna, 0 =1 ?

Columna, 1 =1 ?

Columna, 2 =1 ?

act1

act2

act3

explora

act1

C4 →1Nop

C1 →0

act2

C1 →1Nop

C2→0

act3

C2→1Nop

C3 →0

Rec_tmr0

Rec_tmr0

Rec_tmr0

Diagrama de Flujo

Page 209: Tesispptfinal

detec

act4

C3 →1Nop

C4 →0

Rec_tmr0

Rec_tmr0

TMR0 → wINTCON,TOIF → 0

retfie

W → filaIorwf → columna

Ficol → w

Cmp conta18, d’1'

Detec0_8

jae

Diagrama de Flujo

Page 210: Tesispptfinal

Cmp conta17, d’1'

Detec0_7

jae

Cmp conta16, d’1'

Detec0_6

jae

Cmp conta15, d’1'

Detec0_5

jae

Cmp conta14, d’1'

Detec0_4

je

Cmp conta12, d’1'

Detec0_3

je

Cmp conta10, d’1'

Detec0_2

je

Cmp conta9, d’1'

Detec0

je

Diagrama de Flujo

Page 211: Tesispptfinal

Cmp conta7, d’1'

Detec1

jae

Cmp conta7.1, d’1'

Detec1.1

jae

Cmp conta7.2, d’1'

Detec1.2

jae

Cmp conta7.3, d’1'

Detec1.3

jae

Cmp conta2, d’1'

Detec3

jae

Cmp conta2.1, d’1'

Detec3.2

jae

Cmp conta2.2, d’1'

Detec3.3

jae

Cmp conta2.3, d’1'

Detec3.4

jae

Diagrama de Flujo

Page 212: Tesispptfinal

Cmp conta, d’1'

Detec2

jae

Cmp ficol, codC

Tecla_14

je

Cmp ficol, codA

je

Tecla_12 explora

Tecla_14

Conta5 = Conta5 +1

Cmp conta5, d’7'

je

Cambio_clave explora

Tecla_12

w→ AnumA→ ww→ d’2'

Call EnviaCmd LCD

Cmp conta5, d’7'

je

Cambio_clave explora

Diagrama de Flujo

Page 213: Tesispptfinal

Cambio_clave

Conta7 = Conta7 + 1W → b’00000001'

Call EnviaCmdLCD

Ingrese clave anterior

Call retardoCall retardoCall retardo

explora

detec1

W → ficolFicol0 → wCall deteccion

W → numnum1→ wClrf conta7

Conta7.2= Conta7.2+1

Detec1_2

W → ficolFicol0 → wCall deteccion

W → numnum2→ w

Clrf conta7.2Conta7.3= Conta7.3+1

exploragoto

exploragoto

Diagrama de Flujo

Page 214: Tesispptfinal

Detec1_3

W → ficolFicol0 → wCall deteccion

W → numnum3→ w

Clrf conta7.3Conta7.4= Conta7.4+1

Detec1_4

W → ficolFicol0 → wCall deteccion

W → numnum4→ w

Clrf conta7.4

Compara_clave_a

Read 15hSTATUS,RP1 → 0

Conta1 → w

1 – conta1 =1 ? Compara_antigua_clave_ano

explora

explora

goto

goto

Diagrama de Flujo

Page 215: Tesispptfinal

Cmp num1, clave1ir_clave2_aJe

Mensaje_error_a

goto

Ir_clave2_a

Cmp num2, clave2ir_clave3_aJe

Mensaje_error_a

goto

Ir_clave3_a

Cmp num3, clave3ir_clave4_aJe

Mensaje_error_a

goto

Ir_clave4_a

Cmp num4, clave4Clave_correcta_aJe

Mensaje_error_a

goto

Diagrama de Flujo

Page 216: Tesispptfinal

Compara_nueva_clave

Read 01hSTATUS, RP1 →0

dato1→w

num1 – dato1 =1 ? Mensaje_error_a

Read 04hSTATUS, RP1 →0

dato2→w

num2 – dato2 =1 ? Mensaje_error_ano

Read 08hSTATUS, RP1 →0

dato3→w

num3– dato3 =1 ? Mensaje_error_ano

Read 12hSTATUS, RP1 →0

dato4→w

num4– dato4=1 ?Mensaje_error_ano

Clave_correcta_a

goto

si

Diagrama de Flujo

Page 217: Tesispptfinal

Mensaje_error_a

Clrf num1Clrf num2Clrf num3Clrf num4

error

Conta_e = Conta_e +1Call retardo: 3

num1 – dato1 =3 ? lazos1 lzgoto goto

Clave_correcta

Clrf conta7Clrf num1Clrf num2Clrf num3Clrf num4

Nueva clave

Conta9 = Conta9 +1 Exploragoto

Diagrama de Flujo

Page 218: Tesispptfinal

Detec0

Clrf conta9W → ficol

ficol0 → wCall deteccion

W → numNuevo_num1 → w

Conta10 → Conta10 + 1 exploragoto

Detec0_2

W → ficol ficol0 → w

Call deteccionW → num

Nuevo_num2→ wClrf conta10

Conta12 → Conta12 + 1 exploragoto

Detec0_3

W → ficol ficol0 → w

Call deteccionW → num

Nuevo_num3→ wClrf conta12

Conta14 → Conta14 + 1 exploragoto

Detec0_4

W → ficol ficol0 → w

Call deteccionW → num

Nuevo_num 4 → wClrf conta14 exploragoto

Diagrama de Flujo

Page 219: Tesispptfinal

Confirmar clave

Conta15 = Conta15 + 1 exploragoto

salta

Conta15 = Conta15 + 1 exploragoto

Detec0_5

Clrf conta15W → ficol

ficol0 → wCall deteccion

W → numNuevo_num 4 → w

Conta14 = conta14 + 1 exploragoto

Detec0_6

W → ficol ficol0 → w

Call deteccionW → num

Nuevo_num 4 → wClrf conta16

Conta17 = conta17 + 1exploragoto

Diagrama de Flujo

Page 220: Tesispptfinal

Detec0_7

W → ficol ficol0 → w

Call deteccionW → num

Nuevo_num 4 → wClrf conta17

Conta18 = conta18 + 1exploragoto

Detec0_8

W → ficol ficol0 → w

Call deteccionW → num

Nuevo_num 4 → wClrf conta18 exploragoto

Nuevo_num1 – Nuevo_num5 = 0 ?

Nuevo_num1 – Nuevo_num5 = 0 ?

Nuevo_num1 – Nuevo_num5 = 0 ?

Nuevo_num1 – Nuevo_num5 = 0 ?

eerror

no

eerror

eerror

eerror

no

no

no

Diagrama de Flujo

Page 221: Tesispptfinal

eerror

Conta00 = Conta00 + 1

Cmp Conta00 , d’3'

lazos1

salta

je

goto

correcto

W → d’1'Conta1 → w

Write 15h, conta1

Write 1h, nuevo_num1Write 4h, nuevo_num2Write 8h, nuevo_num3Write 12h, nuevo_num4

STATUS,RP0 → 0STATUS,RP1 → 0

iniciogoto

Diagrama de Flujo

Page 222: Tesispptfinal

Ingresa_submenu

Conta = conta +1w→b’00000001'

Call enviaCarLCD

Menu activar zonas 1 2 3 4 / A

Call retardo :3 exploragoto

detec2

W → ficol ficol2 → w

Cmp ficol2, cod1

Tecla 1_2goto

Cmp ficol2, cod2

Tecla 2_2goto

Cmp ficol2, cod3

Tecla 3_2goto

Cmp ficol2, cod4

Tecla 4_2goto

Cmp ficol2, codA

Tecla_11_2goto

Cmp ficol2, codC

Tecla_14_2goto

Diagrama de Flujo

Page 223: Tesispptfinal

Tecla 1_2

Contador = Contador + 1w→c1

Call enviaCmdLCDw→a

Call enviaCarLCDCall retardo

exploragoto

Tecla 2_2

Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1

w→c4Call enviaCmdLCD

w→Call enviaCarLCD

Call retardo

exploragoto

Tecla 3_2

Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1

w→c7Call enviaCmdLCD

w→aCall enviaCarLCD

Call retardo

explora

goto

Diagrama de Flujo

Page 224: Tesispptfinal

Tecla 4_2

Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1Contador = Contador + 1

w→caCall enviaCmdLCD

w→aCall enviaCarLCD

Call retardo

explora

goto

Tecla_11_2

w→h’d0'Call EnviaCmdLCD

w→’A’Call EnviaCarLCD

Call retardow→b’00000001'

Call EnviaCmdLCD

Activar_todasgoto

Tecla_14_2

w→h’d3'Call EnviaCmdLCD

w→’C’Call EnviaCarLCD

Call retardow→b’00000001'

Call EnviaCmdLCD

Activar_todasgoto

Diagrama de Flujo

Page 225: Tesispptfinal

ZONAS ?ACTIVADAS

Activar_selecgoto

Activar_selec

Cmp contador, d’2' Test_aje

Cmp contador, d’6' Test_bje

Cmp contador, d’10' Test_cje

Cmp contador, d’13' Test_dje

Cmp contador, d’7' Test_abje

Cmp contador, d’11' Test_acje

Cmp contador, d’14' Test_adje

Cmp contador, d’15' Test_bcje

Cmp contador, d’18' Test_bdje

Cmp contador, d’22' Test_cdje

Cmp contador, d’16' Test_abcje

Cmp contador, d’23' Test_acdje

Cmp contador, d’27' Test_bcdje

Cmp contador, d’19' Test_abdje

Cmp contador, d’28' Test_abcdje

Test_a

1

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Diagrama de Flujo

Page 226: Tesispptfinal

Test_b

2

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo

PORTC,4 =0?reset

PORTC,0 =1? alarma

no

si

no

Lazo1

PORTC,4 =0?reset

PORTC,1 =1? alarma

no

si

no

Diagrama de Flujo

Page 227: Tesispptfinal

Test_b

2

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo1

PORTC,4 =0?reset

PORTC,1 =1? alarma

no

si

no

Test_c

3

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo2

PORTC,4 =0?reset

PORTC,2 =1? alarma

no

si

no

Diagrama de Flujo

Page 228: Tesispptfinal

Test_d

4

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo3

PORTC,4 =0?reset

PORTC,3 =1? alarma

no

si

no

Test_ab

1 y 2

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo4

PORTC,4 =0?reset

PORTC,0 =1?PORTC,1 =1?

alarma

no

si

no

Diagrama de Flujo

Page 229: Tesispptfinal

Test_ac

1 y 3

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo5

PORTC,4 =0?reset

PORTC,0 =1?PORTC,2 =1?

alarma

no

si

no

Test_ad

1 y 4

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo6

PORTC,4 =0?reset

PORTC,0 =1?PORTC,3 =1?

alarma

no

si

no

Diagrama de Flujo

Page 230: Tesispptfinal

Test_bc

2 y 3

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo7

PORTC,4 =0?reset

PORTC,1 =1?PORTC,2 =1?

alarma

no

si

no

Test_bd

2 y 4

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo8

PORTC,4 =0?reset

PORTC,1 =1?PORTC,3 =1?

alarma

no

si

no

Diagrama de Flujo

Page 231: Tesispptfinal

Test_cd

3 y 4

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo9

PORTC,4 =0?reset

PORTC,2 =1?PORTC,3 =1?

alarma

no

si

no

Test_abc

1,2 y 3

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo10

PORTC,4 =0?reset

PORTC,0 =1?PORTC,1 =1?PORTC,2 =1?

alarma

no

si

no

Diagrama de Flujo

Page 232: Tesispptfinal

Test_abd

1,2 y 4

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo11

PORTC,4 =0?reset

PORTC,0 =1?PORTC,1 =1?PORTC,3 =1?

alarma

no

si

no

Test_acd

1,2 y 3

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo12

PORTC,4 =0?reset

PORTC,0 =1?PORTC,2 =1?PORTC,3 =1?

alarma

no

si

no

Diagrama de Flujo

Page 233: Tesispptfinal

Test_bcd

2,3 y 4

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo13

PORTC,4 =0?reset

PORTC,1 =1?PORTC,2 =1?PORTC,3 =1?

alarma

no

si

no

Test_abcd

todas

Call demora 5sw→ b’00000001'

enviaCmdLCD →ww→ b’00001000'

enviaCmdLCD →wCall DEMORA5

Lazo14

PORTC,4 =0?reset

PORTC,0 =1?PORTC,1 =1?PORTC,2=1?PORTC,3 =1?

alarma

no

si

no

Diagrama de Flujo

Page 234: Tesispptfinal

Alarma

PORTA,3→1

w→b’00001111'call enviaCmdLCD

lazos

Cmp conta55, d’1' resetjae

Call retardo: 5

w→b’00000001'call enviaCmdLCD

ALARMA INGRESE

CLAVE PARA DESACTIVAR

ronald

w→h’cf’Call enviaCmdLCDConta2 = conta2 +1

Clrf num1Clrf num2Clrf num3Clrf num4

explora

goto

Diarama de FlujoDiagrama de Flujo

Page 235: Tesispptfinal

detec3

W → ficolFicol0 → wCall deteccion

W → num1num1→ wClrf conta2

Conta2.2= Conta2.2+1

Detec3_2

W → ficolFicol0 → wCall deteccion

W → numnum1→ w

Clrf conta2.2Conta2.3= Conta2.3+1

Detec3_3

W → ficolFicol0 → wCall deteccion

W → numnum1→ w

Clrf conta2.3Conta2.4= Conta2.4+1

Detec3_4

W → ficolFicol0 → wCall deteccion

W → numnum1→ w

Clrf conta2.4

goto explora

goto explora

goto explora

goto explora

Diagrama de Flujo

Page 236: Tesispptfinal

Compara_clave

Clrf conta3Read 15h

STATUS,RP1 → 0Conta1 → w

1 – conta1 =1 ? Compara_nueva_claveno

Cmp num1, clave1 ir_clave2Je

Mensaje_error

goto

Ir_clave2

Cmp num2, clave2 ir_clave3Je

Mensaje_error

goto

Ir_clave3

Cmp num3, clave3ir_clave4Je

Mensaje_error

goto

Ir_clave4

Cmp num4, clave4 Clave_correctaJe

Mensaje_errorgoto

Diagrama de Flujo

Page 237: Tesispptfinal

Compara_nueva_clave

Read 01hSTATUS, RP1 →0

dato1→w

num1 – dato1 =1 ? Mensaje_error

Read 04hSTATUS, RP1 →0

dato2→w

num2 – dato2 =1 ? Mensaje_errorno

Read 08hSTATUS, RP1 →0

dato3→w

num3– dato3 =1 ? Mensaje_errorno

Read 12hSTATUS, RP1 →0

dato4→w

num4– dato4=1 ?Mensaje_errorno

Clave_correcta

goto

si Diagrama de Flujo

Page 238: Tesispptfinal

Mensaje_error

Clrf num1Clrf num2Clrf num3Clrf num4

error

Conta4 = Conta4 +1

Clave_correcta

PORTA,3→0

Clave correcta

Cmp conta4, d’3'

bloqueo alarmaje

lazosgoto

Call retardo: 4

lazosgoto

Bloqueo_alarma

Alarma bloqueada

lazos1goto

Call DEMORA5: 4 lazos1goto

Diagrama de Flujo

Page 239: Tesispptfinal

reset

W → b’001101'PORTA → w

W → b’00001111'Call EnviaCmdLCD

Call retardoW → b’00000001'

Call EnviaCmdLCD

Conta55 = Conta55 + 1

Ing. clave

ronald

DEMORA5

w→ 193PDel0 → w

PLoop0

w→ 193PDel0 → w

PLoop1

w→ 232PDel1 → w

PLoop2

clrwdt

Diagrama de Flujo

Page 240: Tesispptfinal

PDel1 PDel2goto

PDel2 PDel3goto

PDel3 PDel4goto

PDel4 PDel5goto

PDel5 PDel6goto

PDel6 PDel7goto

PDel7 PDel8goto

PDel8 PDel9goto

PDel9 PDel10goto

PDel10 PDel11goto

PDel11 PDel12goto

PDel12 clrwdtgoto

PDel2,1 = PDel2,1 - 1 PLoop2goto

PLoop1goto

PLoop0goto

PDel1,1 = PDel1,1 - 1

PDel0,1 = PDel0,1 - 1

Diagrama de Flujo

Page 241: Tesispptfinal

PDel13 PDel14goto

PDel14 PDel15goto

PDel15 PDel16goto

PDel16 PDel17goto

PDel17 PDel18goto

PDel18 PDel19goto

PDel19 PDel20goto

PDel20 PDel21goto

PDel21 PDel22goto

PDel22 PDel23goto

PDel23 PDel24goto

PDel24 clrwdtgoto

return

demora5s

w→ 165PDel0 _1→ w

PLoop0_1

w→ .41PDel0_1 → w

PLoop1_1

w→ 232PDel1_1 → w

Diagrama de Flujo

Page 242: Tesispptfinal

PLoop2_1

clrwdt

clrwdt

PDel2_1,1 = PDel2_1,1 - 1 PLoop2goto

PLoop1goto

PLoop0goto

PDel1_1,1 = PDel1_1,1 - 1

PDel0_1,1 = PDel0_1,1 - 1

return

deteccion

Cmp ficol0,cod1

Tecla1_0je

Cmp ficol0,cod2

Tecla2_0je

Cmp ficol0,cod3

Tecla3_0je

Cmp ficol0,cod4

Tecla4_0je

Cmp ficol0,cod5

Tecla5_0je

Diagrama de Flujo

Page 243: Tesispptfinal

Cmp ficol0,cod6

Tecla6_0je

Cmp ficol0,cod7

Tecla7_0je

Cmp ficol0,cod8

Tecla8_0je

Cmp ficol0,cod9

Tecla9_0je

Cmp ficol0,cod0

Tecla10_0je

Cmp ficol0, cod#

Tecla11_0je

Cmp ficol0, codA

Tecla12_0je

Cmp ficol0, codB

Tecla13_0je

Cmp ficol0,codC

Tecla14_0je

Cmp ficol0,codD

Tecla15_0je

Cmp ficol0,cod

Tecla16_0je

Diagrama de Flujo

Page 244: Tesispptfinal

Tecla1_0

W → ‘1’Num → w

cmpara2goto

Tecla2_0

W →‘2’Num → w

cmpara2goto

Tecla3_0

W →‘3’Num → w

cmpara2goto

Tecla4_0

W → ‘4’Num → w

cmpara2goto

Tecla5_0

W → ‘5’Num → w

cmpara2goto

Tecla6_0

W → ‘6’Num → w

cmpara2goto

Diagrama de Flujo

Page 245: Tesispptfinal

Tecla7_0

W → ‘7’Num → w

cmpara2goto

Tecla8_0

W → ‘8’Num → w

cmpara2goto

Tecla9_0

W → ‘9’Num → w

cmpara2goto

Tecla10_0

W → ‘0’Num → w

cmpara2goto

Tecla11_0

W → ‘#’Num → w

cmpara2goto

Tecla12_0

W → ‘A’Num → w

cmpara2goto Diagrama de Flujo

Page 246: Tesispptfinal

Tecla13_0

W → ‘B’Num → w

cmpara2goto

Tecla14_0

W → ‘C’Num → w

cmpara2goto

Tecla15_0

W → ‘D’Num → w

cmpara2goto

Tecla16_0

W → ‘ ’Num → w

cmpara2goto

cmpara2

return

Include “lcd.asm”

end

Diagrama de Flujo

Page 247: Tesispptfinal

A1

F1 F2

Sensor de movimiento

220V I1

S2

I2

I3Leyenda I1: Interruptor S/2.90I2: Interruptor S/2.90I3: Interruptor S/2.90

S1: Sensor F1: Reflector Halógeno 500W S/14.90F2: Reflector Halógeno 500W S/14.90

A1: AdaptadorKIT

-Central de alarmas-Detector de movimiento

-Sensor de apertura-Control remoto x 2

Total s/304.9

Page 248: Tesispptfinal

 VIII BIBLIOGRAFIALibro Microcontroladores PIC16F877, José M. Angulo, Susana Romero Yesa, Ignacio Angulo MartínezLibro PROGRAMMING AND CUSTOMIZING PICmicro MICROCONTROLLERS 2nd edition, Myke Predko.Revista 'Saber Electrónica' Agosto 2003, Artículo 'MICROCONTROLADORES, que son y para que sirven' Revista 'Saber Electrónica' Febrero 2003, Artículo'ELECTRONICA Y COMPUTACION Estímulo por reloj en la simulación de programas para PIC'Revista 'Saber Electrónica' Mayo 2003, Artículo'MONTAJES Compilador de basic para assembler de PIC'Revista 'Saber Electrónica' No 165, Artículo 'MICROCONTROLADORES, Diseño básico de osciladores con PIC'Revista 'Saber Electrónica' No 161, Artículo 'ARTICULO PORTADA, Niple: ahora programar es fácil'Revista 'Saber Electrónica' Octubre 2003, Artículo 'ELECTRONICA Y COMPUTACION, Prueba de Pcs para trabajar con PICs' Revista 'Evereryday Practical Electronics', Vol.32 'Special Feature PIC MACROS AND COMPUTED GOTOS', Malcolm WilesRevista 'Ciencias' Vol. 65, Marzo 2002 Artículo 'Pequeña manual de reglas básicas ¿Cómo escribir una tesis?, Zenón Cano Santana