Está en la página 1de 49

Tecnolgico de Estudios de Superiores de Ixtapaluca

Carrera. Ingeniera en Sistemas Computacionales

Materia: Lenguaje Ensamblador

Profesor: Ramn Lozano Zavala

Integrantes del Equipo: Rosas Zarate Diana Marlen Rodrguez Aguilar Nydia Santiago Martnez Viridiana Soriano Gutirrez Alejandra Sosa Carren Enrique Romn Vsquez Martnez Oscar Vzquez Rojas Christian Alexis Vidal Torres ngel Zarate Cruz Ricardo

Grupo: 1502

Ixtapaluca Edo. De Mxico a 19 de Diciembre de 2011.

INTRODUCCION Una cerradura electrnica consiste en llevar acabo una funcin especifica 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 de PIC 16F876, microprocesador que se encarga de las funciones de: almacenamiento de la clave de acceso y la computadora y la comparacin de las claves introducidas con la anteriormente mencionada. Las claves son introducidas por medio de un teclado de 12 teclas y visualizada en una pantalla LCD. Tambin cuenta con dos teclas: aceptar y cambiar clave. Si la clave se introduce incorrectamente tres veces una alarma se activa durante unos segundos para avisar al usuario que tratan de acceder a su espacio

PLANTEAMIENTO Y DELIMITACION

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 ms 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 del 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).

QU ES UN MICRO CONTROLADOR? Un micro controlador 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.

CARACTERSTICAS Son diseados para disminuir el coste econmico y el consumo de energa de una 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.

ESQUEMA DEL MICRO CONTROLADOR

Familias de controladores Los micro controladores ms comunes en uso se muestran a continuacin: TABLA 1. Microcontroladores ms comunes. 12 bits 14 bits 16 bits 32 bits

Empresa
Atmel AVR Freescale (antes Motorola)

8 bits

64 bits

68HC05, 68HC08, x 68HC11, HCS08 MCS-48 (familia 8048) MCS51 (familia x 8051) 8xC251 COP8 x Familia 12Cxx de 12 bits

68HC12, 68HC16

683xx, 68HCS12, 68HCSX12

Intel

MCS96, MXS296

National Semiconductor

x Familia 12Fxx, 16Cxx y 16Fxx de 14 bits (PIC16F87X)

X 18Cxx y 18Fxx de 16 bits

Microchip

Familia 10f2xx

Observacin: Algunas arquitecturas de microcontrolador estn disponibles por tal cantidad de vendedores y en tantas variedades, que podran tener, con total correccin, su propia categora. Entre ellos encontramos, principalmente, las variantes de 8051 y Z80.

ELECCIN DE UN MICROCONTROLADOR PARA EL PROYECTO. Para ele de microcontrolador a utilizar nos basamos en los siguientes puntos: Microcontroladores de uso ms comn. Mas utilizados en el mbito laboral. Mayor informacin en libros y en internet para la investigacin. Ms econmicos. En base a esto decidimos que lo mejor sera utilizar micro controladores PIC, los cuales tienen una arquitectura RISC.

ARQUITECTURA RISC 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.

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 mas 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.

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: Incrementar el tamao del conjunto de registros Implementar medidas para aumentar el paralelismo interno Aadir cachs enormes Aadir otras funcionalidades, como E/S y relojes para mini controladores Construir los chips en lneas de produccin antiguas que de otra manera nos serian utilizadas No hacer nada, ofrecer el chip para aplicaciones de bajo poder o de tamao limitado Las caractersticas que generalmente son encontradas en los diseos RISC son:

Codificacin uniforme de instrucciones (ejemplo: el cdigo de operacin se encuentra siempre en la misma posicin de bit en cada instruccin, la cual es siempre una palabra), lo que permite una decodificacin ms rpida.

Un conjunto de registros homogneo, permitiendo que cualquier registro sea utilizado en cualquier contexto y as simplificar el diseo del compilador (aunque existen muchas formas de separar los ficheros de registro de entero y coma flotante).

Modos de direccionamiento simple con modos ms complejos reemplazados por secuencias de instrucciones aritmticas simples. Algunos tipos de datos soportados en el hardware (por ejemplo, algunas mquinas CISC tiene instrucciones para tratar con tipos byte, cadena; tales instrucciones no se encuentran en una mquina RISC).

Los diseos RISC tambin prefieren utilizar como caracterstica un modelo de memoria Harvard, donde los conjuntos de instrucciones y los conjuntos de datos estn conceptualmente separados; esto significa que el modificar las direcciones donde el cdigo se encuentra pudiera no tener efecto alguno en las instrucciones ejecutadas por el procesador (porque la CPU tiene separada la instruccin y el cache de datos, al menos mientras una instruccin especial de sincronizacin es utilizada). Por otra parte, esto permite que ambos caches sean accedidos separadamente, lo que puede en algunas ocasiones mejorar el rendimiento.

MICROCONTROLADORES PIC. Los PIC son una familia de micro controladores tipo RISC fabricados por Microchip Technology Inc., originalmente desarrollado por la divisin de microelectrnica de General Instruments.

El nombre actual no es un acrnimo. En realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como Peripheral Interface Controller (Controlador de Interfaz Perifrico). El PIC original se dise para ser usado con la nueva UCP (Unidad Central de Procesos) de 16 bits CP16000. Siendo en general una buena UCP, sta tena malas prestaciones de E/S, y el PIC de 8 bits se desarroll en 1975 para mejorar el rendimiento del sistema quitando

peso de E/S a la UCP. El PIC utilizaba micro-cdigo simple almacenado en ROM (Read Only Memory) para realizar estas tareas; y aunque el trmino no se usaba por aquel entonces, se trata de un diseo RISC que ejecuta una instruccin cada 4 ciclos del oscilador.

En 1985, dicha divisin de microelectrnica de General Instruments se convirti en una filial y el nuevo propietario cancel casi todos los desarrollos, que para esas fechas la mayora estaban obsoletos. El PIC, sin embargo, se mejor con EPROM para conseguir un controlador de canal programable. Hoy en da multitud de PICs vienen con varios perifricos incluidos (mdulos de comunicacin serie, UARTs, ncleos de control de motores, etc.) y con memoria de programa desde 512 a 32.000 palabras (una palabra corresponde a una instruccin en ensamblador, y puede ser 12, 14 o 16 bits, dependiendo de familia especfica de PICmicro). Para el desarrollo de este proyecto utilizamos el entorno de programacin de MPLAB IDE.

10

TAMAO DE PALABRA. El tamao de palabra de los microcontroladores PIC es fuente de muchas confusiones. Todos los PICs (excepto los dsPIC) manejan datos en trozos de 8 bits, con lo que se deberan llamar microcontroladores de 8 bits. Pero a diferencia de la mayora de UCPs, el PIC usa arquitectura Harvard, por lo que el tamao de las instrucciones puede ser distinto del de la palabra de datos. De hecho, las diferentes familias de PICs usan tamaos de instruccin distintos, lo que hace difcil comparar el tamao del cdigo del PIC con el de otros microcontroladores. Por ejemplo, un microcontrolador tiene 6144 bytes de memoria de programa: para un PIC de 12 bits esto significa 4096 palabras y para uno de 16 bits, 3072 palabras.

11

CARACTERISTICAS. Los PICs actuales vienen con una amplia gama de mejoras de hardware incorporadas: Ncleos de UCP de 8/16 bits con Arquitectura Harvard modificada Memoria Flash y ROM disponible desde 256 bytes a 256 kilobytes Temporizadores de 8/16 bits Tecnologa Nanowatt para modos de control de energa Perifricos serie sncronos y asncronos: USART, AUSART, EUSART Conversores analgico/digital de 10-12 bits Comparadores de tensin Mdulos de captura y comparacin PWM Controladores LCD Perifrico MSSP para comunicaciones IC, SPI, y IS Memoria EEPROM interna con duracin de hasta un milln de ciclos de lectura/escritura motores Puertos de E/S (tpicamente 0 a 5,5 voltios) Perifricos de control de motores.

LA PROGRAMACIN DEL MICROCONTROLADOR.

Para transferir el cdigo de un ordenador al PIC normalmente se usa un dispositivo llamado programador. La mayora de PICs que Microchip distribuye hoy en da incorporan ICSP (In Circuit Serial Programming, programacin serie incorporada) o LVP (Low Voltage Programming, programacin a bajo voltaje), lo que permite programar el PIC directamente en el circuito destino. Para la ICSP se usan los pines RB6 y RB7 como reloj y datos y el MCLR para activar el modo programacin aplicando un voltaje de unos 11 voltios. Existen muchos programadores de PICs, desde los ms simples que dejan al software los detalles de comunicaciones, a los ms complejos, que pueden verificar el dispositivo a diversas tensiones de alimentacin e implementan en hardware casi todas las funcionalidades. Muchos de estos programadores complejos incluyen ellos mismos PICs preprogramados como interfaz para enviar las rdenes al PIC que se desea programar. Uno de los programadores ms simples es el TE20, que utiliza la lnea TX del puerto RS232 como alimentacin y las lneas DTR y CTS para mandar o recibir datos cuando el microcontrolador est en modo programacin. El software de programacin puede ser el ICprog,

12

muy comn entre la gente que utiliza este tipo de microcontroladores. Para la programacin del microcontrolador elegido (PIC16F876) utilizamos las siguientes herramientas: MPLAP IDE (Herramienta para Depurar y Simular el cdigo del Programa) PIC Simulator IDE (Herramienta Visual de simulacin PIC) Grabador PIC USB

Nosotros utilizamos un programador que utiliza una interfaz USB llamado PICProg USB, el cual utiliza un software especial para transferir el cdigo en hexadecimal.

13

TECLADO MATRICIAL 4x3.

Este teclado matricial es un excelente dispositivo de entrada cuando se trabaja con PICs. La forma tradicional de conectarlos es utilizando 7 pines, 3 de columnas y 4 de filas. El nombre de este tipo de teclado proviene de su interconexin entre las columnas y las filas, ya que esta conexin tiene la forma de una matriz. Existen teclados matriciales de 4 x 4 y de 4 x 3 teclas.

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:

Atenuacin: Disminuye el voltaje y la corriente de corriente alterna (voltaje de 128Va.c. a 12Va.c. y la corriente la disminuye a 1A). Rectificacin: Se elimina la parte negativa de la seal de corriente alterna, esto se logra utilizando un Rectificador de Onda Completa. Filtrado: Se suavizan los rizos de la seal saliente del rectificador,

14

tratando de logra un valor de voltaje lineal (hasta este punto 12Vd.c.). Regulacin: Su funcin es mantener y controlar el valor deseado a la carga (5Vd.c. al circuito).

DESARROLLO DEL PROYECTO.

INVESTIGACIN.

Se comenz por la investigacin de cada uno de los 3 elementos principales de nuestro proyecto (PIC, 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

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

15

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 ECOD12, ECOD22, ECOD32, ECOD42: Estos mdulos extraen el cdigo 1, cdigo 2, cdigo 3 y cdigo 4, para posteriormente verificar la clave compuesta por la unin de los cuatro cdigos coincida con la almacenada en la memoria. Rutinas que utiliza este modulo: SUELKEY

ESPEKEY INCOR CAMBIOC WRITEL 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:

16

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 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

17

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 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.

18

SUELKEY: Subrutina que espera a que se suelte la tecla

GRABACIN Y SIMULACIN.

Ya teniendo listo el programa nos dimos a la tarea de buscar un grabador de PICs, el cual fue una herramienta necesaria para nuestro proyecto. Este grabador fue adquirido por Internet. Con la posesin de nuestro grabador nos vino consigo el programa grabador y simulador de PIC (PIC Simulador IDE), el cual nos ayudo a averiguar si nuestro programa fue logrado con xito, es decir, con el se comprobara que la comunicacin entre el PIC que las funciones fueran las adecuadas. Una vez acabado con este proceso nos dimos a la tarea de grabar el PIC con la ayuda de este mismo programa y del grabador.

CIRCUITO ELECTRICO.

Una vez hecha toda la investigacin, los estudios necesarios, la realizacin del programa de funcionamiento y las simulaciones necesarias, se comenz por realizar el circuito que se adecuara a nuestras necesidades del proyecto, esto con la ayuda de un programa de simulacin de circuitos electrnicos (ORCAD PSpice) y de Paint, ya que haba algunos componentes que no se encontraron en el ORCAD y se tuvieron que realizar en este ultimo programa.

19

COMPONENTES DEL PROYECTO.

Los componentes que se utilizaron para la construccin del proyecto fueron los siguientes: Fuente de Alimentacin:

1 Transformador de 12V a 1A. 1 Puente de diodos rectificador a 2 (RS203L). 1 Capacitor de 1000F a 50V. 1 Regulador de voltaje positivo a 5V (L7805CV). 2 Conectores plug invertido de 1.3mm. Cable. 1 Gabinete para eliminador.

Circuito de la Cerradura.

1 PIC (16F8576). 1 Teclado Matricial 4x3. 1 Bocina de 8 de impedancia. 1 Transistor para aplicacin de switcheo (TIP31). 2 Capacitores de 22pF. 5 Resistencias de 10k a 1/2W. 6 Resistencias de 1k a 1/2W. 1 Resistencia de 470 a 1/2W. 1 Potencimetro de 10k. 2 LEDs (1 Verde y 1 Rojo).

2 switchs tipo botn 2 Conectores plug de 1.3mm. Conectores headers (Hembra y Macho). Cable plano de 24 hilos. Cable telefnico. 1 Gabinete de 8x14cm y 4cm de alto.

20

1 Tablilla de Experimentacin de circuitos (Protoboard).

Grabacin del PIC: 1 Grabador de PICs.

CONSTRUCCIN DEL CIRCUITO. Se comenz por armar el circuito en un protoboard para ver que todo Funcionara a la perfeccin (tanto las conexiones como cada uno de los Elementos). El primer circuito que se armo fue la fuente de alimentacin ya que con ella se suministra el voltaje necesario para la operacin de nuestra cerradura. Se probo con un led que esta etapa estuviera funcionando a la perfeccin y se midi con un multmetro que los niveles de voltaje a la salida fueran los correctos. Ya teniendo nuestra fuente, se prosigui al armado de la parte central del circuito, empezando por la parte central (Foto 2), es decir, comenzando por poner el PIC al centro del protoboard y conectado el PIC a cada uno de los elementos con los cuales tenia que se conectado, de tal forma que se nos simplificase la conexin del circuito. Esto se tuvo que hacer un par de ocasiones, ya que al tener tantos cables por conectar nos confundamos y conectbamos cables en donde no iban, esto provocaba que al momento de alimentar el circuito provocaran corto o simplemente no funcionaba el circuito. Ya conectados todos los cables al PIC, se conectaron al teclado en los lugares indicados (poniendo cada cable en el pin del teclado). De tal forma que todo el circuito de la cerradura y la fuente de alimentacin quedara en un solo circuito. 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, y que los botones de aceptar y cambiar clave operaran a la perfeccin.

21

FUNCIONAMIENTO.

CLAVE DE ACCESO.

1.

Inicialmente la clave es la 0000.

2.

La calve se almacena en la memoria EEPROM de datos del PIC, por lo que, cuando se desconecte la alimentacin del circuito se conserva la clave.

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.

En la pantalla del LCD se muestra el mensaje "INTRODUZCA CLAVE" entonces se introduce la clave de acceso (inicialmente ser 0000) y pulsas la tecla ACEPTAR para que se abra la puerta.

5.

Cuando el cdigo introducido es incorrecto se muestra el mensaje "CLAVE INCORRECTA" y la puerta no se abre.

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.

CAMBIO DE LA CLAVE DE ACCESO

1.

Pulsar la tecla CAMBIAR CLAVE, entonces aparece durante unos instantes el mensaje "CAMBIO DE CLAVE"

2.

Despus te pide la clave con la que se acceso hasta ese

22

momento (inicialmente la 0000) con el mensaje "CLAVE ANTIGUA". Tecleas la clave y pulsas ACEPTAR. 3. Si la clave es correcta te pide la "NUEVA CLAVE". Tecleas la nueva clave que deseas guardar y pulsas ACEPTAR. 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. Si la verificacin es correcta se cambia la clave y se muestra el mensaje "CLAVE CAMBIADA" durante unos segundos.

CODIGO FUENTE. ; Configuracin **************************************************************************************** LIST P=16F876 ;Procesador a usar RADIX HEX predeterminada ;Sistema de numeracin ;Librera Hexadecimal contiene

INCLUDE P16F876.INC definiciones de registros internos ;Palabra de Configuracin

incluida,

__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

23

PORTA DATO KEYB INTCON PIR2 PIE2 ADECON1 EEDATA EEADR EECON1 EECON2 ************** ; Registros General ;-----------------------------------------------------------------------------------------------------------------------------T_RELE PUNTAB INTENTO TECLA CUENTA1 CUENTA2 CUENTA3 COD1 COD2 COD3 COD4 CUENTA4 COD1A COD2A COD3A COD4A CODWRITE

EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU

05H 06H 07H 0BH 0DH 8DH 9FH 10C H 10D H 18C H 18D H

;Puerto A ;PUERTO B ;Puerto C

; Anlogo Digital Configuracin

de

Uso

EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU

;CONTROLA EL TIEMPO DE APERTURA DE LA 20H PUERTA 20H 21H ;Numero de intentos antes de que se accione la alarma 22H ; Almacena la tecla presionada 23H 24H 25H 26H ; Almacena la primera tecla numrica presionada 27H; Almacena la segunda tecla numrica presionada 28H ; Almacena la tercera tecla numrica presionada 29H ; Almacena la cuarta tecla numrica presionada 2AH 2BH ; Auxiliar para comprobar cdigo 2CH ; Auxiliar para comprobar cdigo 2DH ; Auxiliar para comprobar cdigo 2EH ; Auxiliar para comprobar cdigo 2FH ; Auxiliar para escribir cdigo en EEPROM

24

;-----------------------------------------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------------------------------------F EQU 1 W EQU 0 ;----------------------------------------------------------; Definiciones -------------------------------------------------------

---------------------------------------------------------------------

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

25

#DEFINE #DEFINE #DEFINE #DEFINE #DEFINE

EN 05H,2 ; Activa y desactiva el LCD RW 05H,1 ; RS 05H,0 ; ALA 05H,3 ; PORTERO 05H,5 ; Apertura y cierre de la puerta

ORG 00H GOTO INICIO ORG 04H BCF PIR2,4 RETFIE ;---------------------------------------------------------------------------------------------------------------------------------TABLA MOVWF mensaje PCL ; Hacemos apuntar el PCL a la direccin de inicio del

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 1 'Introduzca' ;---------------------------------------------------------------------------------------------------------------------------------MEN_1 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'I' 'N' 'T' 'R' 'O' 'D' 'U' 'Z' 'C' 'A'

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 5 'Clave'

26

;---------------------------------------------------------------------------------------------------------------------------------MEN_5 RETLW RETLW RETLW RETLW RETLW RETLW RETLW '' 'C' 'L' 'A' 'V' 'E' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 2 'Puede Pasar' ;---------------------------------------------------------------------------------------------------------------------------------MEN_2 RETLW RETLW 'U' RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'P' 'E' 'D' 'E' '' 'P' 'A' 'S' 'A' 'R' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 3 'Clave Incorrecta' ;---------------------------------------------------------------------------------------------------------------------------------MEN_3 RETLW 'C'

27

RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW

'L' 'A' 'V' 'E' '' 'I' 'N' 'C' 'O' 'R' 'R' 'E' 'C' 'T' 'A' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 4 'Cambio de' ;---------------------------------------------------------------------------------------------------------------------------------MEN_4 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'C' 'A' 'M' 'B' 'I' 'O' '' 'D' 'E' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 6 'Antigua'

28

;---------------------------------------------------------------------------------------------------------------------------------MEN_6 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW '' 'A' 'N' 'T' 'I' 'G' 'U' 'A' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 7 'Nueva' ;---------------------------------------------------------------------------------------------------------------------------------MEN_7 RETLW RETLW RETLW RETLW RETLW 'N' 'U' 'E' 'V' 'A'

RETLW 00H ;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 8 'Verifique' ;---------------------------------------------------------------------------------------------------------------------------------MEN_8 RETLW RETLW RETLW RETLW RETLW RETLW 'V' 'E' 'R' 'I' 'F' 'I'

29

RETLW RETLW RETLW RETLW

'Q' 'U' 'E' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 9 'Cambiada' ;---------------------------------------------------------------------------------------------------------------------------------MEN_9 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW '' 'C' 'A' 'M' 'B' 'I' 'A' 'D' 'A' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 10 'La Clave Debe' ;---------------------------------------------------------------------------------------------------------------------------------MEN_10 RETLW RETLW RETLW '' RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'L' 'A' 'C' 'L' 'A' 'V' 'E' '' 'D'

30

RETLW RETLW RETLW RETLW

'E' 'B' 'E' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 11 'Tener 4 Dgitos' ;---------------------------------------------------------------------------------------------------------------------------------MEN_11 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'T' 'E' 'N' 'E' 'R' '' '4' '' 'D' 'I' 'G' 'I' 'T' 'O' 'S'

RETLW 00H ;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 12 'Intentelo' ;---------------------------------------------------------------------------------------------------------------------------------MEN_12 RETLW RETLW RETLW RETLW 'I' 'N' 'T' 'E'

31

RETLW RETLW RETLW RETLW RETLW RETLW

'N' 'T' 'E' 'L' 'O' 00H

;---------------------------------------------------------------------------------------------------------------------------------;Mensaje 13 'De Nuevo' ;---------------------------------------------------------------------------------------------------------------------------------MEN_13 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'D' 'E' '' 'N' 'U' 'E' 'V' 'O' 00H

;---------------------------------------------------------------------------------------------------------------------------------INICIO: Inicializa los dispositivos. LCD Teclado ;-------------------------------------------------------------------------------------------------------------------------------INICIO CLRF CLRF CLRF BSF DATO KEYB PORTA STATUS ,5 ; Inicializa el Puerto B ; Inicializa el Teclado ; Inicializa el Puerto A ; Cambiamos al Banco 1 para

32

MOVLW MOVWF CLRF BCF BCF BCF BCF BCF MOVLW

06H ADCON 1 DATO EN RW RS ALA PORTE RO 0F0H

definir las entradas como digitales ; Bits de configuracin para las entradas como digitales ; Enva la configuracin ; ; Configuramos EN, RW, ; ; RS, ALA y Portero ; ; como salidas ; Configuramos el teclado ; Columnas como salidas y Filas como entradas ; Regresamos al banco 0 ; La EEPROM eta lista para usarse ; Cargamos el numero de intentos que se podrn ; realizar antes que se active la alarma en este caso 3 ; Inicializamos la pantalla LCD ;

MOVWF BCF

KEYB STATUS ,5

BCF

PIR2,4

MOVLW

03H

MOVWF CALL ;CALL

INTENT O

INITLCD INITLCD --------------------------------------------;---------------- ---------------------------- ------------------------- -----------;PRINCI: Cuerpo principal del

33

programa ---------------------------------------------------------------; Borra el Display y coloca el cursor ala izq.

;---------------------------------------------PRINCI CALL CLEARL MOVLW CALL MOVLW CALL MOVLW 00H SITUCU MEN_1 ESCMEN 44H

; Coloca el cursor al inicio de la lnea superior del LCD ; Cargamos la direccin del Mensaje en el Acumulador ; Rutina que escribe el mensaje al que apunta el acumulador

CALL SITUCU ;-----------------------------------------------------------------------------------------------------------------------------;ECOD12: Este modulo almacena la primera tecla numrica presionada y valida que no sea una tecla de funcin en caso de 'C' entra a ; la seccin ; de "Cambio de Clave" ECOD12

; Coloca el cursor al inicio de la lnea inferior del LCD

34

CALL SUELKEY CALL ESPEKEY MOVWF SUBL W BTFS C GOTO MOVF SUBL W BTFS C GOTO COD 1 'A'

; Verificamos que el teclado se encuentre bien inicializado ; Esperamos a que se presione una tecla ; Almacenamos la primera tecla presionada en el Acumulador ; Verificamos si la tecla fue o no 'A' ; ; Si la tecla = 'A' ; Cargamos la tecla en el acumulador ; Verificamos si la tecla presionada fue 'C'

STATUS,2 INCO R COD1,W 'C' STATUS,2 CAMBIOC

; Si la tecla fue 'C' ; cambiamos la clave ; en caso de que se haya presionado una MOVF COD1,W tecla numrica MOVLW '*' ; para mantener oculta la tecla oprimida ;---------------------------------------------------------------------------------------------------------------------------------;ECOD22: Este modulo almacena la segunda tecla numrica presionada y valida ; ; que no sea una tecla de funcin en caso de 'C' entra a la seccin de "Cambio de Clave"

;---------------------------------------------------------------------------------------------------------------------------------ECOD22 CALL SUELKEY CALL ESPEKEY MOVWF SUBL W BTFS C GOTO MOVF SUBL W BTFS C COD2 'A' STATUS,2 INCOR COD2,W 'C' STATUS,2 ; Verificamos que el teclado se encuentre bien inicializado ; Esperamos a que se presione una tecla ; Almacenamos la segunda tecla presionada en el Acumulador ; Verificamos si la tecla fue o no 'A' ; ; Si la tecla = 'A' ; Cargamos la tecla en el acumulador ; Verificamos si la tecla presionada fue 'C' ; Si la tecla fue 'C'

35

GOTO

CAMBIOC

MOVF COD2,W MOVLW '*' ;-----------------------------------------------------------------------------------------------------------------------------;ECOD32: Este modulo almacena la tercera tecla numrica presionada y valida ; que no sea una tecla de funcin en caso de 'C' entra a la seccin ; de "Cambio de Clave" -------;------------------- --------------------------------------------------------------------------------------------------ECOD32 CALL SUELKEY CALL ESPEKEY MOVWF SUBL W BTFS C GOTO COD3 'A' STATUS,2 INCOR ;

; cambiamos la clave ; en caso de que se haya presionado una tecla numrica ; para mantener oculta la tecla oprimida

MOVF COD3,W SUBL W 'C' BTFS C STATUS,2 GOTO CAMBIOC MOVF COD3,W MOVLW '*' CALL WRITEL ------------------------------------------;-------- -------------------------------------------- --------

36

-----------------;ECOD42: Este modulo almacena la cuarta tecla numrica presionada y valida ; que no sea una tecla de funcin en caso de 'C' entra a la seccin ; de "Cambio de Clave" -------;------------------- --------------------------------------------------------------------------------------------------ECOD42 CALL SUELKEY CALL ESPEKEY MOVWF SUBL W BTFS C GOTO MOVF MOVLW 01H CALL SUBWF BTFSS GOTO MOVLW CALL SUBWF BTFSS GOTO MOVLW CALL SUBWF BTFSS GOTO CALL COD4 'A' STATUS,2 INCOR

COD4,W ; Leemos el registro de la EEPROM ; donde se encuentra almacenado el LEECOD cdigo correcto COD2 ; Comparamos las teclas STATUS,2 ; INCOR ; Si la tecla es incorrecta 02H LEECOD COD3 STATUS,2 INCOR 03H LEECOD COD4 STATUS,2 INCOR CLEARL ; Leemos el registro de la EEPROM ; donde se encuentra almacenado el cdigo correcto ; Comparamos las teclas ; ; Si la tecla es incorrecta ; Leemos el registro de la EEPROM ; donde se encuentra almacenado el cdigo correcto ; Comparamos las teclas ; ; Si la tecla es incorrecta ; CLAVE CORRECTA

37

MOVLW CALL MOVLW CALL MOVLW MOVWF BSF MOVLW CALL BCF

02H SITUCU MEN_2 ESCMEN 03H INTENTO PORTER O T_RELE DELAY PORTER O

; Colocamos en posicin ; el cursor para escribir en el LCD ; Escribimos el Mensaje ; de bienvenida ; Reinicia ; el nmero de intentos ; Activa mecanismo de apertura ; ; Esperamos el tiempo dado por T_RELE ; Desactivamos mecanismo de apertura

MOVLW 10H CALL DELAY GOTO PRINCI ; Reiniciamos el sistema ;---------------------------------------------------------------------------------------------------------------------------------;INCOR: La clave fue incorrecta y enva el mensaje al LCD ;-----------------------------------------------------------------------------------------INCOR MOVLW CALL CALL

-------------------------------------

0CH COMANDO CLEARL MEN_ ;Escribeelmensajedeclave MOVLW 3 incorrecta CALL ESCMEN ; DECFSZ INTENTO,F; Decrementa el nmero de intentos disponibles GOTO INCOR2 ; Si an quedan intentos disponibles GOTO ALARMA ; Si se acabaron los intentos activa la "Alarma" INCOR2 ;Esperauntiempoantesd MOVLW 20H e CALL DELAY ; Poder intentar el ingreso PRIN GOTO CI ;------------------- -------------------------------------------------------

38

----

------------------------------------------------;ALARMA: Despus de 3 intentos incorrectos de acceso se activa ; la alarma ;-----------------------------------------------------------------------------------------------------------------------------ALARMA MOVLW 1EH TECL MOVWF A ALARMA4 MOVLW 03H ;Reiniciamoselnumerodeintentos MOVWF INTENTO ;disponibles MOVLW 00FH MOVWF CUENTA1 MOVLW 030H MOVWF CUENTA2 ALARMA1 MOVLW 20H MOVWF CUENTA4 DECF CUENTA1,F BTFS C STATUS,2 GOTO ALARMA2 ALARMA3 BSF ALA ; Enciende ; Frecuencia de apagado y CALL FRECU encendido BCF ALA ; Apaga CALL FRECU CUENTA4, DECFSZ F GOTO ALARMA3 GOTO ALARMA1 ALARMA2 MOVLW CALL DECFSZ GOTO

01H DELAY TECLA,F ALARMA4

39

GOTO FRECU MOVF MOVWF FRECU2 DECFSZ GOTO DECFSZ GOTO MOVLW MOVWF

PRINCI

CUENTA1, W CUENTA3 CUENTA3, F FRECU2 CUENTA2, F FRECU 030H CUENTA2

RETURN ;---------------------------------------------------------------------------------------------------------------------------------;CAMBIOC: Este modulo Cambia la clave almacenada ;---------------------------------------------------------------------------------------------------------------------------------CAMBIOC CALL MOVLW CALL MOVLW CALL MOVLW CALL CALL MOVLW CALL MOVLW CALL CLEARL MEN_4 ESCMEN MEN_5 ESCMEN 20H DELAY CLEARL MEN_5 ESCMEN MEN_6 ESCMEN

; 'CAMBIO DE' ; Escribe el mensaje ; ' CLAVE' ; Escribe el mensaje ; Retardo ; Limpiamos el Display ; ' CLAVE' ; Escribe el mensaje ; ' ANTIGUA' ; Escribe el mensaje ; Espera a que se deje de presionar la tecla ; Colocamos el cursor en la

CALL MOVLW CALL

SUELKEY 44H SITUCU

40

CALL

COGECO D

MOVLW

00H

CALL

LEECOD

SUBWF BTFSS GOTO

COD1 STATUS, 2 INCORE

lnea siguiente ; Obtiene el Cdigo Tecleado ; Direccin de la EEPROM donde est almacenado el digito ; Lee el Cdigo de le EEPROM y lo regresa en el acumulador ; compara el cdigo almacenado con el tecleado ; ; Si no es igual ; Si es igual compara el siguiente digito ; Direccin de la EEPROM donde est almacenado el digito ; Lee el Cdigo de le EEPROM y lo regresa en el acumulador ; compara el cdigo almacenado con el tecleado ; ; Si no es igual ; Si es igual compara el siguiente digito ; Direccin de

MOVLW

01H

CALL

LEECOD

SUBWF BTFSS GOTO

COD2 STATUS, 2 INCORE

MOVLW

02H

41

CALL

LEECOD

SUBWF BTFSS GOTO

COD3 STATUS, 2 INCORE

la EEPROM donde est almacenado el digito ; Lee el Cdigo de le EEPROM y lo regresa en el acumulador ; compara el cdigo almacenado con el tecleado ; ; Si no es igual ; Si es igual compara el siguiente digito ; Direccin de la EEPROM donde est almacenado el digito ; Lee el Cdigo de le EEPROM y lo regresa en el acumulador ; compara el cdigo almacenado con el tecleado

MOVLW

03H

CALL

LEECOD

SUBWF BTFSS GOTO

; ; Si no es igual ; Si el cdigo MOVLW 03H fue correcto ; Reiniciamos el nmero de MOVWF INTENTO intentos ;---------------------------------------------------------------------------------------------------------------------------------;NUEVACL: Capturamos y verificamos la nueva clave y se almacena ; en la EEPROM

COD4 STATUS, 2 INCORE

42

;------------------------------------------------------------------------------NUEVACL CALL CLEARL MOVLW 02H CALL SITUCU MOVLW MEN_7 CALL ESCMEN MOVLW MEN_5 CALL ESCMEN MOVLW 44H CALL SITUCU CALL SUELKEY CALL COGECOD MOVF BTFSC GOTO MOVWF MOVF BTFSC GOTO MOVWF MOVF BTFSC GOTO MOVWF MOVF BTFSC GOTO MOVWF CALL MOVLW CALL MOVLW CALL MOVLW CALL CALL COD1,W STATUS,2 INCOREC COD1A COD2,W STATUS,2 INCOREC COD2A COD3,W STATUS,2 INCOREC COD3A COD4,W STATUS,2 INCOREC COD4A CLEARL MEN_8 ESCMEN MEN_5 ESCMEN 44H SITUCU SUELKEY

------------------------------------------------; Limpiamos el Display ; Colocamos el cursor en la primera lnea ; 'NUEVA' ; Escribimos el mensaje ; ' CLAVE' ; Escribimos el mensaje ; Cambiamos de lnea ; ; Esperamos que se libere la tecla ; Leemos el nuevo cdigo ; Copiamos COD1 para verificar posteriormente

; Almacenamos COD1 en COD1A ; Copiamos COD2 para verificar posteriormente

; Almacenamos COD2 en COD2A ; Copiamos COD3 para verificar posteriormente

; Almacenamos COD3 en COD3A ; Copiamos COD4 para verificar posteriormente

; Almacenamos COD4 en COD4A ;VERIFIQUE CLAVE ; 'VERIFIQUE' ; Escribe mensaje ; ' CLAVE' ; Escribe mensaje ; Colocamos el cursor en la segunda lnea ; ;

43

CALL MOVF SUBWF BTFSS GOTO MOVF SUBWF BTFSS GOTO MOVF SUBWF BTFSS GOTO MOVF SUBWF BTFSS GOTO CALL MOVLW CALL MOVLW CALL MOVF MOVWF MOVLW CALL MOVF MOVWF MOVLW CALL MOVF MOVWF MOVLW CALL MOVF MOVWF MOVLW

COGECOD COD1,W COD1A,W STATUS,2 NOVERI COD2,W COD2A,W STATUS,2; NOVERI COD3,W COD3A,W STATUS,2; NOVERI COD4,W COD4A,W STATUS,2; NOVERI

; Obtiene el cdigo ; Compara el COD1 con COD1A ; ; ; Si COD1 != COD1A ; Si COD1 = COD1A continuamos comparando ; COD2 contra COD2A ; Si COD2 != COD2A ; Si COD2 = COD2A continuamos comparando ; ; Si COD3 != COD3A ; Si COD3 = COD3A continuamos comparando ;

; Si COD4 != COD4A ; Si COD4 = COD4A continuamos CLEARL ;CLAVE CAMBIADA MEN_5 ; ' CLAVE' ESCMEN ; Escribe mensaje MEN_9 ; ' CAMBIADA' ESCMEN ; Escribe mensaje COD1,W ; Guarda en CODWRITE el CODWRITE ; digito que se almacenara en EEPROM 00H ; Direccin donde guardara el digito EEWRITE ; almacena en EEPROM la clave COD2,W ; Guarda en CODWRITE el CODWRITE ; digito que se almacenara en EEPROM 01H ; Direccin donde guardara el digito EEWRITE ; almacena en EEPROM la clave COD3,W ; Guarda en CODWRITE el CODWRITE ; digito que se almacenara en EEPROM 02H ; Direccin donde guardara el digito EEWRITE ; almacena en EEPROM la clave COD4,W ; Guarda en CODWRITE el CODWRITE ; digito que se almacenara en EEPROM 03H ; Direccin donde guardara el digito

44

CALL MOVLW CALL

EEWRITE 20H DELAY

; almacena en EEPROM la clave

GOTO PRINCI ;------------------------------------------------------------------------------------------------------------------------------;NOVERI: Identifica un error al ingresar la clave nueva por segunda ; vez ;-------------------------------------------------------------------------------------------------------------------------------NOVERI CALL CLEARL ; Limpia LCD MOVLW 03H ; CALL SITUCU ; Colocamos el cursor en la primera lnea MOVLW MEN_12 ; 'INTENTELO' CALL ESCMEN ; Escribe Mensaje MOVLW 43H ; CALL SITUCU ; Colocamos el cursor en la segunda lnea MOVLW MEN_13 ; 'DE NUEVO' CALL ESCMEN ; Escribe mensaje MOVLW 20H CALL DELAY GOTO NUEVACL ;------------------------------------------------------------------------------------------------------------------------------;INCOREC: Despliega un mensaje cuando suscita un error al ; introducir el cdigo INCOREC ;LA CLAVE DEBE TENER 4 CALL CLEARL DIGITOS MOVLW MEN_10 ; 'LA CLAVE DEBE' CALL ESCMEN ; Escribe mensaje MOVLW 40H CALL SITUCU ; Cursor a segunda lnea MOVLW MEN_11 ; 'TENER 4 DIGITOS' CALL ESCMEN ; Escribe mensaje MOVLW 20H

45

CALL GOTO INCORE DECF BTFSC GOTO CALL MOVLW CALL MOVLW CALL CALL GOTO

DELAY PRINCI

INTENTO,F; Decrementa el nmero de intentos STATUS,2 ; verifica que aun existan intentos ALARMA ; si no hay intentos activa ALARMA CLEARL ; Limpia Display MEN_3 ; 'CLAVE INCORRECTA' ESCMEN ; Escribe Mensaje 20H DELAY SUELKEY ; Esperamos a que suelte la tecla PRINCI

;---------------------------------------------------------------------------------------------------------------------------------;COGECOD: Lee el cdigo y lo compara con el antiguo ;---------------------------------------------------------------------------------------------------------------------------------COGECOD CLRF COD1 ; Limpiamos las variables CLRF COD2 CLRF COD3 CLRF COD4 ;---------------------------------------------------------------------------------------------------------------------------------;ECOD12C: Lee la primera tecla del cdigo y verifica ; que sea numrica ;---------------------------------------------------------------------------------------------------------------------------------ECOD12C CALL CALL MOVWF SUBL W BTFS C SUELKEY ESPEKEY COD1 'A' STATUS,2 ;Esperamosaquesu eltelatecla ;Esperamosaquese presionelatecla ;

46

RETURN MOVF SUBL W BTFS C GOTO MOVLW COD1,W 'C' STATUS,2 ECOD12C '*'

;Sies'A' ;Sinoes'A'verificamo s'C'

CALL WRITEL ;-----------------------------------------------------------------------------------------------------------------------------;ECOD22C: Lee la segunda tecla del cdigo y verifica ; que sea numrica ;------------------- -------------------------ECOD22C CALL CALL MOVWF SUBL W BTFS C RETURN MOVF SUBL W BTFS C GOTO MOVLW

;Sies'C' ;Sinoes'C' ;Escribimos'*'enpant alla

-----

-----------------------------------------------------------------------------

;Esperamos a que SUELKEY suelte la tecla ESPEKEY ; Esperamos a que se presione la tecla COD1 ; 'A' STATUS,2 ;Sies'A' ;Sinoes'A'verificamo s'C'

COD1,W 'C' STATUS,2 ECOD22C '*'

CALL WRITEL ;-------------------------------------------------------------------------------------------------------------------------------;ECOD32C: Lee la tercera tecla del cdigo y verifica que sea numrico. ;

;Sies'C' ;Sinoes'C' ;Escribimos'*'enpant alla

47

BIBLIOGRAFIA.

1. 2. 3.

Curso Avanzado de Microcontroladores PIC. Iovine, John. PIC Robotics .McGraw Hill. E.U. A. 2004, 290 p.p. http://es.wikipedia.org/wiki/Microcontrolador

48

49