Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UAMI14449
UAMI14449
UNIDADIZTAPALAPA
DIVISINDECIENCIASBSICAEINGENIERA
LICENCIATURAENINGENIERAELECTRNICA
PRESENTAN:
MIRELESHERNNDEZALEJANDRO.
SOLISCUEVALUISANTONIO.
ASESROR:MTRA.ALMAEDITHMARTNEZLICONA.
FIRMADELASESOR:______________________________
MXICOD.F.,DICIEMBREDE2007
Diciembre, 2007
1. INTRODUCCIN
Una cerradura electrnica consiste en llevar acabo una funcin especfica para la cual
ha sido creada. La ventaja de una cerradura as es que el usuario de esta cerradura tendr la
confiabilidad de que cualquier persona no podr acceder a su habitacin o a un armario,
caja, etc.
La parte principal del circuito de la cerradura es el PIC 16F876, microprocesador que
se encarga de las funciones de: almacenamiento de la clave de acceso y la comparacin de
las claves introducidas con la anteriormente mencionada. Las claves son introducidas por
medio de un teclado de 12 teclas y visualizadas en una pantalla LCD. Tambin cuenta con
dos teclas: aceptar y cambiar clave. Si clave se introduce incorrectamente tres veces una
alarma se activa durante unos segundos para avisar al usuario que tratan de acceder a su
espacio.
-2-
Diciembre, 2007
INDICE
1. Planteamiento y delimitacin.
2. Qu es un Microcontrolador?...
2.1. Caractersticas.
3. Arquitectura RISC.
3.1. Caractersticas.
4. Microcontroladores PIC. 11
4.1. Juego de Instrucciones y entorno de Programacin.... 12
4.2. Tamao de palabra.. 14
4.3. Caractersticas. 14
4.4. La Programacin del Microcontrolador.. 15
5. Pantalla LCD de 16x2. 17
6. Teclado Matricial. 18
7. Fuente de Alimentacin... 19
8. Desarrollo del Proyecto.. 19
8.1. Investigacin 19
8.2. Programacin... 20
8.3. Grabacin y Simulacin.. 23
8.4. Circuito Elctrico 24
8.5. Diagramas...
24
26
35
36
68
Diciembre, 2007
1. PLANEAMIENTO Y DELIMITACIN.
En primera instancia nuestro proyecto era realizar un control por voz, de tal forma
que comenzamos por investigar cuales eran los circuitos existentes para realizar un control
por voz, de los cuales uno fue el que nos llamo mas la atencin (Figura 1), ya que este
circuito contena una parte de teclado, es decir, que si el circuito no poda ser activado por
voz (en caso de alguna falla) podra activarse por medio de teclado. Ya habiendo
investigado acerca de este circuito nos dimos a la tarea de buscar cada uno de los
componentes, de los cuales se tuvo un grave problema con uno de ellos (el elemento
principal del circuito).
-4-
Diciembre, 2007
-5-
Diciembre, 2007
2. QUE ES UN MICROCONTROLADOR?
Un microcontrolador es un circuito integrado o chip que incluye en su interior las
tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir,
se trata de un computador completo en un solo circuito integrado.
2.1 CARACTERISTICAS
Son diseados para disminuir el coste econmico y el consumo de energa de un
sistema en particular. Por eso el tamao de la CPU, la cantidad de memoria y los perifricos
incluidos dependern de la aplicacin. El control de un electrodomstico sencillo como una
batidora, utilizar un procesador muy pequeo (4 u 8 bit) por que sustituir a un autmata
finito. En cambio un reproductor de msica y/o vdeo digital (mp3 o mp4) requerir de un
procesador de 32 bit o de 64 bit y de uno o ms Cdec de seal digital (audio y/o vdeo). El
control de un sistema de frenos ABS (Antilock Brake System) se basa normalmente en un
microcontrolador de 16 bit, al igual que el sistema de control electrnico del motor en un
automvil.
Los microcontroladores representan la inmensa mayora de los chips de computadoras
vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSPs ms
especializados. Mientras se pueden tener uno o dos microprocesadores de propsito general
en casa, usted tiene distribuidos seguramente entre los electrodomsticos de su hogar una o
dos docenas de microcontroladores. Pueden encontrarse en casi cualquier dispositivo
electrnico como automviles, lavadoras, hornos microondas, telfonos, etc.
Un microcontrolador difiere de una CPU normal, debido a que es ms fcil convertirla
en una computadora en funcionamiento, con un mnimo de chips externos de apoyo. La
idea es que el chip se coloque en el dispositivo, enganchado a la fuente de energa y de
informacin que necesite, y eso es todo. Un microprocesador tradicional no le permitir
hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que
agregarle los mdulos de entrada/salida (puertos) y la memoria para almacenamiento de
informacin.
-6-
Diciembre, 2007
Empresa
32 bits
64 bits
Atmel
AVR
Freescale
(antes Motorola)
68HC05,
68HC08,
68HC11, HCS08
68HC12,
68HC16
683xx,
68HCS12,
68HCSX12
Intel
MCS-48 (familia
8048)
MCS51 (familia
8051)
8xC251
MCS96,
MXS296
National
Semiconductor
COP8
Familia 10f2xx
Familia
12Cxx de
12 bits
Familia 12Fxx,
16Cxx y 16Fxx
de 14 bits
(PIC16F87X)
18Cxx y
18Fxx de
16 bits
Microchip
-7-
Diciembre, 2007
Ms econmicos.
En base a esto decidimos que lo mejor sera utilizar microcontroladores PIC, los cuales
tienen una arquitectura RISC.
3. ARQUITECTURA RISC.
La Arquitectura RISC (del ingls Reduced Instruction Set Computer), Computadora
con Conjunto de Instrucciones Reducido. Es un tipo de microprocesador con las siguientes
caractersticas fundamentales:
1. Instrucciones de tamaos fijos y presentados en un reducido nmero de
formatos.
2. Solo las instrucciones de carga y almacenamiento acceden a la memoria por
datos.
Adems estos procesadores suelen disponer de muchos registros de propsito general.
El objetivo de disear mquinas con esta arquitectura es posibilitar la segmentacin y
el paralelismo en la ejecucin de instrucciones y reducir los accesos a memoria. Las
mquinas RISC protagonizan la tendencia actual de construccin de microprocesadores.
PowerPC, DEC Alpha, MIPS, ARM... son ejemplos de algunos de ellos.
-8-
Diciembre, 2007
RISC es una filosofa de diseo de CPU para computadora que est a favor de
conjuntos de instrucciones pequeos y simples que toman menor tiempo para ejecutarse. El
tipo de procesador ms comnmente utilizado en equipos de escritorio, el x86, est basado
en CISC en lugar de RISC, aunque las versiones ms nuevas traducen instrucciones basadas
en CISC x86 a instrucciones ms simples basadas en RISC para uso interno antes de su
ejecucin.
La idea fue inspirada por el hecho de que muchas de las caractersticas que eran
incluidas en los diseos tradicionales de CPU para aumentar la velocidad estaban siendo
ignoradas por los programas que eran ejecutados en ellas. Adems, la velocidad del
procesador en relacin con la memoria de la computadora que acceda era cada vez ms
alta. Esto conllev la aparicin de numerosas tcnicas para reducir el procesamiento dentro
del CPU, as como de reducir el nmero total de accesos a memoria.
3.1 CARACTERISTICAS.
En pocas palabras esto significa que para cualquier nivel de desempeo dado, un chip
RISC tpicamente tendr menos transistores dedicados a la lgica principal. Esto permite a
los diseadores una flexibilidad considerable; as pueden, por ejemplo:
-9-
Diciembre, 2007
Las caractersticas que generalmente son encontradas en los diseos RISC son:
- 10 -
Diciembre, 2007
4. MICROCONTROLADORES PIC.
Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip
Technology Inc., originalmente desarrollado por la divisin de microelectrnica de General
Instruments (Figura 3).
- 11 -
Diciembre, 2007
de
memoria,
instrucciones
de
condicionamiento
de
salto/retorno,
implementacin de interrupciones y una para pasar a modo de bajo consumo llamada sleep.
Microchip proporciona un entorno de desarrollo freeware llamado MPLAB que
incluye un simulador software y un ensamblador. Otras empresas desarrollan compiladores
C y BASIC. Microchip tambin vende compiladores para los PICs de gama alta ("C18"
para la serie F18 y "C30" para los dsPICs) y se puede descargar una edicin para
estudiantes del C18 que inhabilita algunas opciones despus de un tiempo de evaluacin.
Para Pascal existe un compilador de cdigo abierto, JAL, lo mismo que PicForth para
el lenguaje Forth. GPUTILS es una coleccin de herramientas distribuidas bajo licencia
GNU que incluye ensamblador y enlazador, y funciona en Linux, MacOS y Microsoft
Windows. GPSIM es otra herramienta libre que permite simular diversos dispositivos
hardware conectados al PIC.
- 12 -
Diciembre, 2007
- 13 -
Diciembre, 2007
4.3 CARACTERISTICAS.
Los PICs actuales vienen con una amplia gama de mejoras de hardware incorporadas:
Comparadores de tensin
Controladores LCD
- 14 -
Diciembre, 2007
- 15 -
Diciembre, 2007
Nosotros utilizamos un programador que utiliza una interfaz USB llamado PICProg
USB (Figura 5), el cual utiliza un software especial para transferir el cdigo en
hexadecimal.
- 16 -
Diciembre, 2007
CONTROL
ALIMENTACION
E INTENSIDAD
LUZ DE
FONDO
- 17 -
Diciembre, 2007
16 caracteres x 2 lneas.
- 18 -
Diciembre, 2007
7. FUENTE DE ALIMENTACIN.
La fuente de alimentacin es un dispositivo muy importante para un sistema, ya que de
ah se toma la energa necesaria para la alimentacin del mismo. Esta es un subsistema que
convierte la corriente alterna en otro tipo de corriente elctrica adecuado para nuestra
cerradura. Este otro tipo de corriente ser de tipo continua, ya que nosotros queremos que
se mantenga en un solo valor, pero para nuestro caso se tendrn 2 valores de voltaje de
salida (12 y 5 Volts).
Nuestra fuente consta de 4 etapas:
8.1 INVESTIGACIN.
Se comenz por la investigacin de cada uno de los 3 elementos principales de nuestro
proyecto (PIC, Pantalla LCD y el Teclado Matricial), de tal forma de saber cmo es su
funcionamiento y como es que se comportan durante su tiempo de empleo. Ya sabiendo
esto, se contino con la investigacin sobre cmo es que se podran comunicar estos
dispositivos, lo cual fue sencillo de averiguar, ya que cada elemento consta con su propio
manual (llamados datasheet). Estos manuales contienen las especificaciones de trabajo con
las que se deben de operar los elementos, es decir, cuanta alimentacin de voltaje se debe
de utilizar o como es que se deben de conectar estos elementos entre si, etc.
- 19 -
Diciembre, 2007
8.2 PROGRAMACIN.
La siguiente parte de nuestro proyecto fue la programacin, es decir, la creacin del
programa con el que funcionaria nuestra cerradura. El programa se realizo con la ayuda del
compilador MPLab. Este compilador nos ayudo a referenciar nuestros errores en el
programa y as corregirlos de tal forma que nuestra programacin fuese la correcta. El
programa final quedo realizado en bloques (El cdigo fuente de este programa se presenta
en la pagina 37).
Para la rpida comprensin del programa a continuacin se describirn a grandes
rasgos los mdulos involucrados en el cdigo.
INICIO:
Este modulo inicializa los puertos del PIC definiendo cuales trabajaran como
entradas y cuales como salidas, as como inicializar la EEPROM para almacenar el
cdigo de acceso y realizar la llamada a la rutina que inicializa el Display (LCD).
Rutinas que utiliza este modulo:
INITLCD
PRINCI:
Este modulo es el principal del programa ya que da la bienvenida al usuario
desplegando en el Display el mensaje INTRODUZCA CLAVE y coloca el cursor
en la lnea inferior del Display para esperar a que ingresen el cdigo de acceso,
cuando se requiere reiniciar en sistema se hace una llamada a este modulo.
Rutinas que utiliza este modulo:
CLEARL
SITUCU
ESCMEN
SUELKEY
- 20 -
ESPEKEY
INCOR
CAMBIOC
WRITEL
Diciembre, 2007
FINCOD:
Compara la clave obtenida anteriormente con la clave almacenada en la memoria
EEPROM, en caso de ser igual activa el bit de apertura de la puerta, en caso
contrario se despliega el mensaje de CLAVE INCORRECTA y se decrementa el
numero de intentos.
Rutinas que utiliza este modulo:
ESPEKEY
CAMBIOC
LEECOD
INCOR
CLEARL
SITUCU
ESCMEN
CAMBIOC:
Este modulo se utiliza para cambiar la clave de acceso, el cual para efectuar el
cambio pide introduzcas el cdigo antiguo y a continuacin la clave nueva dos
veces para confirmar que se introdujo correctamente y posteriormente se almacene
en le memoria EEPROM.
Rutinas que utiliza este modulo:
CLEARL
ESCMEN
SUELKEY
SITUCU
COGECOD
LEECOD
INCORE
INCOREC
- 21 -
NOVERI
EEWRITE
Diciembre, 2007
NUEVACL:
Captura y verifica que la nueva clave sea correcta.
NOVERI:
Verifica que se introdujo bien la clave al realizar un cambio de esta
Rutinas que utiliza este modulo:
CLEARL
ESCMEN
SITUCU
DELAY
NUEVACL
INCOREC:
Despliega el mensaje de error cuando la clave no tiene el tamao de 4 dgitos, y
reinicia el sistema sin decrementar los intentos.
Rutinas que utiliza este modulo:
CLEARL
ESCMEN
SITUCU
INCORE:
Cuando la clave que se introdujo tiene el tamao adecuado pero no corresponde con
la almacenada en memoria este modulo despliega el mensaje de CLAVE
INCORRECTA y decrementa el numero de intentos disponibles, si el numero de
intentos llego a su mximo entonces activa la alarma.
Rutinas que utiliza este modulo:
ALARMA
CLEARL
ESCMEN
SUELKEY
DELAY
- 22 -
Diciembre, 2007
ALARMA:
Despus de 3 intentos incorrectos se activa la alarma, una vez activada la alarma
suena por un tiempo definido y se reinicia el sistema.
COGECOD:
Almacena el cdigo almacenado para su posterior uso
EEWRITE:
Escribe el valor en CODWRITE en la localidad dada por el acumulador de la
memoria.
GETKEY:
Devuelve el valor pulsado en el teclado en cdigo ASCCI.
HAYTECL:
Identifica la fila en la que se encuentra la tecla presionada.
SUELKEY:
Subrutina que espera a que se suelte la tecla.
ESCMEN:
Escribe el mensaje en el display al que se encuentra apuntando el acumulador.
WAITLCD:
Espera a que acepte un comando el LCD
INITLCD:
Enva los comandos necesarios para inicializar de forma correcta el Display.
CLEARL:
Borra el contenido en pantalla del Display.
WRITEL:
Escribe en pantalla el carcter almacenado en el acumulador
- 23 -
Diciembre, 2007
8.5 DIAGRAMAS.
El circuito que realizamos para la elaboracin de nuestro proyecto se muestra en el
Diagrama 1.
El circuito que se realizo para obtener nuestra fuente de alimentacin fue el que se
muestra en el Diagrama 2
- 24 -
- 25 -
Diciembre, 2007
Diciembre, 2007
Fuente de Alimentacin:
Cable.
Circuito de la Cerradura.
1 PIC (16F8576).
1 Bocina de 8 de impedancia.
1 Cristal a 10 MHz.
2 Capacitores de 22pF.
6 Resistencias de 1k a 1/2W.
1 Potencimetro de 10k.
- 26 -
Cable telefnico.
Diciembre, 2007
1 Grabador de PICs.
- 27 -
Diciembre, 2007
- 28 -
Diciembre, 2007
Ya conectados todos los cables al PIC, se conectaron tanto el lcd como el teclado en
los lugares indicados (poniendo cada cable en el pin adecuado del lcd y del teclado). De tal
forma que todo el circuito de la cerradura y la fuente de alimentacin quedara en un solo
circuito (Foto 3).
- 29 -
Diciembre, 2007
A continuacin se hicieron pruebas para ver que todas las funciones de la cerradura
funcionaran correctamente, es decir, se hicieron pruebas con el teclado para observar que
todas las teclas funcionaran, que en el LCD aparecieran todos los textos correctamente
(Foto 4) y que los botones de aceptar y cambiar clave operaran a la perfeccin.
- 30 -
Diciembre, 2007
- 31 -
Diciembre, 2007
b)
a)
Figura 8. Circuitos impresos a) Circuito principal de la cerradura. b) Pistas para botones de aceptar
y cambiar.
- 32 -
Diciembre, 2007
Una vez que se obtuvo la placa con nuestro circuito se le hicieron los agujeros en los
nodos del circuito (con la ayuda del taladro y una broca muy pequea y delgada). Despus
se soldaron todos y cada uno de los componentes del circuito, de tal forma que la placa
quedara ya con los componentes fijos (Foto 6).
Obtenida ya nuestra placa con todos los elementos unidos, se contino por realizar los
cables de conexin entre la placa y el LCD, as como tambin para el teclado y la placa de
los dos botones. Estos cables de unin (Foto 7) fueron hechos con cable plano con la
utilizacin de conectores headers (hembra) a los extremos.
- 33 -
Diciembre, 2007
Foto 7. Cable plano para la conexin del teclado (izq.). Cable plano para la
conexin del LCD (der.).
Por ultimo se adapto la placa, el LCD y los dems elementos al gabinete para quedara
listo nuestro prototipo, para estos se le tuvieron que hacer algunos cortes al gabinete para
que su diseo fuera el mas adecuado. El producto final de nuestro proyecto, una cerradura
electrnica activada por teclado con alarma y display (Foto 8), funciono a la normalidad,
pasando todas las pruebas que se realizaron con la presentacin preliminar del proyecto.
Foto 8. Prototipo de la Cerradura Electrnica activa por teclado con alarma y display.
- 34 -
Diciembre, 2007
10. FUNCIONAMIENTO.
2.
3.
Consta de 4 dgitos que pueden ser: nmeros (del 0 al 9), asteriscos (*) y
almohadillas (#). A diferencia de los cdigos tradicionales que solo usan los
nmeros. Esto proporciona 20736 combinaciones posibles frente a las 10000
que se consiguen solo con nmeros, lo que se traduce en mayor seguridad.
4.
5.
6.
Cuando se acumulan tres fallos al introducir la clave suena una sirena por un
altavoz durante unos 15 segundos, despus se puede volver a probar.
- 35 -
Diciembre, 2007
2.
3.
4.
A continuacin te pide que repitas la nueva clave para verificarla (con esto
aparecer el mensaje "VERIFIQUE CLAVE"), tecleas de nuevo la misma
clave y pulsas ACEPTAR. Si te equivocas te avisa y vuelves a introducir la
nueva clave.
5.
- 36 -
Diciembre, 2007
P=16F876
RADIX HEX
INCLUDE
;Procesador a usar
;Sistema de numeracin Hexadecimal predeterminada
P16F876.INC
internos
;Palabra de Configuracin
__config _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF &
_BODEN_ON & _PWRTE_OFF & _WDT_OFF & _HS_OSC
;----------------------------------------------------------------------------------------------------------------------------------; Registros Reservados
;----------------------------------------------------------------------------------------------------------------------------------PCL
EQU
02H
STATUS
EQU
03H
PORTA
EQU
05H
;Puerto A
DATO
EQU
06H
;PUERTO B
KEYB
EQU
07H
;Puerto C
INTCON
EQU
0BH
PIR2
EQU
0DH
PIE2
EQU
8DH
ADECON1
EQU
9FH
EEDATA
EQU
10CH
EEADR
EQU
10DH
EECON1
EQU
18CH
EECON2
EQU
18DH
EQU
20H
PUNTAB
EQU
20H
INTENTO
EQU
21H
TECLA
EQU
22H
CUENTA1
EQU
23H
CUENTA2
EQU
24H
- 37 -
EQU
25H
COD1
EQU
26H
COD2
EQU
27H
COD3
EQU
28H
COD4
EQU
29H
CUENTA4
EQU
2AH
COD1A
EQU
2BH
COD2A
EQU
2CH
COD3A
EQU
2DH
COD4A
EQU
2EH
CODWRITE
EQU
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;
;----------------------------------------------------------------------------------------------------------------------------------F
EQU
EQU
;----------------------------------------------------------------------------------------------------------------------------------; Definiciones
;----------------------------------------------------------------------------------------------------------------------------------#DEFINE
EN
05H,2
#DEFINE
RW
05H,1
#DEFINE
RS
05H,0
#DEFINE
ALA
05H,3
#DEFINE
PORTERO 05H,5
ORG
00H
GOTO INICIO
ORG
04H
BCF
PIR2,4
RETFIE
- 38 -
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 1 'Introduzca'
;----------------------------------------------------------------------------------------------------------------------------------MEN_1
RETLW
'I'
RETLW
'N'
RETLW
'T'
RETLW
'R'
RETLW
'O'
RETLW
'D'
RETLW
'U'
RETLW
'Z'
RETLW
'C'
RETLW
'A'
;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 5 'Clave'
;----------------------------------------------------------------------------------------------------------------------------------MEN_5
RETLW
''
RETLW
'C'
RETLW
'L'
RETLW
'A'
RETLW
'V'
RETLW
'E'
RETLW
00H
'P'
RETLW
'U'
- 39 -
'E'
RETLW
'D'
RETLW
'E'
RETLW
''
RETLW
'P'
RETLW
'A'
RETLW
'S'
RETLW
'A'
RETLW
'R'
RETLW
00H
Diciembre, 2007
'C'
RETLW
'L'
RETLW
'A'
RETLW
'V'
RETLW
'E'
RETLW
''
RETLW
'I'
RETLW
'N'
RETLW
'C'
RETLW
'O'
RETLW
'R'
RETLW
'R'
RETLW
'E'
RETLW
'C'
RETLW
'T'
RETLW
'A'
RETLW
00H
- 40 -
'C'
RETLW
'A'
RETLW
'M'
RETLW
'B'
RETLW
'I'
RETLW
'O'
RETLW
''
RETLW
'D'
RETLW
'E'
RETLW
00H
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 6 'Antigua'
;----------------------------------------------------------------------------------------------------------------------------------MEN_6
RETLW
''
RETLW
'A'
RETLW
'N'
RETLW
'T'
RETLW
'I'
RETLW
'G'
RETLW
'U'
RETLW
'A'
RETLW
00H
;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 7 'Nueva'
;----------------------------------------------------------------------------------------------------------------------------------MEN_7
RETLW
'N'
RETLW
'U'
RETLW
'E'
RETLW
'V'
RETLW
'A'
RETLW
00H
- 41 -
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 8 'Verifique'
;----------------------------------------------------------------------------------------------------------------------------------MEN_8
RETLW
'V'
RETLW
'E'
RETLW
'R'
RETLW
'I'
RETLW
'F'
RETLW
'I'
RETLW
'Q'
RETLW
'U'
RETLW
'E'
RETLW
00H
;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 9 'Cambiada'
;----------------------------------------------------------------------------------------------------------------------------------MEN_9
RETLW
''
RETLW
'C'
RETLW
'A'
RETLW
'M'
RETLW
'B'
RETLW
'I'
RETLW
'A'
RETLW
'D'
RETLW
'A'
RETLW
00H
'L'
RETLW
'A'
RETLW
''
- 42 -
'C'
RETLW
'L'
RETLW
'A'
RETLW
'V'
RETLW
'E'
RETLW
''
RETLW
'D'
RETLW
'E'
RETLW
'B'
RETLW
'E'
RETLW
00H
Diciembre, 2007
'T'
RETLW
'E'
RETLW
'N'
RETLW
'E'
RETLW
'R'
RETLW
''
RETLW
'4'
RETLW
''
RETLW
'D'
RETLW
'I'
RETLW
'G'
RETLW
'I'
RETLW
'T'
RETLW
'O'
RETLW
'S'
RETLW
00H
- 43 -
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 12 'Intentelo'
;----------------------------------------------------------------------------------------------------------------------------------MEN_12
RETLW
'I'
RETLW
'N'
RETLW
'T'
RETLW
'E'
RETLW
'N'
RETLW
'T'
RETLW
'E'
RETLW
'L'
RETLW
'O'
RETLW
00H
'D'
RETLW
'E'
RETLW
''
RETLW
'N'
RETLW
'U'
RETLW
'E'
RETLW
'V'
RETLW
'O'
RETLW
00H
LCD
Teclado
;----------------------------------------------------------------------------------------------------------------------------------INICIO
CLRF
DATO
; Inicializa el Puerto B
CLRF
KEYB
; Inicializa el Teclado
- 44 -
Diciembre, 2007
CLRF
PORTA
; Inicializa el Puerto A
BSF
STATUS,5
MOVLW
06H
MOVWF
ADCON1
; Enva la configuracin
CLRF
DATO
BCF
EN
BCF
RW
BCF
RS
BCF
ALA
BCF
PORTERO
; como salidas
MOVLW
0F0H
; Configuramos el teclado
MOVWF
KEYB
BCF
STATUS,5
; Regresamos al banco 0
BCF
PIR2,4
MOVLW
03H
MOVWF
INTENTO
CALL
INITLCD
;CALL
INITLCD
CLEARL
MOVLW
00H
CALL
SITUCU
MOVLW
MEN_1
CALL
ESCMEN
MOVLW
44H
CALL SITUCU
de "Cambio de Clave"
- 45 -
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------ECOD12
CALL SUELKEY
CALL ESPEKEY
MOVWF
COD1
SUBLW
'A'
BTFSC
STATUS,2
GOTO
INCOR
; Si la tecla = 'A'
MOVF
COD1,W
SUBLW
'C'
BTFSC
STATUS,2
GOTO
CAMBIOC
; cambiamos la clave
MOVF
COD1,W
MOVLW
'*'
CALL
WRITEL
de "Cambio de Clave"
;----------------------------------------------------------------------------------------------------------------------------------ECOD22
CALL SUELKEY
CALL ESPEKEY
MOVWF
COD2
SUBLW
'A'
BTFSC
STATUS,2
GOTO
INCOR
; Si la tecla = 'A'
MOVF
COD2,W
SUBLW
'C'
BTFSC
STATUS,2
GOTO
CAMBIOC
; cambiamos la clave
MOVF
COD2,W
MOVLW
'*'
- 46 -
WRITEL
Diciembre, 2007
de "Cambio de Clave"
;----------------------------------------------------------------------------------------------------------------------------------ECOD32
CALL
SUELKEY
CALL
ESPEKEY
MOVWF
COD3
SUBLW
'A'
BTFSC
STATUS,2
GOTO
INCOR
; Si la tecla = 'A'
MOVF
COD3,W
SUBLW
'C'
BTFSC
STATUS,2
GOTO
CAMBIOC
; cambiamos la clave
MOVF
COD3,W
MOVLW
'*'
CALL
WRITEL
de "Cambio de Clave"
;----------------------------------------------------------------------------------------------------------------------------------ECOD42
CALL
SUELKEY
CALL
ESPEKEY
MOVWF
COD4
SUBLW
'A'
BTFSC
STATUS,2
GOTO
INCOR
; Si la tecla = 'A'
MOVF
COD4,W
- 47 -
Diciembre, 2007
SUBLW
'C'
BTFSC
STATUS,2
GOTO
CAMBIOC
; cambiamos la clave
MOVF
COD4,W
MOVLW
'*'
CALL
WRITEL
CALL
SUELKEY
;----------------------------------------------------------------------------------------------------------------------------------;FINDCOD: Una vez teniendo las teclas almacenadas, este modulo verifica que
;
la siguiente tecla sea una tecla de funcin para 'Aceptar' ('A') el cdigo
;----------------------------------------------------------------------------------------------------------------------------------FINCOD
CALL
ESPEKEY
MOVWF
TECLA
SUBLW
'A'
BTFSC
STATUS,2
GOTO
FINCOD2
MOVF
TECLA,W
SUBLW
'C'
BTFSC
STATUS,2
GOTO
CAMBIOC
GOTO
FINCOD
;----------------------------------------------------------------------------------------------------------------------------------;FINDCOD2:
;
;
;
Este modulo verifica que sea el cdigo correcto para activar la apertura
;----------------------------------------------------------------------------------------------------------------------------------FINCOD2
MOVLW
00H
CALL
LEECOD
SUBWF
COD1
BTFSS
STATUS,2
GOTO
INCOR
; Si la tecla es incorrecta
- 48 -
Diciembre, 2007
MOVLW
01H
CALL
LEECOD
SUBWF
COD2
BTFSS
STATUS,2
GOTO
INCOR
; Si la tecla es incorrecta
MOVLW
02H
CALL
LEECOD
SUBWF
COD3
BTFSS
STATUS,2
GOTO
INCOR
; Si la tecla es incorrecta
MOVLW
03H
CALL
LEECOD
SUBWF
COD4
BTFSS
STATUS,2
GOTO
INCOR
; Si la tecla es incorrecta
CALL
CLEARL
; CLAVE CORRECTA
MOVLW
02H
; Colocamos en posicin
CALL
SITUCU
MOVLW
MEN_2
; Escribimos el Mensaje
CALL
ESCMEN
; de bienvenida
MOVLW
03H
; Reinicia
MOVWF
INTENTO
; el nmero de intentos
BSF
PORTERO
MOVLW
T_RELE
CALL
DELAY
BCF
PORTERO
MOVLW
10H
CALL
DELAY
GOTO
PRINCI
; Reiniciamos el sistema
- 49 -
Diciembre, 2007
0CH
CALL
COMANDO
CALL
CLEARL
MOVLW
MEN_3
CALL
ESCMEN
DECFSZ
INTENTO,F
GOTO INCOR2
GOTO ALARMA
INCOR2
MOVLW
20H
la alarma
;----------------------------------------------------------------------------------------------------------------------------------ALARMA
MOVLW
1EH
MOVWF
TECLA
ALARMA4
MOVLW
03H
MOVWF
INTENTO
; disponibles
MOVLW
00FH
MOVWF
CUENTA1
MOVLW
030H
MOVWF
CUENTA2
ALARMA1
MOVLW
20H
MOVWF
CUENTA4
DECF
CUENTA1,F
BTFSC
STATUS,2
GOTO
ALARMA2
ALARMA3
- 50 -
ALA
; Enciende
CALL
FRECU
BCF
ALA
; Apaga
CALL
FRECU
DECFSZ
CUENTA4,F
GOTO
ALARMA3
GOTO
ALARMA1
Diciembre, 2007
ALARMA2
MOVLW
01H
CALL
DELAY
DECFSZ
TECLA,F
GOTO
ALARMA4
GOTO
PRINCI
MOVF
CUENTA1,W
MOVWF
CUENTA3
FRECU
FRECU2
DECFSZ
CUENTA3,F
GOTO
FRECU2
DECFSZ
CUENTA2,F
GOTO
FRECU
MOVLW
030H
MOVWF
CUENTA2
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;CAMBIOC:
;----------------------------------------------------------------------------------------------------------------------------------CAMBIOC
CALL
CLEARL
MOVLW
MEN_4
; 'CAMBIO DE'
CALL
ESCMEN
; Escribe el mensaje
MOVLW
MEN_5
; ' CLAVE'
CALL
ESCMEN
; Escribe el mensaje
MOVLW
20H
CALL
DELAY
; Retardo
- 51 -
Diciembre, 2007
CALL
CLEARL
; Limpiamos el Display
MOVLW
MEN_5
; ' CLAVE'
CALL
ESCMEN
; Escribe el mensaje
MOVLW
MEN_6
; ' ANTIGUA'
CALL
ESCMEN
; Escribe el mensaje
CALL
SUELKEY
MOVLW
44H
CALL
SITUCU
CALL
COGECOD
MOVLW
00H
CALL
LEECOD
SUBWF
COD1
BTFSS
STATUS,2
GOTO
INCORE
; Si no es igual
; Si es igual compara el siguiente digito
MOVLW
01H
CALL
LEECOD
SUBWF
COD2
BTFSS
STATUS,2
GOTO
INCORE
; Si no es igual
; Si es igual compara el siguiente digito
MOVLW
02H
CALL
LEECOD
SUBWF
COD3
BTFSS
STATUS,2
GOTO
INCORE
; Si no es igual
; Si es igual compara el siguiente digito
MOVLW
03H
CALL
LEECOD
SUBWF
COD4
BTFSS
STATUS,2
GOTO
INCORE
; Si no es igual
MOVLW
03H
MOVWF
INTENTO
- 52 -
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;NUEVACL:
en la EEPROM
;----------------------------------------------------------------------------------------------------------------------------------NUEVACL
CALL
CLEARL
; Limpiamos el Display
MOVLW
02H
CALL
SITUCU
MOVLW
MEN_7
; 'NUEVA'
CALL
ESCMEN
; Escribimos el mensaje
MOVLW
MEN_5
; ' CLAVE'
CALL
ESCMEN
; Escribimos el mensaje
MOVLW
44H
; Cambiamos de lnea
CALL
SITUCU
CALL
SUELKEY
CALL
COGECOD
MOVF
COD1,W
BTFSC
STATUS,2
GOTO
INCOREC
MOVWF
COD1A
MOVF
COD2,W
BTFSC
STATUS,2
GOTO
INCOREC
MOVWF
COD2A
MOVF
COD3,W
BTFSC
STATUS,2
GOTO
INCOREC
MOVWF
COD3A
MOVF
COD4,W
BTFSC
STATUS,2
GOTO
INCOREC
MOVWF
COD4A
CALL
CLEARL
;VERIFIQUE CLAVE
MOVLW
MEN_8
; 'VERIFIQUE'
CALL
ESCMEN
; Escribe mensaje
- 53 -
Diciembre, 2007
MOVLW
MEN_5
; ' CLAVE'
CALL
ESCMEN
; Escribe mensaje
MOVLW
44H
CALL
SITUCU
CALL
SUELKEY
CALL
COGECOD
; Obtiene el cdigo
MOVF
COD1,W
SUBWF
COD1A,W
BTFSS
STATUS,2
GOTO
NOVERI
; Si COD1 != COD1A
MOVF
COD2,W
SUBWF
COD2A,W
BTFSS
STATUS,2;
GOTO
NOVERI
; Si COD2 != COD2A
MOVF
COD3,W
SUBWF
COD3A,W
BTFSS
STATUS,2;
GOTO
NOVERI
; Si COD3 != COD3A
MOVF
COD4,W
SUBWF
COD4A,W
BTFSS
STATUS,2;
GOTO
NOVERI
; Si COD4 != COD4A
; Si COD4 = COD4A continuamos
CALL
CLEARL
;CLAVE CAMBIADA
MOVLW
MEN_5
; ' CLAVE'
CALL
ESCMEN
; Escribe mensaje
MOVLW
MEN_9
; ' CAMBIADA'
CALL
ESCMEN
; Escribe mensaje
MOVF
COD1,W
; Guarda en CODWRITE el
MOVWF
CODWRITE
MOVLW
00H
CALL
EEWRITE
MOVF
COD2,W
; Guarda en CODWRITE el
MOVWF
CODWRITE
- 54 -
01H
CALL
EEWRITE
MOVF
COD3,W
; Guarda en CODWRITE el
MOVWF
CODWRITE
MOVLW
02H
CALL
EEWRITE
MOVF
COD4,W
; Guarda en CODWRITE el
MOVWF
CODWRITE
MOVLW
03H
CALL
EEWRITE
MOVLW
20H
CALL
DELAY
GOTO
PRINCI
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;NOVERI:
;----------------------------------------------------------------------------------------------------------------------------------NOVERI
CALL
CLEARL
; Limpia LCD
MOVLW
03H
CALL
SITUCU
MOVLW
MEN_12
; 'INTENTELO'
CALL
ESCMEN
; Escribe Mensaje
MOVLW
43H
CALL
SITUCU
MOVLW
MEN_13
; 'DE NUEVO'
CALL
ESCMEN
; Escribe mensaje
MOVLW
20H
CALL
DELAY
GOTO
NUEVACL
introducir el cdigo
;-----------------------------------------------------------------------------------------------------------------------------------
- 55 -
Diciembre, 2007
INCOREC
CALL
CLEARL
MOVLW
MEN_10
CALL
ESCMEN
; Escribe mensaje
MOVLW
40H
CALL
SITUCU
MOVLW
MEN_11
; 'TENER 4 DIGITOS'
CALL
ESCMEN
; Escribe mensaje
MOVLW
20H
CALL
DELAY
GOTO
PRINCI
INCORE
DECF
INTENTO,F
BTFSC
STATUS,2
GOTO
ALARMA
CALL
CLEARL
; Limpia Display
MOVLW
MEN_3
; 'CLAVE INCORRECTA'
CALL
ESCMEN
; Escribe Mensaje
MOVLW
20H
CALL
DELAY
CALL
SUELKEY
GOTO
PRINCI
;----------------------------------------------------------------------------------------------------------------------------------;COGECOD:
;----------------------------------------------------------------------------------------------------------------------------------COGECOD
CLRF
CLRF
COD2
CLRF
COD3
CLRF
COD4
;----------------------------------------------------------------------------------------------------------------------------------;ECOD12C:
;
;----------------------------------------------------------------------------------------------------------------------------------ECOD12C
- 56 -
SUELKEY
CALL
ESPEKEY
MOVWF
COD1
SUBLW
'A'
BTFSC
STATUS,2
RETURN
Diciembre, 2007
; Si es 'A'
MOVF
COD1,W
SUBLW
'C'
BTFSC
STATUS,2
GOTO
ECOD12C
; Si es 'C'
MOVLW
'*'
; Si no es 'C'
CALL
WRITEL
;----------------------------------------------------------------------------------------------------------------------------------;ECOD22C:
;----------------------------------------------------------------------------------------------------------------------------------ECOD22C
CALL
SUELKEY
CALL
MOVWF
COD1 ;
SUBLW
'A'
BTFSC
STATUS,2
RETURN
; Si es 'A'
MOVF
COD1,W
SUBLW
'C'
BTFSC
STATUS,2
GOTO
ECOD22C
; Si es 'C'
MOVLW
'*'
; Si no es 'C'
CALL
WRITEL
;----------------------------------------------------------------------------------------------------------------------------------;ECOD32C:
;----------------------------------------------------------------------------------------------------------------------------------ECOD32C
CALL
SUELKEY
CALL
ESPEKEY
MOVWF
COD1 ;
- 57 -
'A'
BTFSC
STATUS,2
RETURN
Diciembre, 2007
; Si es 'A'
MOVF
COD1,W
SUBLW
'C'
BTFSC
STATUS,2
GOTO
ECOD32C
; Si es 'C'
MOVLW
'*'
; Si no es 'C'
CALL
WRITEL
;----------------------------------------------------------------------------------------------------------------------------------;ECOD42C:
;----------------------------------------------------------------------------------------------------------------------------------ECOD42C
CALL
SUELKEY
CALL
ESPEKEY
MOVWF
COD1 ;
SUBLW
'A'
BTFSC
STATUS,2
RETURN
; Si es 'A'
MOVF
COD1,W
SUBLW
'C'
BTFSC
STATUS,2
GOTO
ECOD42C
; Si es 'C'
MOVLW
'*'
; Si no es 'C'
CALL
WRITEL
CALL
SUELKEY
;----------------------------------------------------------------------------------------------------------------------------------;FINCOD:
;----------------------------------------------------------------------------------------------------------------------------------FINCODC
CALL
ESPEKEY
MOVWF
TECLA
SUBLW
'A'
BTFSC
STATUS,2
RETURN
- 58 -
Diciembre, 2007
FINCODC
;----------------------------------------------------------------------------------------------------------------------------------;
LEECOD:
ACUMULADOR
;----------------------------------------------------------------------------------------------------------------------------------LEECOD
BSF
STATUS,6
BCF
STATUS,5
MOVWF
EEADR
BSF
STATUS,5
BCF
EECON1,7
BSF
EECON1,0
BCF
STATUS,5
MOVF
EEDATA,W
BCF
STATUS,6
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;
EEWRITE:
;----------------------------------------------------------------------------------------------------------------------------------EEWRITE
BSF
STATUS,6
BCF
STATUS,5
MOVWF
EEADR
BCF
STATUS,6
MOVF
CODWRITE,W
BSF
STATUS,6
MOVWF
EEDATA
BSF
STATUS,5
BCF
EECON1,7
BSF
EECON1,2
BCF
INTCON,7
MOVLW
55H
- 59 -
EECON2
MOVLW
0AAH
MOVWF
EECON2
BSF
EECON1,1
BSF
INTCON,7
BCF
STATUS,5
BCF
STATUS,6
Diciembre, 2007
EEWRIT
BTFSS
PIR2,4
GOTO
EEWRIT
BSF
STATUS,5
BSF
STATUS,6
BCF
EECON1,2
BCF
STATUS,5
BCF
STATUS,6
BCF
PIR2,4
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;
GETKEY:
;COL1: 0
COL2: 1
;ROW1: 4
ROW2: 5
COL3: 2
COL4: 3
ROW3: 6
ROW4: 7
;----------------------------------------------------------------------------------------------------------------------------------GETKEY
MOVLW
0FH
; Inicializamos el teclado
MOVWF
KEYB
; Columnas a 1 y Filas a 0
MOVF
KEYB,W
MOVWF
TECLA
CALL
REBOTE
MOVF
KEYB,W
SUBWF
TECLA,F
; Si se ha inicializado correctamente
BTFSS
STATUS,2
; el teclado
GOTO
GETKEY
; continuamos
SUBLW
0FH
; Verificamos el que se
NOP
tecla
- 60 -
STATUS,2
GOTO
HAYTECL
RETLW
0FH
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------HAYTECL
BTFSC
KEYB,4
GOTO
ROW1
BTFSC
KEYB,5
GOTO
ROW2
BTFSC
KEYB,6
GOTO
ROW3
BTFSC
KEYB,7
GOTO
ROW4
RETLW
0FH
;----------------------------------------------------------------------------------------------------------------------------------ROW1
MOVLW
01H
MOVWF
KEYB
NOP
BTFSC
KEYB,4
RETLW
31H
MOVLW
02H
MOVWF
KEYB
;TECLA=1
NOP
BTFSC
KEYB,4
RETLW
32H
MOVLW
04H
MOVWF
KEYB
;TECLA=2
NOP
BTFSC
KEYB,4
RETLW
33H
;TECLA=3
- 61 -
08H
MOVWF
KEYB
Diciembre, 2007
NOP
BTFSC
KEYB,4
RETLW
'A'
RETLW
0FH
;TECLA=A
;----------------------------------------------------------------------------------------------------------------------------------ROW2
MOVLW
01H
MOVWF
KEYB
NOP
BTFSC
KEYB,5
RETLW
34H
MOVLW
02H
MOVWF
KEYB
;TECLA=4
NOP
BTFSC
KEYB,5
RETLW
35H
MOVLW
04H
MOVWF
KEYB
;TECLA=5
NOP
BTFSC
KEYB,5
RETLW
36H
;TECLA=6
RETLW 0FH
;----------------------------------------------------------------------------------------------------------------------------------;ROW3: Si la Tecla Presionada se encuentra en la Fila 3
;
;----------------------------------------------------------------------------------------------------------------------------------ROW3
MOVLW
01H
MOVWF
KEYB
NOP
BTFSC
KEYB,6
RETLW
37H
;TECLA=7
- 62 -
02H
MOVWF
KEYB
Diciembre, 2007
NOP
BTFSC
KEYB,6
RETLW
38H
MOVLW
04H
MOVWF
KEYB
;TECLA=8
NOP
BTFSC
KEYB,6
RETLW
39H
MOVLW
08H
MOVWF
KEYB
;TECLA=9
NOP
BTFSC
KEYB,6
RETLW
'C'
RETLW
0FH
;TECLA=C
;----------------------------------------------------------------------------------------------------------------------------------ROW4
MOVLW
01H
MOVWF
KEYB
NOP
BTFSC
KEYB,7
RETLW
'*'
MOVLW
02H
MOVWF
KEYB
;TECLA=*
NOP
BTFSC
KEYB,7
RETLW
30H
MOVLW
04H
MOVWF
KEYB
;TECLA=0
NOP
BTFSC
KEYB,7
RETLW
'#'
RETLW
0FH
;TECLA=#
- 63 -
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;
SUELKEY:
;----------------------------------------------------------------------------------------------------------------------------------SUELKEY
CALL
GETKEY
SUBLW
0FH
BTFSC
STATUS,2;
RETURN
GOTO
SUELKEY
;----------------------------------------------------------------------------------------------------------------------------------;
ESPEKEY:
;----------------------------------------------------------------------------------------------------------------------------------ESPEKEY
CALL
GETKEY
MOVWF
TECLA
; Verificamos
SUBLW
0FH
; que se haya
BTFSC
STATUS,2
GOTO
ESPEKEY
; si no se presiono
MOVF
TECLA,W
RETURN
; el valor en el acumulador
;----------------------------------------------------------------------------------------------------------------------------------;
ESCMEN:
;----------------------------------------------------------------------------------------------------------------------------------ESCMEN
MOVWF
PUNTAB
ESCMEN2
CALL
TABLA
ADDLW
00H
BTFSC
STATUS,2
RETURN
CALL
WRITEL
INCF
PUNTAB,F
MOVF
PUNTAB,W
GOTO
ESCMEN2
- 64 -
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;
WAITLCD:
;----------------------------------------------------------------------------------------------------------------------------------WAITLCD
BSF
STATUS,5
; Cambio al Banco 1 y
MOVLW
0FFH
MOVWF
DATO
BCF
STATUS,5
; Regreso al Banco 0
BSF
EN
; Activamos el LCD
BCF
RS
BSF
RW
MOVLW
0FFH
MOVWF
DATO
WAITLC
BTFSC
DATO,7
GOTO
WAITLC
; de el LCD
BCF
EN
BCF
RW
BCF
DATO,7
BSF
STATUS,5
; Regreso el Puerto B
CLRF
DATO
; como Salidas
BCF
STATUS,5
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;INITLCD:
;----------------------------------------------------------------------------------------------------------------------------------INITLCD
MOVLW
38H
;00111000
CALL
COMANDO
MOVLW
0CH
;00001100
CALL
COMANDO
MOVLW
06H
;00000110
- 65 -
COMANDO
Diciembre, 2007
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;
CLEARL:
IZQUIERDO
;
DEL DISPLAY
;----------------------------------------------------------------------------------------------------------------------------------CLEARL
MOVLW
01H
CALL COMANDO
;BORRADO
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;
WRITEL:
ACUMULADOR
;----------------------------------------------------------------------------------------------------------------------------------WRITEL
BSF
EN
BSF
RS
BCF
RW
MOVWF
DATO
BCF
EN
CALL
WAITLCD
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;
;----------------------------------------------------------------------------------------------------------------------------------COMANDO
BSF
EN
BCF
RS
BCF
RW
MOVWF
DATO
BCF
EN
CALL
WAITLCD
RETURN
- 66 -
Diciembre, 2007
;----------------------------------------------------------------------------------------------------------------------------------;
SITUCU:
EL
;
ACUMULADOR
;----------------------------------------------------------------------------------------------------------------------------------SITUCU
IORLW 80H
CALL COMANDO
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;*********** DELAY ***********
; SUBRUTINA DE RETARDO SEGN EL VALOR DEL ACUMULADOR
; MODIFICA LOS SIGUIENTES REGISTROS
;
CUENTA1
CUENTA2
CUENTA3
;----------------------------------------------------------------------------------------------------------------------------------DELAY
MOVWF
CUENTA1
DELAY3
MOVLW
0FFH
MOVWF
CUENTA2
DELAY2
MOVLW
0FFH
MOVWF
CUENTA3
DELAY1
DECFSZ
CUENTA3,F
GOTO
DELAY1
DECFSZ
CUENTA2,F
GOTO
DELAY2
DECFSZ
CUENTA1,F
GOTO
DELAY3
RETURN
REBOTE
- 67 -
0FFH
MOVWF
CUENTA1
DECFSZ
CUENTA1,F
GOTO
REBO
Diciembre, 2007
REBO
RETURN
ORG
2100H
DE
30H,30H,30H,30H
END
12. BIBLIOGRAFIA.
1.
2.
Iovine, John. PIC Robotics .McGraw Hill. E.U. A. 2004, 290 p.p.
3.
http://es.wikipedia.org/wiki/Microcontrolador
4.
- 68 -