SlideShare uma empresa Scribd logo
1 de 248
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
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.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.
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.
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
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
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.
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".
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
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
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.
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
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.
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.
Fig.3.1 Sistema de vigilancia y seguridad
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
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
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
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.
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.
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.
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)
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))
Trabas para los ladrones (El Comercio, Domingo 15 de julio del 2006 (Mi Hogar))
El reto de la próxima gestión edilicia, El Comercio 6 de agosto del 2006, Pág.. A17
El reto de la próxima gestión edilicia, El Comercio 6 de agosto del 2006, Pág.. A16
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.
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.
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:_________________________________
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
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.
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.
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.
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
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
Circuito pictórico de la Alarma Digital
CAPA TOP
CAPA BOTTOM
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.
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.
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.
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
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.
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.
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.
7.5.5.1 OPTION_REG Register
7.5.7.2 INTCON REGISTER (ADDRESS 0Bh, 8Bh, 10Bh, 18Bh)
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.
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.
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
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
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”
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
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
Test_a
Lazo
Test_b
Lazo1
Test_c
Lazo2
Test_d
Lazo3
Test_ab
Lazo4
Test_ac
Lazo5
Test_ad
Lazo6
Test_bc
Lazo7
Test_bd
Lazo8
Test_cd
Lazo9
Test_abc
Lazo10
Test_acd
Lazo11
Test_bcd
Lazo12
Test_abcd
Lazo13
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
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
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
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
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
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
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
#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
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
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
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
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
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
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
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
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
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
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
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
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
;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
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
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
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
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
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
;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
;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
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
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
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
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
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
;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
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
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
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
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
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
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
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
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
;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
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
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
;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
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
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
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
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
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
;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
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
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
;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
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
;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
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
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
;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
;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
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
;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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
;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
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
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
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
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
;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
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
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
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
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
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
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
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
;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
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
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:
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
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
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
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
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'
''
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
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
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
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
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
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
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
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
;------------------------------------------------------------; 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
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
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
;------------------------------------------------------------; 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.
;-------------------------------------------------------------
;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
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
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
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
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
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
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
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
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
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
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
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
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
;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
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
;*******************************************************
;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
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 *
************************************************************
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
;* 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

*
*
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
;******************************************************
;* 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
;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
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
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
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
ret300ms:
;RETARDO 300 ms
call

ret100ms

call

ret100ms

call

ret100ms

return
ret600ms:
;RETARDO 600 ms
call

ret300ms

call

ret300ms

return
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diarama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
Diagrama de Flujo
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
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

Mais conteúdo relacionado

Mais procurados

⭐⭐⭐⭐⭐ PRÁCTICA: ANÁLISIS DE CIRCUITOS COMBINATORIALES
⭐⭐⭐⭐⭐ PRÁCTICA: ANÁLISIS DE CIRCUITOS COMBINATORIALES⭐⭐⭐⭐⭐ PRÁCTICA: ANÁLISIS DE CIRCUITOS COMBINATORIALES
⭐⭐⭐⭐⭐ PRÁCTICA: ANÁLISIS DE CIRCUITOS COMBINATORIALESVictor Asanza
 
⭐⭐⭐⭐⭐ Lecciones Segundo Parcial (2do Parcial)
⭐⭐⭐⭐⭐ Lecciones Segundo Parcial (2do Parcial)⭐⭐⭐⭐⭐ Lecciones Segundo Parcial (2do Parcial)
⭐⭐⭐⭐⭐ Lecciones Segundo Parcial (2do Parcial)Victor Asanza
 
Manual alarma gsm
Manual alarma gsmManual alarma gsm
Manual alarma gsmJAV_999
 
⭐⭐⭐⭐⭐ RESUMEN DE PASOS EN IMPLEMENTACION DE SD (2do Parcial)
⭐⭐⭐⭐⭐ RESUMEN DE PASOS EN IMPLEMENTACION DE SD  (2do Parcial)⭐⭐⭐⭐⭐ RESUMEN DE PASOS EN IMPLEMENTACION DE SD  (2do Parcial)
⭐⭐⭐⭐⭐ RESUMEN DE PASOS EN IMPLEMENTACION DE SD (2do Parcial)Victor Asanza
 
Manual alarma al 2000
Manual alarma al 2000Manual alarma al 2000
Manual alarma al 2000DeckSkull
 
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESDISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESFranklin J.
 
Práctica 8
Práctica 8Práctica 8
Práctica 8Jomicast
 
Manual rtu5024 noviembre2020
Manual rtu5024 noviembre2020Manual rtu5024 noviembre2020
Manual rtu5024 noviembre2020JAV_999
 
Manual citofono gsm
Manual citofono gsmManual citofono gsm
Manual citofono gsmJAV_999
 
practica 3 labo 2014_escribe tu nombre en displays
practica 3 labo 2014_escribe tu nombre en displayspractica 3 labo 2014_escribe tu nombre en displays
practica 3 labo 2014_escribe tu nombre en displaysFISGON59
 
Como usar display anodo común
Como usar display anodo comúnComo usar display anodo común
Como usar display anodo comúngustavo276
 

Mais procurados (20)

⭐⭐⭐⭐⭐ PRÁCTICA: ANÁLISIS DE CIRCUITOS COMBINATORIALES
⭐⭐⭐⭐⭐ PRÁCTICA: ANÁLISIS DE CIRCUITOS COMBINATORIALES⭐⭐⭐⭐⭐ PRÁCTICA: ANÁLISIS DE CIRCUITOS COMBINATORIALES
⭐⭐⭐⭐⭐ PRÁCTICA: ANÁLISIS DE CIRCUITOS COMBINATORIALES
 
⭐⭐⭐⭐⭐ Lecciones Segundo Parcial (2do Parcial)
⭐⭐⭐⭐⭐ Lecciones Segundo Parcial (2do Parcial)⭐⭐⭐⭐⭐ Lecciones Segundo Parcial (2do Parcial)
⭐⭐⭐⭐⭐ Lecciones Segundo Parcial (2do Parcial)
 
Alarma xc gsm707
Alarma xc gsm707Alarma xc gsm707
Alarma xc gsm707
 
Manual alarma gsm
Manual alarma gsmManual alarma gsm
Manual alarma gsm
 
Informe 4 digitales
Informe 4 digitalesInforme 4 digitales
Informe 4 digitales
 
⭐⭐⭐⭐⭐ RESUMEN DE PASOS EN IMPLEMENTACION DE SD (2do Parcial)
⭐⭐⭐⭐⭐ RESUMEN DE PASOS EN IMPLEMENTACION DE SD  (2do Parcial)⭐⭐⭐⭐⭐ RESUMEN DE PASOS EN IMPLEMENTACION DE SD  (2do Parcial)
⭐⭐⭐⭐⭐ RESUMEN DE PASOS EN IMPLEMENTACION DE SD (2do Parcial)
 
Manual alarma al 2000
Manual alarma al 2000Manual alarma al 2000
Manual alarma al 2000
 
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESDISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
 
Práctica 8
Práctica 8Práctica 8
Práctica 8
 
Manual rtu5024 noviembre2020
Manual rtu5024 noviembre2020Manual rtu5024 noviembre2020
Manual rtu5024 noviembre2020
 
Alarma GSM xc gsm555
Alarma GSM xc gsm555Alarma GSM xc gsm555
Alarma GSM xc gsm555
 
Ce2 y codeencryptorii
Ce2 y codeencryptoriiCe2 y codeencryptorii
Ce2 y codeencryptorii
 
Manual citofono gsm
Manual citofono gsmManual citofono gsm
Manual citofono gsm
 
practica 3 labo 2014_escribe tu nombre en displays
practica 3 labo 2014_escribe tu nombre en displayspractica 3 labo 2014_escribe tu nombre en displays
practica 3 labo 2014_escribe tu nombre en displays
 
Timer0
Timer0Timer0
Timer0
 
Vista 20SE
Vista 20SEVista 20SE
Vista 20SE
 
Como usar display anodo común
Como usar display anodo comúnComo usar display anodo común
Como usar display anodo común
 
Logica Combinacional
Logica CombinacionalLogica Combinacional
Logica Combinacional
 
Circuitos secuenciales=u.o
Circuitos secuenciales=u.oCircuitos secuenciales=u.o
Circuitos secuenciales=u.o
 
Manual gps llavero
Manual gps llaveroManual gps llavero
Manual gps llavero
 

Destaque

Destaque (20)

La química y la vida
La química y la vidaLa química y la vida
La química y la vida
 
Los 7 saberes
Los 7 saberesLos 7 saberes
Los 7 saberes
 
Examen parcial universidaad y conocimiento
Examen parcial universidaad y conocimientoExamen parcial universidaad y conocimiento
Examen parcial universidaad y conocimiento
 
mi ciudad estepona
mi ciudad esteponami ciudad estepona
mi ciudad estepona
 
Virtualizacion drb
Virtualizacion drbVirtualizacion drb
Virtualizacion drb
 
Yutii
YutiiYutii
Yutii
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Pub
PubPub
Pub
 
Adrian paolo aguilar ramón
Adrian paolo aguilar ramónAdrian paolo aguilar ramón
Adrian paolo aguilar ramón
 
Podcasting
PodcastingPodcasting
Podcasting
 
WIKISPACES
WIKISPACESWIKISPACES
WIKISPACES
 
Amistad
AmistadAmistad
Amistad
 
HomeStaging0001_LosAlcares
HomeStaging0001_LosAlcaresHomeStaging0001_LosAlcares
HomeStaging0001_LosAlcares
 
Graduación
GraduaciónGraduación
Graduación
 
Dp codigo de representacion de dato
Dp codigo de representacion de datoDp codigo de representacion de dato
Dp codigo de representacion de dato
 
Ejemplo TCP-IP
Ejemplo TCP-IPEjemplo TCP-IP
Ejemplo TCP-IP
 
Presentación lc3 youtube
Presentación lc3   youtubePresentación lc3   youtube
Presentación lc3 youtube
 
Luchadoras en chile
Luchadoras en chileLuchadoras en chile
Luchadoras en chile
 
Seguridad del sistema y proteccion de la seguridad arquitectura
Seguridad del sistema y proteccion de la seguridad arquitecturaSeguridad del sistema y proteccion de la seguridad arquitectura
Seguridad del sistema y proteccion de la seguridad arquitectura
 
Interim tests for CELLUWOOD project
Interim tests for CELLUWOOD projectInterim tests for CELLUWOOD project
Interim tests for CELLUWOOD project
 

Semelhante a Alarma digital de 4 zonas

Presentación
PresentaciónPresentación
Presentaciónzxc
 
Curso-de-Domotica_03.pdf
Curso-de-Domotica_03.pdfCurso-de-Domotica_03.pdf
Curso-de-Domotica_03.pdfJesus Hernandez
 
Introducción domotica tema 2
Introducción domotica tema 2Introducción domotica tema 2
Introducción domotica tema 2leonph
 
Proyecto vivienda domótica
Proyecto vivienda domóticaProyecto vivienda domótica
Proyecto vivienda domóticacollau5
 
Monografia contador digital
Monografia contador digitalMonografia contador digital
Monografia contador digitalJuanito Edgar
 
Proyecto Técnico
Proyecto Técnico Proyecto Técnico
Proyecto Técnico ANDRES_HENAO
 
Contador Con Interruptor Infrarrojo
Contador Con Interruptor InfrarrojoContador Con Interruptor Infrarrojo
Contador Con Interruptor InfrarrojoCCAB666
 
ALARMA-CON-MODULO-DE-COMUNICACIÓN.pptx
ALARMA-CON-MODULO-DE-COMUNICACIÓN.pptxALARMA-CON-MODULO-DE-COMUNICACIÓN.pptx
ALARMA-CON-MODULO-DE-COMUNICACIÓN.pptxHedwinMatiasBecerraT1
 
Contador Con Sensor IR
Contador Con Sensor IRContador Con Sensor IR
Contador Con Sensor IRCCAB666
 
Contador Con Sensor Infrarrojo
Contador Con Sensor InfrarrojoContador Con Sensor Infrarrojo
Contador Con Sensor InfrarrojoCCAB666
 
Memoria Casa Inteligente con S4A
Memoria Casa Inteligente con S4AMemoria Casa Inteligente con S4A
Memoria Casa Inteligente con S4AJosé Pujol Pérez
 
F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)edwin andres
 
Microcontroladores: Construcción de un control de una cartelera digital para ...
Microcontroladores: Construcción de un control de una cartelera digital para ...Microcontroladores: Construcción de un control de una cartelera digital para ...
Microcontroladores: Construcción de un control de una cartelera digital para ...SANTIAGO PABLO ALBERTO
 
Informefinalmicro3
Informefinalmicro3Informefinalmicro3
Informefinalmicro3marioccoyori
 

Semelhante a Alarma digital de 4 zonas (20)

Presentación
PresentaciónPresentación
Presentación
 
Curso-de-Domotica_03.pdf
Curso-de-Domotica_03.pdfCurso-de-Domotica_03.pdf
Curso-de-Domotica_03.pdf
 
SISMOGRAFO
SISMOGRAFOSISMOGRAFO
SISMOGRAFO
 
RELOJ DIGITAL TTL 24 horas
RELOJ DIGITAL TTL 24 horas RELOJ DIGITAL TTL 24 horas
RELOJ DIGITAL TTL 24 horas
 
Introducción domotica tema 2
Introducción domotica tema 2Introducción domotica tema 2
Introducción domotica tema 2
 
Proyecto vivienda domótica
Proyecto vivienda domóticaProyecto vivienda domótica
Proyecto vivienda domótica
 
Domotica
DomoticaDomotica
Domotica
 
PLC
PLC PLC
PLC
 
Monografia contador digital
Monografia contador digitalMonografia contador digital
Monografia contador digital
 
Proyecto Técnico
Proyecto Técnico Proyecto Técnico
Proyecto Técnico
 
Reloj digital
Reloj digitalReloj digital
Reloj digital
 
Contador Con Interruptor Infrarrojo
Contador Con Interruptor InfrarrojoContador Con Interruptor Infrarrojo
Contador Con Interruptor Infrarrojo
 
ALARMA-CON-MODULO-DE-COMUNICACIÓN.pptx
ALARMA-CON-MODULO-DE-COMUNICACIÓN.pptxALARMA-CON-MODULO-DE-COMUNICACIÓN.pptx
ALARMA-CON-MODULO-DE-COMUNICACIÓN.pptx
 
Contador Con Sensor IR
Contador Con Sensor IRContador Con Sensor IR
Contador Con Sensor IR
 
Contador Con Sensor Infrarrojo
Contador Con Sensor InfrarrojoContador Con Sensor Infrarrojo
Contador Con Sensor Infrarrojo
 
Memoria Casa Inteligente con S4A
Memoria Casa Inteligente con S4AMemoria Casa Inteligente con S4A
Memoria Casa Inteligente con S4A
 
F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)
 
Memoria Casa Inteligente
Memoria Casa InteligenteMemoria Casa Inteligente
Memoria Casa Inteligente
 
Microcontroladores: Construcción de un control de una cartelera digital para ...
Microcontroladores: Construcción de un control de una cartelera digital para ...Microcontroladores: Construcción de un control de una cartelera digital para ...
Microcontroladores: Construcción de un control de una cartelera digital para ...
 
Informefinalmicro3
Informefinalmicro3Informefinalmicro3
Informefinalmicro3
 

Mais de alvaro alcocer sotil (20)

Clase ciencia - Huesos
Clase ciencia - HuesosClase ciencia - Huesos
Clase ciencia - Huesos
 
Rm rompecabeza
Rm rompecabezaRm rompecabeza
Rm rompecabeza
 
Locomocion en animales
Locomocion en animalesLocomocion en animales
Locomocion en animales
 
Presentacion comuniccaion
Presentacion comuniccaionPresentacion comuniccaion
Presentacion comuniccaion
 
El trabajo académico chomsky
El trabajo académico chomskyEl trabajo académico chomsky
El trabajo académico chomsky
 
[002665]
[002665][002665]
[002665]
 
Catedral de-lima-historia-nc2ba-51-pps
Catedral de-lima-historia-nc2ba-51-ppsCatedral de-lima-historia-nc2ba-51-pps
Catedral de-lima-historia-nc2ba-51-pps
 
Proceso de ventas 2013
Proceso de ventas 2013Proceso de ventas 2013
Proceso de ventas 2013
 
Royal plaza
Royal plazaRoyal plaza
Royal plaza
 
Plan de marketing
Plan de marketingPlan de marketing
Plan de marketing
 
Intercambio de publicidad
Intercambio de publicidadIntercambio de publicidad
Intercambio de publicidad
 
Producto marca
Producto   marcaProducto   marca
Producto marca
 
Plan de mk tcompleto (3)
Plan de mk tcompleto (3)Plan de mk tcompleto (3)
Plan de mk tcompleto (3)
 
La marca debe ser humana
La marca debe ser humanaLa marca debe ser humana
La marca debe ser humana
 
3º sesion la competencia
3º sesion la competencia3º sesion la competencia
3º sesion la competencia
 
2ºsesion beneficios de la planeacion de marketing
2ºsesion beneficios de la planeacion de marketing2ºsesion beneficios de la planeacion de marketing
2ºsesion beneficios de la planeacion de marketing
 
1º sesion planeamiento estratégico de marketing
1º sesion planeamiento estratégico de marketing1º sesion planeamiento estratégico de marketing
1º sesion planeamiento estratégico de marketing
 
Aprendiendo publicidad ppt final paola
Aprendiendo publicidad ppt final paolaAprendiendo publicidad ppt final paola
Aprendiendo publicidad ppt final paola
 
Agencia de publicidad la campaña publicitaria -tipos
Agencia de  publicidad   la campaña publicitaria -tiposAgencia de  publicidad   la campaña publicitaria -tipos
Agencia de publicidad la campaña publicitaria -tipos
 
10º
 10º 10º
10º
 

Alarma digital de 4 zonas

  • 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. 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.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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Fig.3.1 Sistema de vigilancia y seguridad
  • 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. 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. 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. 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. 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. 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. 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. 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. Trabas para los ladrones (El Comercio, Domingo 15 de julio del 2006 (Mi Hogar))
  • 25. El reto de la próxima gestión edilicia, El Comercio 6 de agosto del 2006, Pág.. A17
  • 26. El reto de la próxima gestión edilicia, El Comercio 6 de agosto del 2006, Pág.. A16
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Circuito pictórico de la Alarma Digital
  • 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. 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. 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. 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. 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.
  • 45. 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.
  • 46. 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.
  • 48. 7.5.7.2 INTCON REGISTER (ADDRESS 0Bh, 8Bh, 10Bh, 18Bh)
  • 49. 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.
  • 50. 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.
  • 51. 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
  • 52. 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
  • 53. 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”
  • 54. 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
  • 55. 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
  • 58. 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
  • 59. 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
  • 60. 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
  • 61. 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
  • 62. 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
  • 63. 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
  • 64. 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
  • 65. #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
  • 66. 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
  • 67. 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
  • 68. 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
  • 69. 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
  • 70. 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
  • 71. 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
  • 72. 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
  • 73. 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
  • 74. 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
  • 75. 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
  • 76. 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
  • 77. 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
  • 78. ;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
  • 79. 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
  • 80. 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
  • 81. 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
  • 82. 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
  • 83. 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
  • 84. ;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
  • 85. ;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
  • 86. 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
  • 87. 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
  • 88. 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
  • 89. 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
  • 90. 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
  • 91. ;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
  • 92. 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
  • 93. 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
  • 94. 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
  • 95. 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
  • 96. 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
  • 97. 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
  • 98. 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
  • 99. 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
  • 100. ;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
  • 101. 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
  • 102. 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
  • 103. ;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
  • 104. 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
  • 105. 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
  • 106. 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
  • 107. 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
  • 108. 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
  • 109. ;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
  • 110. 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
  • 111. 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
  • 112. ;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
  • 113. 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
  • 114. ;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
  • 115. 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
  • 116. 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
  • 117. ;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
  • 118. ;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
  • 119. 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
  • 120. ;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
  • 121. 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
  • 122. 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
  • 123. 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
  • 124. 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
  • 125. 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
  • 126. 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
  • 127. 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
  • 128. 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
  • 129. 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
  • 130. 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
  • 131. 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
  • 132. 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
  • 133. 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
  • 134. 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
  • 135. 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
  • 136. 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
  • 137. 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
  • 138. 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
  • 139. 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
  • 140. 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
  • 141. 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
  • 142. ;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
  • 143. 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
  • 144. 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
  • 145. 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
  • 146. 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
  • 147. ;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
  • 148. 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
  • 149. 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
  • 150. 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
  • 151. 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
  • 152. 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
  • 153. 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
  • 154. 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
  • 155. ;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
  • 156. 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
  • 157. 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:
  • 158. 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
  • 159. 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
  • 160. 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
  • 161. 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
  • 162. 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' ''
  • 163. 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
  • 164. 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
  • 165. 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
  • 166. 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
  • 167. 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
  • 168. 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
  • 169. 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
  • 170. 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
  • 171. ;------------------------------------------------------------; 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
  • 172. 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
  • 173. 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
  • 174. ;------------------------------------------------------------; 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. ;-------------------------------------------------------------
  • 175. ;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
  • 176. 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
  • 177. 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
  • 178. 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
  • 179. 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
  • 180. 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
  • 181. 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
  • 182. 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
  • 183. 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
  • 184. 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
  • 185. 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
  • 186. 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
  • 187. 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
  • 188. ;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
  • 189. 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
  • 190. ;******************************************************* ;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
  • 191. 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 * ************************************************************
  • 192. 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
  • 193. ;* 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 * *
  • 194. 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
  • 195. ;****************************************************** ;* 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
  • 196. ;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
  • 197. 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
  • 198. 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
  • 199. 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
  • 247. 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
  • 248. 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