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.
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
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.
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
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 Contador1
Tecla2_2 Contador1
Tecla3_2 Contador1
Tecla4_2 Contador11
Tecla11_2 A activar todas
Tecla14_2 Confirmar dirección cursor
Mensaje “Zonas Activas”
Activar_selec Comparación para el testeo de selección
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
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
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
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
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
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
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
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
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