Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tesispptfinal

253 views

Published on

  • Login to see the comments

  • Be the first to like this

Tesispptfinal

  1. 1. TESIS: ALARMA DIGITAL DE 4 ZONAS EXPOSITOR: Alcocer Sotil, Álvaro I INTRODUCCIÓN 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
  2. 2. III MARCO TEÓRICO Y CONCEPTUAL 3.1 Antecedentes de la investigación . 3.1.1 Sistema de radio 3.1.1.1 Ventajas 3.1.1.2 Inconvenientes 3.1.2 Sistema de cableado 3.1.2.1 Ventajas 3.1.2.2 Inconvenientes 3.1.3 Sistema volumétrico de sensores 3.1.3.1 Ventajas 3.1.3.2 Inconvenientes 3.1.4 Sistema de alarma simple 3.1.4.1 Ventajas 3.1.4.2 Inconvenientes 3.1.5 Sistema de vigilancia y seguridad usando mux demux 3.1.5.1 Descripción la operación completa del circuito 3.1.5.2 Desventajas 3.1.6 Circuito de alarma usando un latch d 3.1.6.1 Descripción
  3. 3. 3.1.7 Detector Infrarrojo de proximidad 3.2 Bases teóricas 3.3 Definición de términos básicos 3.3.1 alarma 3.3.2 sensor 3.4 hipótesis IV SISTEMA DE VARIABLES 4.1 Determinación de Variables 4.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 muestra 5.3 Técnica de análisis 5.3.1 Sistema de codificación y tabulación.
  4. 4. 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.
  5. 5. VII.- DESARROLLO DEL PROYECTO- ALARMA DIGITAL DE 4 ZON 7.1 Introducción: 7.2 Descripción 7.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 sistema 7.5.2 Descripción de los elementos utilizados 7.5.3 Apreciación global del dispositivo 7.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 datos 7.5.5 Archivos de registro de propósito general 7.5.5.1 Option_reg register 7.5.5.2 Intcon register (address 0bh, 8bh, 10bh, 18bh) 7.2.6 LCD Juego de caracteres
  6. 6. 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
  7. 7. 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.
  8. 8. 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".
  9. 9. 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
  10. 10. 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
  11. 11. 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.
  12. 12. III.- MARCO TEÓRICO Y CONCEPTUAL 3.1.-Antecedentes de la investigación Sistemas 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 radio Ventajas: - 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
  13. 13. 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.
  14. 14. 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 multiplexordemultiplexor. 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.
  15. 15. Fig.3.1 Sistema de vigilancia y seguridad
  16. 16. 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
  17. 17. 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 O 6 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
  18. 18. 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
  19. 19. 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.
  20. 20. 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.
  21. 21. 3.2 Bases teóricas Microprocesadores I y II Aplicaciones 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.
  22. 22. 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)
  23. 23. 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))
  24. 24. Trabas para los ladrones (El Comercio, Domingo 15 de julio del 2006 (Mi Hogar))
  25. 25. El reto de la próxima gestión edilicia, El Comercio 6 de agosto del 2006, Pág.. A17
  26. 26. El reto de la próxima gestión edilicia, El Comercio 6 de agosto del 2006, Pág.. A16
  27. 27. 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.
  28. 28. 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ón Té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.
  29. 29. 5.7 Fuentes, Técnicas y Instrumentos de Recolección de Datos Se 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 4 2) ¿Cómo entraron? Por la puerta: □ de madera □ de fierro □ de otra clase de material □ Por la ventana □ Otra manera:_________________________________
  30. 30. 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
  31. 31. 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 circuitos Jorge Manrique.Economista. Asesoría en la parte de estructura y organización de la tesis Cristian Cóndor. Estudiante de Ingeniería electrónica. Asesoría en la parte de diseño de circuitos La recolección de datos estuvo a cargo del tesista.
  32. 32. 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.
  33. 33. 6.3.- Cronograma de Actividades. 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.4.- Financiamiento. Esta a cargo del tesista.
  34. 34. 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
  35. 35. 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) 123A 456B 789C *0# Fig. 1 Fig. 1
  36. 36. Circuito pictórico de la Alarma Digital
  37. 37. CAPA TOP
  38. 38. CAPA BOTTOM
  39. 39. 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.
  40. 40. 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.
  41. 41. 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.
  42. 42. 7.5.2 Descripción de los elementos utilizados Microcontroladores FLASH CMOS de 8 bits de 28/40 pines Tipos de encapsulado del PIC16F874/7
  43. 43. 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.
  44. 44. 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.
  45. 45. 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.
  46. 46. 7.5.5.1 OPTION_REG Register
  47. 47. 7.5.7.2 INTCON REGISTER (ADDRESS 0Bh, 8Bh, 10Bh, 18Bh)
  48. 48. 7.2.6 LCD 7.2.6.1 1 Vss 2 Vdd 3 Vo 4 5 6 7-14 introducción Vss Patilla de tierra de alimentación Vdd Patilla de alimentación de +5V 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 crista líquido. RS RA0 Selección del registro de control/registro de datos: RS =0 Selección del registro de control RS =1 Selección del registro de datos R/W RA1 Señal de lectura/escritura R/W =0 El Módulo LCD es escrito R/W= 1 El Módulo LCD es leído E RA2 Señal de activación del módulo LCD: E=0 Módulo desconectado E=1 Modulo conectado D0-D7 RB0-RB7 Bus de datos bi-direccional.
  49. 49. Juego de caracteres Es 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.
  50. 50. Definición de macros: Je Jae Cmp Write Read Banco0 Banco1 Definición de columnas de matricial Definición de clave de fabricante Definición de Dígitos del teclado Definición de variables Inicio Configuración de puertos y registros Limpiar contadores Llamada inicio LCD Mensaje “Bienvenido Ir Menú Presione A” Configuración de interrupción Interrupción
  51. 51. Explora Rc_tmr0 Detección Detección de clave nueva Detección de clave anterior Clave para desactivar alarma Detec2 (ingresa_submenú) Tecla_14 Tecla_12 Cambio_clave Lz Mensaje “Ingrese clave anterior” Detec1 Detec1_2 Detec1_3 Detec1_4
  52. 52. Compara_clave_a Ir_clave2_a Ir_clave3_a Ir_clave4_a Compara_antigua_clave_a Mensaje_error_a Clave_correcta_a Mensaje “Nueva Clave” Detección del primer digito de la clave nueva Detección del segundo digito de la clave nueva Detección del tercer digito de la clave nueva Detección del cuarto digito de la clave nueva Mensaje “Confirmar clave”
  53. 53. Salta Detección de confirmación del primer digito de la clave nueva Detección de confirmación del segundo digito de la clave nueva Detección de confirmación del tercer digito de la clave nueva Detección de confirmación del cuarto digito de la clave nueva Comparar nuevas claves y la confirmación Eerror Correcto Grabar en eeprom Ingresar_submenú Mensaje “Menú activar zonas 1 2 3 4 A C” Bloque de detección 2
  54. 54. Tecla1_2 Contador1 Tecla2_2 Contador1 Tecla3_2 Contador1 Tecla4_2 Contador11 Tecla11_2 A activar todas Tecla14_2 Confirmar dirección cursor Mensaje “Zonas Activas” Activar_selec Comparación para el testeo de selección
  55. 55. Test_a Lazo Test_b Lazo1 Test_c Lazo2 Test_d Lazo3 Test_ab Lazo4 Test_ac Lazo5 Test_ad Lazo6
  56. 56. Test_bc Lazo7 Test_bd Lazo8 Test_cd Lazo9 Test_abc Lazo10 Test_acd Lazo11 Test_bcd Lazo12 Test_abcd Lazo13
  57. 57. Mensaje “Todas activadas” Lazo14 Alarma Lazos Mensaje “Alarma Ingresar clave para desactivar” Ronald Detec3 Detec3_2 Detec3_3 Detec3_4 Compara_clave Ir_clave2 Ir_clave3 Ir_clave4
  58. 58. Compara nueva clave Leer en eeprom y comparación de nuevas claves de usuario Mensaje_error Mensaje “error” Clave correcta Mensaje “Clave correcta” Bloqueo de alarma Reset buqle para resetear el programa Mensaje “Ingrese clave” DEMORA5
  59. 59. demora5s detección bloque detección de teclado tecla1_0 tecla2_0 tecla3_0 Tecla4_0 tecla5_0 tecla6_0 tecla7_0 tecla8_0 tecla9_0 tecla_10_0 tecla_11_0 tecla_12_0 tecla_13_0 tecla_14_0 tecla_15_0 tecla_16_0 cmpara2 end
  60. 60. list p=16f877 include <p16f877.inc> errorlevel -207, -302, -305, -209, -205, -306, -203, -301 __CONFIG _XT_OSC & _LVP_OFF & _WDT_OFF & _CP_OFF ; definición de macros je macro dirección btfsc STATUS,Z goto dirección endm jae macro dirección. btfsc STATUS,C goto direccion. endm cmp macro reg,cte movlw cte subwf reg,W endm Programa de la alarma en assembler
  61. 61. write macro direcc,dato bsf STATUS,RP1 BSF STATUS,RP0 BTFSC EECON1,WR GOTO $-1 BCF STATUS,RP0 movlw direcc MOVWF EEADR bcf STATUS,RP1 movf dato,w bsf STATUS,RP1 MOVWF EEDATA BSF STATUS,RP0 BCF EECON1,EEPGD Programa de la alarma en assembler
  62. 62. BSF EECON1,WREN BCF INTCON,GIE MOVLW 55H MOVWF EECON2 MOVLW 0AAh MOVWF EECON2 BSF EECON1,WR BSF INTCON,GIE BCF EECON1,WREN endm read macro direcc1 BSF STATUS,RP1 BCF STATUS,RP0 movlw direcc1 MOVWF EEADR Programa de la alarma en assembler
  63. 63. BSF STATUS,RP0 BCF EECON1,EEPGD BSF EECON1,RD BCF STATUS,RP0 MOVF EEDATA,W endm banco1 macro bsf STATUS,RP0 bcf STATUS,RP1 endm banco0 macro bcf STATUS,RP0 Programa de la alarma en assembler bcf STATUS,RP1 endm
  64. 64. #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
  65. 65. 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
  66. 66. 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, Programa de la alarma en assembler count,conta55, endc
  67. 67. org 0 goto inicio org 4 goto inter inicio: bsf STATUS,RP0 ;INICIO movlw b'11111111' ;sensores movwf TRISC movlw b'00000000' movwf TRISA ;actuador movlw b'11110000' movwf TRISB movlw b'00000010' movwf OPTION_REG bcf STATUS,RP0 Programa de la alarma en assembler
  68. 68. lazos1: ;lazo infinito después de apagar la alarma clrf PORTA clrf tecla clrf conta18 clrf conta17 clrf conta16 clrf conta15 clrf conta14 clrf conta13 clrf conta12 clrf conta11 clrf conta10 Programa de la alarma en assembler
  69. 69. 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
  70. 70. movlw b'00000001' call EnviaCmdLCD incf contador call inicio_LCD ;dirección de la fila movlw h'81' ;dirección cursor primera fila call EnviaCmdLCD movlw ' ' call EnviaCarLCD movlw '*' call EnviaCarLCD movlw '*' call EnviaCarLCD movlw '*' call EnviaCarLCD Programa de la alarma en assembler
  71. 71. 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
  72. 72. call EnviaCarLCD movlw 'N' call EnviaCarLCD movlw 'I' call EnviaCarLCD movlw 'D' call EnviaCarLCD movlw 'O' call EnviaCarLCD movlw h'c1' call EnviaCmdLCD movlw 'I' call EnviaCarLCD movlw 'R' Programa de la alarma en assembler
  73. 73. 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
  74. 74. call EnviaCarLCD movlw 'P' call EnviaCarLCD movlw 'R' call EnviaCarLCD movlw 'E' call EnviaCarLCD movlw 'S' call EnviaCarLCD movlw 'I' call EnviaCarLCD movlw 'O' call EnviaCarLCD Programa de la alarma en assembler
  75. 75. 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
  76. 76. movlw d'131' ;interrup c/10 ms movwf TMR0 movlw b'10100000' ;habilita int. TMR0 movwf INTCON clrf fila clrf columna clrf ficol clrf tecla movlw b'00001110' ;c1=0 movwf PORTB movwf columna goto $ ; bucle infinito Programa de la alarma en assembler
  77. 77. ;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=0 goto detec ;si, tecla presionada btfss fila,5 ;no, es f2=0 goto detec Programa de la alarma en assembler
  78. 78. explora: act1: btfss fila,6 goto detec btfss fila,7 goto detec btfss columna,0 goto act2 btfss columna,1 goto act3 btfss columna,2 goto act4 bsf c4 nop bcf c1 goto rec_tmr0 ;es f3=0 ;es f4=0 ;es c1=0 ;es c2=0 ;es c3=0 Programa de la alarma en assembler
  79. 79. 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
  80. 80. rec_tmr0: movlw n_tmr0 movwf TMR0 bcf INTCON,T0IF retfie ; bloque de detección detec: movf fila,W ;detección de solo dos teclas para ir menú y poner clave iorwf columna,W movwf ficol ;detección de clave nueva a comparación cmp conta18,d'1' ;cuarto digito almacenado jae detec0_8 cmp conta17,d'1' ;tercer digito almacenado jae detec0_7 Programa de la alarma en assembler
  81. 81. 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 almacenado je detec0_4 cmp conta12,d'1' ;tercer digito almacenado je detec0_3 cmp conta10,d'1' ;segundo digito almacenado je detec0_2 Programa de la alarma en assembler
  82. 82. cmp conta9,d'1' je detec0 ;primer digito guardado ;si conta9 es igual a 1 ;se va a etiqueta detec0(clave_correcta_a) ;detección de clave anterior cmp conta7.4,d'1' jae detec1_4 cmp conta7.3,d'1' jae detec1_3 cmp conta7.2,d'1' jae detec1_2 cmp conta7,d'1' jae detec1 ;si conta7 es mayor ;o igual a 1 se va a etiqueta ;detec1(cambio_clave) Programa de la alarma en assembler
  83. 83. ;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
  84. 84. ;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_14 cmp ficol,codA ;compara tecla A je tecla_12 goto explora tecla_14: incf conta5 ;incrementar hasta 7 veces cmp conta5,d'7' je cambio_clave ;etiqueta para cambio de clave goto explora Programa de la alarma en assembler
  85. 85. 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
  86. 86. 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
  87. 87. movlw 'G' call EnviaCarLCD movlw 'R' call EnviaCarLCD movlw 'E' call EnviaCarLCD movlw '.' call EnviaCarLCD movlw 'C' call EnviaCarLCD movlw 'l call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'V' call EnviaCarLCD movlw 'E' call EnviaCarLCD movlw ' ' Programa de la alarma en assembler
  88. 88. call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'N' call EnviaCarLCD movlw 'T' call EnviaCarLCD movlw 'E' call EnviaCarLCD movlw 'R' call EnviaCarLCD movlw 'I' call EnviaCarLCD Programa de la alarma en assembler
  89. 89. 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
  90. 90. ;detección primer digito detec1: movf ficol,w movwf ficol0 call deteccion movf num,w movwf num1 ;detección segundo digito incf conta7.2 clrf conta7 goto explora Programa de la alarma en assembler
  91. 91. 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
  92. 92. detec1_3: movf ficol,w movwf ficol0 call deteccion movf num,w movwf num3 ;detección cuarto digito incf conta7.4 clrf conta7.3 goto explora detec1_4: movf ficol,w movwf ficol0 call deteccion movf num,w movwf num4 clrf conta7.4 Programa de la alarma en assembler
  93. 93. compara_clave_a: clrf conta6 ;limpiar contador read 15h bcf STATUS,RP1 movwf conta1 movlw d'1' subwf conta1,w btfsc STATUS,Z goto compara_antigua_clave_a cmp num1,clave1 je ir_clave2_a goto mensaje_error_a Programa de la alarma en assembler
  94. 94. 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
  95. 95. compara_antigua_clave_a: ;leer en EEPROM y ;comparación de claves nuevas del usuario read 01h bcf STATUS,RP1 movwf dato1 movf num1,w subwf dato1,w btfss STATUS,Z goto mensaje_error_a read 04h bcf STATUS,RP1 movwf dato2 movf num2,w subwf dato2,w btfss STATUS,Z goto mensaje_error_a Programa de la alarma en assembler
  96. 96. read 08h bcf STATUS,RP1 movwf dato3 movf num3,w subwf dato3,w btfss STATUS,Z goto mensaje_error_a read 12h bcf STATUS,RP1 movwf dato4 movf num4,w subwf dato4,w btfss STATUS,Z goto mensaje_error_a goto clave_correcta_a Programa de la alarma en assembler
  97. 97. mensaje_error_a: clrf num1 clrf num2 clrf num3 clrf num4 movlw b'00000001' ;limpiar call EnviaCmdLCD movlw h'81' ;dirección cursor primera fila call EnviaCmdLCD movlw 'E' call EnviaCarLCD movlw 'R' call EnviaCarLCD movlw 'R' call EnviaCarLCD movlw 'O' call EnviaCarLCD movlw 'R' call EnviaCarLCD Programa de la alarma en assembler
  98. 98. incf conta_e call retardo call retardo call retardo call retardo movlw d'3‘ ;compara hasta 3 sino se reinicia el ;programa subwf conta_e,w btfsc STATUS,Z goto lazos1 goto lz ;lazo repetitivo pide de nuevo ingresar ;la clave anterior clave_correcta_a: clrf conta7 clrf num1 clrf num2 clrf num3 clrf num4 Programa de la alarma en assembler
  99. 99. ;nueva clave a ingresar movlw b'00000001' call EnviaCmdLCD movlw h'81' ;dirección cursor primera fila call EnviaCmdLCD movlw 'N‘ call EnviaCarLCD movlw 'U call EnviaCarLCD movlw 'E' call EnviaCarLCD ;ingrese nueva clave movlw 'V' Programa de la alarma en assembler
  100. 100. 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
  101. 101. call EnviaCarLCD movlw ':' call EnviaCarLCD movlw h'8e' call EnviaCmdLCD incf conta9 goto explora ;detección del primer digito de la clave detec0: clrf conta9 movf ficol,w movwf ficol0 call deteccion movf num,w movwf nuevo_num1 Programa de la alarma en assembler
  102. 102. ;detección del segundo digito incf conta10 goto explora detec0_2: clrf conta10 movf ficol,w movwf ficol0 call deteccion movf num,w movwf nuevo_num2 ;detección del tercer digito incf conta12 goto explora Programa de la alarma en assembler
  103. 103. 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
  104. 104. detec0_4: clrf conta14 movf ficol,w movwf ficol0 call deteccion movf num,w movwf nuevo_num4 movlw h'c1';dirección cursor primera ;fila call EnviaCmdLCD movlw 'C' call EnviaCarLCD movlw 'O call EnviaCarLCD movlw 'N' Programa de la alarma en assembler
  105. 105. 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
  106. 106. call EnviaCarLCD movlw 'V' call EnviaCarLCD movlw 'E‘ call EnviaCarLCD movlw ':' call EnviaCarLCD movlw h'ce' call EnviaCmdLCD incf conta15 goto explora ; Programa de la alarma en assembler
  107. 107. salta: movlw h'ce' call EnviaCmdLCD movlw ' ' call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw h'ce' call EnviaCmdLCD incf conta15 goto explora ;XXXXXXXXXXXXXXXXXXXXXx ;XXXXXXXXXXXXXXXXXXXXX Programa de la alarma en assembler
  108. 108. ;detección del primer digito de la clave detec0_5: clrf conta15 movf ficol,w movwf ficol0 call deteccion movf num,w movwf nuevo_num5 ;detección del segundo digito incf conta16 goto explora Programa de la alarma en assembler
  109. 109. 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
  110. 110. detec0_7: clrf conta17 movf ficol,w movwf ficol0 call deteccion movf num,w movwf nuevo_num7 ;detección del cuarto digito incf conta18 goto explora detec0_8: clrf conta18 movf ficol,w movwf ficol0 call deteccion movf num,w movwf nuevo_num8 Programa de la alarma en assembler
  111. 111. ;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
  112. 112. movf nuevo_num4,w subwf nuevo_num8,w btfss STATUS,Z goto eerror goto correcto eerror: incf conta00 cmp conta00,d'3' je lazos1 goto salta correcto: movlw d'1' movwf conta1 write 15h,conta1 Programa de la alarma en assembler
  113. 113. ;grabar en EEPROM write 01h,nuevo_num1 write 04h,nuevo_num2 write 08h,nuevo_num3 write 12h,nuevo_num4 bcf STATUS,RP1;regresar al banco 0 bcf STATUS,RP0;regresar al banco 0 goto inicio ingresa_submenú: incf conta movlw b'00000001' ;limpiar display call EnviaCmdLCD movlw h'81';dirección cursor primera fila call EnviaCmdLCD Programa de la alarma en assembler
  114. 114. 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 EnviaCarLCD Programa de la alarma en assembler
  115. 115. movlw 'T' call EnviaCarLCD movlw 'I' call EnviaCarLCD movlw 'V' call EnviaCarLCD movlw '.' call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw 'Z' call EnviaCarLCD movlw 'O' call EnviaCarLCD movlw 'N' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'S' call EnviaCarLCD Programa de la alarma en assembler
  116. 116. ;zona 1 ;zona 2 ;zona 3 movlw h'c0' call EnviaCmdLCD movlw '1' call EnviaCarLCD movlw h'c3' call EnviaCmdLCD movlw '2‘ call EnviaCarLCD movlw h'c6' call EnviaCmdLCD movlw '3‘ call EnviaCarLCD movlw h'c9' call EnviaCmdLCD movlw '4' Programa de la alarma en assembler
  117. 117. ;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 EnviaCarLCD movlw h'd2‘ call EnviaCmdLCD movlw 'C';confirmar zonas activadas Programa de la alarma en assembler
  118. 118. detec2: call EnviaCarLCD movlw h'cd' call EnviaCmdLCD call retardo call retardo call retardo goto explora ; bloque de detección 2 movf ficol,w movwf ficol2 cmp ficol2,cod1 je tecla1_2 cmp ficol2,cod2 je tecla2_2 cmp ficol2,cod3 je tecla3_2 cmp ficol2,cod4 je tecla4_2 cmp ficol2,codA je tecla_11_2 cmp ficol2,codC Programa de la alarma en assembler je tecla_14_2 goto explora
  119. 119. ;el contador empieza con 1 tecla1_2: incf contador ;1<--contador movlw h'c1' ;dirección cursor ,segunda fila call EnviaCmdLCD movlw 'a' call EnviaCarLCD call retardo goto explora tecla2_2: incf contador ;5 <--contador incf contador incf contador incf contador incf contador movlw h'c4' ;dirección cursor ,segunda fila call EnviaCmdLCD movlw 'a' call EnviaCarLCD call retardo Programa de la alarma en assembler goto explora
  120. 120. tecla3_2: incf contador ;9<--contador incf contador incf contador incf contador incf contador incf contador incf contador incf contador incf contador movlw h'c7' ;dirección cursor ,segunda fila call EnviaCmdLCD movlw 'a' movwf num3 call EnviaCarLCD call retardo goto explora Programa de la alarma en assembler
  121. 121. tecla4_2: incf contador ;12<--contador incf contador incf contador incf contador incf contador incf contador incf contador incf contador incf contador incf contador incf contador incf contador movlw h'ca' ;dirección cursor ,segunda fila call EnviaCmdLCD movlw 'a' call EnviaCarLCD call retardo goto explora Programa de la alarma en assembler
  122. 122. tecla_11_2: movlw h'd0'; "A" activas todas dirección cursor ; ,segunda fila call EnviaCmdLCD movlw 'A' call EnviaCarLCD call retardo;limpiar display movlw b'00000001' call EnviaCmdLCD goto activar_todas ;etiqueta de testeo de todos los sensores Programa de la alarma en assembler
  123. 123. tecla_14_2: movlw h'd3' ;"confirmar" dirección cursor ,segunda fila call EnviaCmdLCD movlw 'C' call EnviaCarLCD call retardo ;limpiar display movlw b'00000001' call EnviaCmdLCD movlw h'81' ;dirección cursor primera fila call EnviaCmdLCD movlw 'Z' call EnviaCarLCD movlw 'O' call EnviaCarLCD movlw 'N' Programa de la alarma en assembler
  124. 124. call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'S' call EnviaCarLCD movlw ':' call EnviaCarLCD movlw h'ca' call EnviaCmdLCD movlw 'A call EnviaCarLCD movlw 'C' call EnviaCarLCD Programa de la alarma en assembler
  125. 125. 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
  126. 126. movlw h'c0' call EnviaCmdLCD goto activar_selec; etiqueta de testeo ;dependiendo de los sensores ; seleccionados 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 repitan cmp contador,d'2' je test_a cmp contador,d'6' je test_b cmp contador,d'10' je test_c Programa de la alarma en assembler
  127. 127. 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
  128. 128. 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
  129. 129. test_a: movlw '1' ;visualiza alarma 1 activada call EnviaCarLCD call demora5s movlw b'00000001';limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 ;demora de 5 minutos para ;q el usuario pueda salir del perímetro Programa de la alarma en assembler
  130. 130. lazo: btfsc PORTC,4 ; pin para resetear el programa goto reset btfss PORTC,0 ;es 1 ; testeo de la entrada goto lazo ; no goto alarma ;si test_b: movlw '2' ;visualiza alarma 2 activada call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 Programa de la alarma en assembler
  131. 131. lazo1: test_c: btfsc PORTC,4 goto reset btfss PORTC,1 goto lazo1 goto alarma movlw '3' ;visualiza alarma 3 activada call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 lazo2: btfsc PORTC,4 goto reset btfss PORTC,2 goto lazo2 Programa de la alarma en assembler goto alarma
  132. 132. test_d: movlw '4' ;visualiza alarma 4 activada call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 lazo3: btfsc PORTC,4 goto reset btfss PORTC,3 goto lazo3 goto alarma Programa de la alarma en assembler
  133. 133. test_ab: lazo4: movlw '1' ;visualiza alarma 1y2 activada call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '2' call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 btfsc PORTC,4 goto reset btfsc PORTC,0 goto alarma btfss PORTC,1 goto lazo4 goto alarma Programa de la alarma en assembler ;es 0 ;no ;si es 1 ;no ;si
  134. 134. test_ac: lazo5: movlw '1' ;visualiza alarma 1y3 activada call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '3' call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 btfsc PORTC,4 goto reset btfsc PORTC,0 goto alarma btfss PORTC,2 goto lazo5 goto alarma Programa de la alarma en assembler
  135. 135. test_ad: lazo6: movlw '1' ;visualiza alarma 1y4 activada call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '4' call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 btfsc PORTC,4 goto reset btfsc PORTC,0 goto alarma btfss PORTC,3 goto lazo6 Programa de la alarma en assembler goto alarma
  136. 136. test_bc: lazo7: movlw '2' ;visualiza alarma 2y3 activada call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '3' call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 btfsc PORTC,4 goto reset btfsc PORTC,1 goto alarma btfss PORTC,2 goto lazo7 Programa de la alarma en assembler goto alarma
  137. 137. test_bd: lazo8: movlw '2' ;visualiza alarma 2y4 activada call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '4' call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 btfsc PORTC,4 goto reset btfsc PORTC,1 goto alarma btfss PORTC,3 goto lazo8 Programa de la alarma en assembler goto alarma
  138. 138. test_cd: lazo9: movlw '3' ;visualiza alarma 3y4 activada call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '4' call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 btfsc PORTC,4 goto reset btfsc PORTC,2 goto alarma btfss PORTC,3 Programa de la alarma en assembler goto lazo9 goto alarma
  139. 139. test_abc: movlw '1' ;visualiza alarma 12y3 activada call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw '2' call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '3' call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 lazo10: btfsc PORTC,4 goto reset btfsc PORTC,0 Programa de la alarma en assembler goto alarma
  140. 140. btfsc PORTC,1 goto alarma btfss PORTC,2 goto lazo10 goto alarma test_acd: movlw '1' ;visualiza alarma 13y4 activada call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw '3' call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '4' call EnviaCarLCD call demora5s movlw b'00000001' Programa de la alarma en assembler
  141. 141. ;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 alarma Programa de la alarma en assembler
  142. 142. test_bcd: movlw '2' ;visualiza alarma 2 3 y 4 activada call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw '3' call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '4' call EnviaCarLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD Programa de la alarma en assembler call DEMORA5
  143. 143. lazo12: btfsc PORTC,4 goto reset btfsc PORTC,1 goto alarma btfsc PORTC,2 goto alarma btfss PORTC,3 goto lazo12 goto alarma test_abcd: movlw '1' ;visualiza alarma 1 2 3 y 4 activada call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw '2' call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw '3' Programa de la alarma en assembler
  144. 144. call EnviaCarLCD movlw 'y' call EnviaCarLCD movlw '4' call EnviaCarLCD call demora5s movlw b'00000001‘ ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' call EnviaCmdLCD call DEMORA5 Programa de la alarma en assembler
  145. 145. lazo13: activar_todas: btfsc PORTC,4 goto reset btfsc PORTC,0 goto alarma btfsc PORTC,1 goto alarma btfsc PORTC,2 goto alarma btfss PORTC,3 goto lazo13 goto alarma activar_todas: movlw h'81' ;dirección cursor primera fila call EnviaCmdLCD movlw 'T call EnviaCarLCD movlw 'O' call EnviaCarLCD Programa de la alarma en assembler
  146. 146. ;visualiza todas activadas movlw 'D' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'S' call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw 'A call EnviaCarLCD movlw 'C' call EnviaCarLCD movlw 'T' call EnviaCarLCD movlw 'I' call EnviaCarLCD movlw 'V' call EnviaCarLCD movlw 'A' call EnviaCarLCD Programa de la alarma en assembler
  147. 147. movlw 'D' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'S' call EnviaCmdLCD call demora5s movlw b'00000001' ;limpiar y apagar display call EnviaCmdLCD movlw b'00001000' EnviaCmdLCD lazo14: call call DEMORA5 btfsc PORTC,4 goto reset btfsc PORTC,0 goto alarma btfsc PORTC,1 goto alarma Programa de la alarma en assembler
  148. 148. btfsc PORTC,2 goto alarma btfss PORTC,3 goto lazo14 goto alarma alarma: lazos: bsf PORTA,3 ;alarma encendida ;sirena ;encender display movlw b'00001111' call EnviaCmdLCD cmp conta55,d'1' jae reset call retardo call retardo call retardo call retardo call retardo Programa de la alarma en assembler
  149. 149. movlw b'00000001' call EnviaCmdLCD movlw h'80' ;dirección cursor primera fila call EnviaCmdLCD movlw '*' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'L' call EnviaCarLCD movlw 'A' ;visualiza alarma ingrese clave ;para descativarla call EnviaCarLCD Programa de la alarma en assembler
  150. 150. movlw 'R' call EnviaCarLCD movlw 'M' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw '*' call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw 'I' call EnviaCarLCD movlw 'N' call EnviaCarLCD movlw 'G‘ Programa de la alarma en assembler
  151. 151. call EnviaCarLCD movlw '.' call EnviaCarLCD movlw ' ' call EnviaCarLCD movlw 'C' call EnviaCarLCD movlw 'L' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'V' call EnviaCarLCD movlw 'E' call EnviaCarLCD movlw h'c1' call EnviaCmdLCD Programa de la alarma en assembler
  152. 152. 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
  153. 153. call EnviaCarLCD movlw 'S' call EnviaCarLCD ronald: movlw 'A' call EnviaCarLCD movlw 'C' call EnviaCarLCD movlw 'T' call EnviaCarLCD movlw '.' call EnviaCarLCD movlw h'cf' call EnviaCmdLCD incf conta2 clrf num1 clrf num2 clrf num3 clrf num4 goto explora ;inc conta2 Programa de la alarma en assembler
  154. 154. ;desactivar alarma ;primer digito detec3: movf ficol,w movwf ficol0 call deteccion movf num,w movwf num1 ;segundo digito clrf conta2 incf conta2.2 goto explora detec3_2: movf ficol,w movwf ficol0 call deteccion movf num,w movwf num2 ;tercer digito clrf conta2.2 incf conta2.3 goto explora Programa de la alarma en assembler
  155. 155. detec3_3: movf ficol,w movwf ficol0 call deteccion movf num,w movwf num3 ;cuarto digito clrf conta2.3 incf conta2.4 goto explora detec3_4: movf ficol,w movwf ficol0 call deteccion movf num,w movwf num4 clrf conta2.4 compara_clave: clrf conta3 read 15h bcf STATUS,RP1 movwf conta1 ;limpiar contador Programa de la alarma en assembler
  156. 156. movlw d'1' subwf conta1,w btfsc STATUS,Z goto compara_nueva_clave cmp num1,clave1 je ir_clave2 goto mensaje_error ir_clave2: cmp num2,clave2 je ir_clave3 goto mensaje_error ir_clave3: cmp num3,clave3 je ir_clave4 Programa de la alarma en assembler goto mensaje_error cmp num4,clave4 je clave_correcta goto mensaje_error ;mensaje error y falta ;limpiar pantalla ir_clave4:
  157. 157. compara_nueva_clave: ;leer en EEPROM Y ;comparación de claves nuevas del usuario read 01h bcf STATUS,RP1 movwf dato1 movf num1,w subwf dato1,w btfss STATUS,Z goto mensaje_error read 04h bcf STATUS,RP1 movwf dato2 movf num2,w subwf dato2,w btfss STATUS,Z goto mensaje_error Programa de la alarma en assembler
  158. 158. 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 Programa de la alarma en assembler goto mensaje_error goto clave_correcta
  159. 159. mensaje_error: clrf num1 clrf num2 clrf num3 clrf num4 movlw b'00000001' call EnviaCmdLCD movlw h'81' ;limpiar ;dirección cursor primera fila Programa de la alarma en assembler
  160. 160. 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
  161. 161. clave_correcta: bcf PORTA,3 ;apagar alarma movlw b'00000001' ;limpiar call EnviaCmdLCD movlw h'80‘ ;dirección cursor ;primera fila call EnviaCmdLCD movlw '*' call EnviaCarLCD movlw '*' ;clave bloqueada call EnviaCarLCD movlw 'C' call EnviaCarLCD movlw 'L' call EnviaCarLCD Programa de la alarma en assembler movlw 'A' ''
  162. 162. 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
  163. 163. call EnviaCarLCD movlw 'E' call EnviaCarLCD movlw 'C' call EnviaCarLCD movlw 'T' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw '*' call EnviaCarLCD movlw '*' call EnviaCarLCD call retardo call retardo call retardo call retardo goto lazos1; después de apagar se reinicia el ;programa Programa de la alarma en assembler
  164. 164. bloqueo_alarma: movlw h'81' ;dirección cursor primera fila call EnviaCmdLCD movlw '*' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'L' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw 'R' call EnviaCarLCD movlw 'M' call EnviaCarLCD movlw 'A' call EnviaCarLCD movlw ' ' call EnviaCarLCD Programa de la alarma en assembler
  165. 165. 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' Programa de la alarma en assembler call EnviaCarLCD
  166. 166. 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
  167. 167. goto lazos1 ;se reinicia alarma ;después de 8 minutos y se va lazos1 ;------------------------------;bucle para resetear e rpograma ;-------------------------------reset: movlw b'001101' ;sirena movwf PORTA ;encender display movlw b'00001111' call EnviaCmdLCD call retardo call retardo movlw b'00000001' Programa de la alarma en assembler
  168. 168. call EnviaCmdLCD movlw h'81' ;dirección cursor primera fila call EnviaCmdLCD movlw 'I' call EnviaCarLCD movlw 'N' call EnviaCarLCD movlw 'G' call EnviaCarLCD movlw 'R' call EnviaCarLCD movlw '.' call EnviaCarLCD Programa de la alarma en assembler
  169. 169. 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
  170. 170. ;------------------------------------------------------------; 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 movwf PLoop0 PDel0 movlw movwf .193 .232 ; 1 set numero de repetición (C) ;1| ; 1 set numero de repetición (B) movwf PLoop2 clrwdt ;1| movlw PLoop1 PDel1 .248 PDel2 ;1| ; 1 set numero de repetición (A) ; 1 clear watchdog Programa de la alarma en assembler
  171. 171. PDelL1 goto PDelL2 ; 2 ciclos delay PDelL2 goto PDelL3 ; 2 ciclos delay PDelL3 goto PDelL4 ; 2 ciclos delay PDelL4 goto PDelL5 ; 2 ciclos delay PDelL5 goto PDelL6 ; 2 ciclos delay PDelL6 goto PDelL7 ; 2 ciclos delay PDelL7 goto PDelL8 ; 2 ciclos delay PDelL8 goto PDelL9 ; 2 ciclos delay PDelL9 goto PDelL10 ; 2 ciclos delay PDelL10 goto PDelL11 ; 2 ciclos delay PDelL11 goto PDelL12 ; 2 ciclos delay PDelL12 clrwdt ; 1 ciclo delay Programa de la alarma en assembler
  172. 172. 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, loop PDelL13 goto PDelL14 ; 2 ciclos delay PDelL14 goto PDelL15 ; 2 ciclos delay PDelL15 goto PDelL16 ; 2 ciclos delay PDelL16 goto PDelL17 ; 2 ciclos delay PDelL17 goto PDelL18 ; 2 ciclos delay PDelL18 goto PDelL19 ; 2 ciclos delay PDelL19 goto PDelL20 ; 2 ciclos delay PDelL20 goto PDelL21 ; 2 ciclos delay PDelL21 goto PDelL22 ; 2 ciclos delay PDelL22 goto PDelL23 ; 2 ciclos delay PDelL23 goto PDelL24 ; 2 ciclos delay PDelL24 clrwdt ; 1 ciclo delay return ; 2+2 Fin. ;------------------------------------------------------------Programa de la alarma en assembler
  173. 173. ;------------------------------------------------------------; 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, loop Programa de la alarma en assembler return ; 2+2 Fin. ;-------------------------------------------------------------
  174. 174. ;bloque de detección de teclado detección: cmp ficol0,cod1 je tecla1_0 cmp ficol0,cod2 je tecla2_0 cmp ficol0,cod3 je tecla3_0 cmp ficol0,cod4 je tecla4_0 cmp ficol0,cod5 je tecla5_0 cmp ficol0,cod6 je tecla6_0 cmp ficol0,cod7 je tecla7_0 cmp ficol0,cod8 je tecla8_0 cmp ficol0,cod9 je tecla9_0 cmp ficol0,cod0 je tecla_10_0 Programa de la alarma en assembler
  175. 175. tecla1_0: cmp ficol0,cod# je tecla_11_0 cmp ficol0,codA je tecla_12_0 cmp ficol0,codB je tecla_13_0 cmp ficol0,codC je tecla_14_0 cmp ficol0,codD je tecla_15_0 cmp ficol0,cod je tecla_16_0 ;nuevo nuevo num movlw '*' call EnviaCarLCD call retardo movlw '1' movwf num goto cmpara2 ;se va a etiqueta cmpara2 Programa de la alarma en assembler
  176. 176. tecla2_0: tecla3_0: tecla4_0: movlw '*' call EnviaCarLCD call retardo movlw '2' movwf num goto cmpara2 movlw '*' call EnviaCarLCD call retardo movlw '3' movwf num goto cmpara2 movlw '*' call EnviaCarLCD call retardo movlw '4' movwf num goto cmpara2 Programa de la alarma en assembler
  177. 177. tecla5_0: movlw '*' call EnviaCarLCD call retardo movlw '5' movwf num tecla6_0: goto cmpara2 movlw '*' call EnviaCarLCD call retardo movlw '6' movwf num goto cmpara2 Programa de la alarma en assembler
  178. 178. tecla7_0: movlw '*' call EnviaCarLCD call retardo movlw '7' movwf num goto cmpara2 tecla8_0: movlw '*' call EnviaCarLCD call retardo movlw '8' movwf num goto cmpara2 Programa de la alarma en assembler
  179. 179. 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
  180. 180. tecla_11_0: tecla_12_0: movlw '*' call EnviaCarLCD call retardo movlw '#' movwf num goto cmpara2 movlw '*' call EnviaCarLCD call retardo movlw 'A' movwf num goto cmpara2 Programa de la alarma en assembler
  181. 181. 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
  182. 182. tecla_15_0: movlw '*' call EnviaCarLCD call retardo movlw 'D' movwf num goto cmpara2 tecla_16_0: movlw '*' call EnviaCarLCD call retardo movlw 's' movwf num goto cmpara2 cmpara2: return ;----------------------------------------------------------include "lcd.asm" ;se incluye la macro de lcd Programa de la alarma en assembler end
  183. 183. ROBOS EN CASA 60% 50% 40% 30% ROBOS EN CASA 20% 10% 0% SI HAN SIDO ROBADOS NO HAN SIDO ROBADOS PROCEDENCIA DE LOS QUE DIJERON NO SURCO LA VICTORIA S.M.P. 4 3 CALLAO SANTA ANITA 2 V.M.T PTE PIEDRA VITARTE 1 0 CERCADO VILLA EL SAL CHORRILLOS CIENEGUILLA RIMAC S.J.L. COMAS PROCEDENCIA DE LOS QUE DIJERON NO
  184. 184. CUANTO PAGARIAN LOS QUE DIJERON NO 70,00% 60,00% 50,00% CUANTO PAGARIAN LOS QUE DIJERON NO 40,00% 30,00% 20,00% 10,00% 0,00% MAX. 50 MAX. 150 MAX. 10 MAX. 1 SOLES SOLES SOLES SOLES POR DONDE ENTRARON LOS RATEROS A SU CASA PUERTA DE FIERRO 60,00% TENIAN LLAVE 40,00% 20,00% 0,00% PUERTA OTRO MAT PUERTA DE MADERA VENTANA TECHO POR DONDE ENTRARON LOS RATEROS A SU CASA
  185. 185. QUE USARON PARA ENTRAR PATA DE CABRA 40% 30% NO ESPECIFICA LLAVE DE ACERO 20% 10% 0% ESCALERAS QUE USARON PARA ENTRAR METIERON LA MANO BALAZO DE LOS QUE DIJERON QUE SI LE HABIAN ROBADO 80,00% 70,00% 60,00% 50,00% DE LOS QUE DIJERON QUE SI LE HABIAN ROBADO 40,00% 30,00% 20,00% 10,00% 0,00% TIENE ALARMA NO TIENE ALARMA
  186. 186. QUE TIPO DE ALARMA TIENEN EMPOTRADA A PUERTA 10,00% NO ESPECIFICA 5,00% CONFIG DE ZONAS 0,00% QUE TIPO DE ALARMA TIENEN CON SENSOR INFRARROJO TIENE PERRO CUANTO PAGARIAN POR UNA ALARMADE LOS QUE HAN SIDO ROBADO 35,00% 30,00% 25,00% 20,00% 15,00% 10,00% 5,00% 0,00% CI FI CA PE ES NO AX .1 50 M M AX .5 0 SO LE S SO LE S CUANTO PAGARIAN POR UNA ALARMADE LOS QUE HAN SIDO ROBADO
  187. 187. ;pantalla LCD cblock CHAR TEMP NumCadena ;índice contador1 contador2 W_temp endc DATOS EQU CNTRL EQU E EQU 1 RW EQU 2 RS EQU 3 | ;ubicación del caracter ;almacenamiento temporal ;numero de la cadena ;registro usado por retardo ;registro usado por retardo PORTD ;líneas de datos = portD PORTD ;líneas de control = portD ;línea de control E = bit1 ;línea de control RW = bit2 ;línea de control RS = bit3
  188. 188. DISP_ON_CURSOR_BLINK EQU B'00001111' ;Display ;on, cursor on,blink DISP_ON_NOCURSOR EQU B'00001100' ;Display on, cursor off DISP_CLEAR EQU B'00000001' ;Aclarar display DISP_OFF EQU b'00001000' ;apaga el display DISP_LINEA2 EQU b'11000000' ;segunda línea t0 t4.6ms t15.4ms t200us equ 0x0;constante para generar aprox.50ms equ 0x06*4;constante para generar 4,6ms equ 0x14*4 ;constante para generar 15,4ms equ 0x01 ;constante para generar aprox. 200us
  189. 189. ;******************************************************* ;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 * ;******************************************************* EnviaCarLCD movwf W_temp ;almacena temporal W movwf CHAR ;W contiene caracter a ser enviado call TestBusyLCD ;Esperar que LCD este listo movf CHAR,w andlw 0xF0 ;Obtener el nibble superior movwf DATOS ;Enviar datos al LCD bcf CNTRL,RW ;Poner al LCD en modo lectura bsf CNTRL,RS ;Poner al LCD en modo de datos nop bsf CNTRL,E ;Conmutar E nop bcf CNTRL,E swapf CHAR,w
  190. 190. andlw 0xF0 ;Obtener el nibble inferior movwf DATOS ;Enviar datos al LCD bcf CNTRL,RW ;Poner al LCD en modo lectura bsf CNTRL,RS ;Poner al LCD en modo de datos nop bsf CNTRL,E ;Conmutar E nop bcf CNTRL,E movf 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 * ************************************************************
  191. 191. EnviaCmdLCD movwf CHAR ;Caracter a ser enviado esta en reg. W call TestBusyLCD ;esperar LCD listo movf CHAR,w andlw 0xF0 ;Obtener nibble superior movwf DATOS ;enviar dato al LCD bcf CNTRL,RW ;Poner LCD en modo lectura bcf CNTRL,RS ;Poner LCD en modo comando nop bsf CNTRL,E ;conmutar E para LCD nop bcf CNTRL,E swapf CHAR,w andlw 0xF0 ; Obtener nibble inferior movwf DATOS ;enviar dato al LCD nop bsf CNTRL,E ;conmutar E para LCD nop bcf CNTRL,E return
  192. 192. ;* Esta rutina chequea el flag de busy de la pantalla LCD, ;* retorna cuando no esta ocupado ;* Afecta: * ;* TEMP - retorna con busy/address * TestBusyLCD banco1 movlw b'11110000' ;Seleccionar DATOS[4..7] movwf TRISD banco0 bcf CNTRL,RS ; Poner LCD en modo comando bsf CNTRL,RW ; prepara para leer flag de busy nop bsf CNTRL,E ;E='1' nop movf DATOS,W ;Lee flag de busy ;del nibble sup., dirección DDRam bcf CNTRL,E ;conmuta E para tomar nibble inferior andlw 0F0h ;Enmascara el nibble movwf TEMP ;lo almacena nop bsf CNTRL,E nop * *
  193. 193. swapf DATOS,w ;Lee flag de busy del nibble inf., dirección DDRam bcf CNTRL,E ;Poner E='0' andlw 00Fh ;Enmascara nibble superior iorwf TEMP ;Combina nibbles btfsc TEMP,7 ;Chequea flag de busy, alto = ocupado goto TestBusyLCD ;Si esta ocupado, chequear nuevamente bcf CNTRL,RW banco1 movlw 0x00 ;poner DATOS como salidas movwf TRISD banco0 return
  194. 194. ;****************************************************** ;* Esta rutina inicializa la pantalla LCD * ;* Afecta: * ;* TEMP - retornado con busy/address * ;****************************************************** inicio_LCD banco0 bcf CNTRL,E ; aclara líneas de control bcf CNTRL,RW bcf CNTRL,RS movlw 0x0F ;aclara líneas de datos movwf DATOS ;Configurar puertos DATOS[4..7] y CNTRL[1..3] como salidas banco1 movlw B'00001111' ;4 bits mas altos de DATOS movwf TRISD bcf TRISD,E ;bits de control como salidas bcf TRISD,RW bcf TRISD,RS banco0
  195. 195. ;Inicializar la pantalla LCD movlw t15.4ms ;guarda de 15ms movwf contador2 call retardo movlw B'00110000' ;Configurar LCD para interfaz de 4 bits movwf DATOS nop bsf CNTRL,E ;conmutar E para LCD nop bcf CNTRL,E movlw t4.6ms movwf contador2 call retardo movlw B'00110000' ;Función escoger 2 líneas movwf DATOS ;de caracteres de 5x7 bits nop bsf CNTRL,E ;conmutar E para LCD nop bcf CNTRL,E movlw B'00110000' ;Parte de la secuencia de encendido movwf DATOS
  196. 196. nop bsf CNTRL,E ;conmutar E para LCD nop bcf CNTRL,E movlw t200us ;retardo movwf contador2 call retardo movlw B'00100000' ;Configurar modo 4 bits movwf DATOS nop bsf CNTRL,E ;conmutar E para LCD nop bcf CNTRL,E ;El flag de ocupado estaría valido después de este punto movlw B'00101000' ;Interfaz de 4 bits, 2 líneas call EnviaCmdLCD ; de caracteres de 5x7
  197. 197. movlw DISP_ON_CURSOR_BLINK ;Display on, cursor on,blink call EnviaCmdLCD movlw DISP_CLEAR call ;Aclarar display EnviaCmdLCD movlw B'00000110' ;Poner modo ;incremental, sin desplazamiento call EnviaCmdLCD movlw B'10000000' ;upper left call return EnviaCmdLCD ;Address DDRam
  198. 198. 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 contador1 ret: decfsz contador1,F ; goto ret decfsz contador2,F goto ret return ret100ms: ;RETARDO 100 ms movlw t0 movwf contador2 call retardo call retardo return
  199. 199. ret300ms: ;RETARDO 300 ms call ret100ms call ret100ms call ret100ms return ret600ms: ;RETARDO 600 ms call ret300ms call ret300ms return
  200. 200. Diagrama de Flujo
  201. 201. Diagrama de Flujo
  202. 202. Diagrama de Flujo
  203. 203. Diagrama de Flujo
  204. 204. Diagrama de Flujo
  205. 205. Diagrama de Flujo
  206. 206. Diagrama de Flujo
  207. 207. Diagrama de Flujo
  208. 208. Diagrama de Flujo
  209. 209. Diagrama de Flujo
  210. 210. Diagrama de Flujo
  211. 211. Diagrama de Flujo
  212. 212. Diagrama de Flujo
  213. 213. Diagrama de Flujo
  214. 214. Diagrama de Flujo
  215. 215. Diagrama de Flujo
  216. 216. Diagrama de Flujo
  217. 217. Diagrama de Flujo
  218. 218. Diagrama de Flujo
  219. 219. Diagrama de Flujo
  220. 220. Diagrama de Flujo
  221. 221. Diagrama de Flujo
  222. 222. Diagrama de Flujo
  223. 223. Diagrama de Flujo
  224. 224. Diagrama de Flujo
  225. 225. Diagrama de Flujo
  226. 226. Diagrama de Flujo
  227. 227. Diagrama de Flujo
  228. 228. Diagrama de Flujo
  229. 229. Diagrama de Flujo
  230. 230. Diagrama de Flujo
  231. 231. Diagrama de Flujo
  232. 232. Diagrama de Flujo
  233. 233. Diarama de Flujo Diagrama de Flujo
  234. 234. Diagrama de Flujo
  235. 235. Diagrama de Flujo
  236. 236. Diagrama de Flujo
  237. 237. Diagrama de Flujo
  238. 238. Diagrama de Flujo
  239. 239. Diagrama de Flujo
  240. 240. Diagrama de Flujo
  241. 241. Diagrama de Flujo
  242. 242. Diagrama de Flujo
  243. 243. Diagrama de Flujo
  244. 244. Diagrama de Flujo
  245. 245. Diagrama de Flujo
  246. 246. Leyenda I1: Interruptor S/2.90 I2: Interruptor S/2.90 I3: Interruptor S/2.90 S1: Sensor F1: Reflector Halógeno 500W S/14.90 F2: Reflector Halógeno 500W S/14.90 A1: Adaptador KIT -Central de alarmas -Detector de movimiento -Sensor de apertura -Control remoto x 2 Total s/304.9
  247. 247. VIII BIBLIOGRAFIA Libro Microcontroladores PIC16F877, José M. Angulo, Susana Romero Yesa, Ignacio Angulo Martínez Libro PROGRAMMING AND CUSTOMIZING PICmicro MICROCONTROLLERS 2 nd 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 Wiles Revista 'Ciencias' Vol. 65, Marzo 2002 Artículo 'Pequeña manual de reglas básicas ¿Cómo escribir una tesis?, Zenón Cano Santana

×