Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Mi Tesis Wakala

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

Proceso de creación de código

El proceso de realización del proyecto comenzó con la creación del código en


lenguaje ensamblador, una etapa crucial que sentó las bases para el desarrollo
posterior. Este paso inicial implicó la escritura de instrucciones de bajo nivel,
directamente comprensibles por el microcontrolador que se utilizaría en la
cerradura Bluetooth.

Además de la programación en sí, se dedicó tiempo al planteamiento de la idea y


al diseño del funcionamiento de la cerradura Bluetooth. Esto implicó la
conceptualización de cómo interactuaría la cerradura con los dispositivos móviles
a través de la tecnología Bluetooth, así como la definición de los criterios de
seguridad y usabilidad que guiarían el desarrollo.

Se realizaron reuniones de lluvia de ideas y se elaboraron diagramas de flujo y


esquemas de arquitectura para visualizar el proceso de funcionamiento y las
interacciones entre los diferentes componentes de hardware y software. Este
proceso de planificación fue crucial para garantizar que el proyecto se desarrollara
de manera organizada y eficiente.

Resultado de esto se generó el siguiente diagrama de flujo dónde se representaba


lo que se esperaba del programa.

(INSERTAR DIAGRAMA DE FLUJO)

Código base

La decisión final fue partir de un código de funcionamiento similar al que se había


visto previamente en clase. Este enfoque proporcionaba una base sólida sobre la
cual construir y ampliar las funcionalidades necesarias para convertirlo en una
cerradura completa, en lugar de limitarse a una funcionalidad básica. El código fue
el siguiente.

;-----------+VARIABLES+-----------; DIG1 EQU 0X30


DIG2 EQU 0X31 BSF PORTC,RC2
DIG3 EQU 0X32 ;Encerder LED que indica
CHAR1 EQU 0X33 estado ON
CHAR2 EQU 0X34
CHAR3 EQU 0X35 CLRF PORTB ;Activar
TC EQU 0X36 Teclado
GOTO $+2
START ;Configu CAPTURAR
ración de puertos CALL ALARMA1S
CLRF PORTA ;Apagar Digitos
BANKSEL ANSEL ingresados
CLRF ANSEL DIGITO1:
CLRF ANSELH CALL ESPERATH
BANKSEL OPTION_REG CALL DECO_TECLA
BCF OPTION_REG,7 MOVWF DIG1
BANKSEL TRISA CALL ESPERATL
MOVLW B'11111000' MOVFW DIG1
MOVWF TRISA XORLW H'0F' ;¿Se ha
MOVLW B'00000000' oprimido aceptar?
MOVWF TRISC BTFSS STATUS,Z
MOVLW B'00001111' GOTO $+3
MOVWF TRISB CALL ALARMA1S
GOTO DIGITO1
CLRF STATUS ;Inicializar MOVFW DIG1
puertos XORLW H'0D'
CLRF PORTA BTFSC STATUS,Z
CLRF PORTB GOTO CAPTURAR
COMF PORTB BSF PORTA,RA2
CLRF PORTC CALL PITIDO
DIGITO2:
MOVLW H'03' CALL ESPERATH
MOVWF CHAR1 CALL DECO_TECLA
MOVLW H'02' MOVWF DIG2
MOVWF CHAR2 CALL ESPERATL
MOVLW H'0B' MOVFW DIG2
MOVWF CHAR3 XORLW H'0F' ;¿Se ha
oprimido aceptar?
INICIO: BTFSS STATUS,Z
GOTO $+3
CALL ALARMA1S
GOTO DIGITO2
MOVFW DIG2
XORLW H'0D' COMPARAR:
BTFSC STATUS,Z MOVFW DIG1
GOTO CAPTURAR XORWF CHAR1,W
BSF PORTA,RA1 BTFSS STATUS,Z
CALL PITIDO GOTO NOABRIR
DIGITO3: MOVFW DIG2
CALL ESPERATH XORWF CHAR2,W
CALL DECO_TECLA BTFSS STATUS,Z
MOVWF DIG3 GOTO NOABRIR
CALL ESPERATL MOVFW DIG3
MOVFW DIG3 XORWF CHAR3,W
XORLW H'0F' BTFSS STATUS,Z
BTFSS STATUS,Z GOTO NOABRIR
GOTO $+3 ABRIR
CALL ALARMA1S BSF PORTC,RC0
GOTO DIGITO3 CALL ALARMA5S
MOVFW DIG3 BCF PORTC,RC0
XORLW H'0D' GOTO INICIO
BTFSC STATUS,Z NOABRIR
GOTO CAPTURAR BSF PORTC,RC1
BSF PORTA,RA0 CALL ALARMA5S
CALL PITIDO BCF PORTC,RC1
ACEPTAR_O_REGRESAR: GOTO INICIO
CALL ESPERATH
CALL DECO_TECLA
MOVWF TC ;-----------+SUBRUTINAS+-----------;
CALL ESPERATL
MOVFW TC TIMER100mS
XORLW H'0F' MOVLW .100
BTFSC STATUS,Z MOVWF 0X24
GOTO COMPARAR ;100mS
MOVFW TC MOVLW .249
XORLW H'0D' MOVWF 0X25
BTFSS STATUS,Z ;1mS
GOTO $+3 NOP
CALL PITIDO DECFSZ 0X25
GOTO CAPTURAR GOTO $-2
CALL ALARMA1S DECFSZ 0X24
GOTO GOTO $-6
ACEPTAR_O_REGRESAR RETURN
RETURN
TIMER10mS
MOVLW .10 ALARMA1S
MOVWF 0X24 BSF PORTC,RC1
;10mS BSF PORTC,RC4
MOVLW .249 CALL TIMER1S
MOVWF 0X25 BCF PORTC,RC1
;1mS BCF PORTC,RC4
NOP RETURN
DECFSZ 0X25
GOTO $-2 PITIDO
DECFSZ 0X24 BSF PORTC,RC4
GOTO $-6 CALL TIMER100mS
RETURN BCF PORTC,RC4
RETURN
TIMER1S
MOVLW .10 ALARMA5S
MOVWF 0X26 BSF PORTC,RC4
;1S CALL TIMER1S
CALL TIMER100mS CALL TIMER1S
DECFSZ 0X26 CALL TIMER1S
GOTO $-2 CALL TIMER1S
RETURN CALL TIMER1S
BCF PORTC,RC4
ESPERATH RETURN
MOVFW PORTB ;Verificar
si se ha oprimido una tecla
XORLW H'0F' DECO_TECLA:
BTFSC STATUS,Z ;FILA0
GOTO $-3 MOVLW B'01111111'
RETURN MOVWF PORTB
BTFSS PORTB,RB0
ESPERATL RETLW H'00'
CALL TIMER10mS BTFSS PORTB,RB1
CLRF PORTB RETLW H'01'
MOVFW PORTB ;Verificar BTFSS PORTB,RB2
si se ha dejado de oprimir la tecla RETLW H'02'
XORLW H'0F' ;Iguales Z=1, BTFSS PORTB,RB3
No iguales Z=0 RETLW H'03'
BTFSS STATUS,Z ;FILA1
GOTO $-3 MOVLW B'10111111'
MOVWF PORTB RETLW H'0A'
BTFSS PORTB,RB0 BTFSS PORTB,RB3
RETLW H'04' RETLW H'0B'
BTFSS PORTB,RB1 ;FILA3
RETLW H'05' MOVLW B'11101111'
BTFSS PORTB,RB2 MOVWF PORTB
RETLW H'06' BTFSS PORTB,RB0
BTFSS PORTB,RB3 RETLW H'0C'
RETLW H'07' BTFSS PORTB,RB1
;FILA2 RETLW H'0D' ;CLEAR
MOVLW B'11011111' BTFSS PORTB,RB2
MOVWF PORTB RETLW H'0E'
BTFSS PORTB,RB0 BTFSS PORTB,RB3
RETLW H'08' RETLW H'0F' ;ACEPTAR
BTFSS PORTB,RB1
RETLW H'09' END
BTFSS PORTB,RB2

Partir de un código existente tenía varias ventajas. En primer lugar, permitía


ahorrar tiempo al no tener que comenzar desde cero, ya que se contaba con un
punto de partida que ya había sido probado y verificado en términos de su
funcionalidad básica. En segundo lugar, utilizar un código previamente visto en
clase proporcionaba una familiaridad adicional, lo que facilitaba la comprensión y
modificación del código para adaptarlo a los requisitos específicos del proyecto.

Sin embargo, simplemente tomar el código existente y agregar funciones


adicionales no sería suficiente. Se requería un enfoque cuidadoso para garantizar
que las nuevas funcionalidades se integraran de manera efectiva y coherente.
Esto implicaba entender en profundidad cómo funcionaba el código base y
planificar cuidadosamente cómo se agregarían las nuevas características sin
comprometer la estabilidad y la eficiencia del sistema en su conjunto.
Código en MicroCode

El proceso de ampliación del código mencionado anteriormente fue fundamental


para satisfacer los requisitos esenciales del proyecto. Inicialmente, el enfoque
estaba en proporcionar funcionalidades básicas, como la activación de una alarma
en caso de que se ingresara una contraseña incorrecta y la implementación de un
contador para controlar la cantidad de dígitos que podían ingresarse.

Sin embargo, conforme avanzaba el desarrollo, se hizo evidente que el código que
se tenía en ese momento era bastante extenso y complejo. Esto representaba un
desafío a la hora de optimizar el programa y dificultaba la incorporación de nuevas
características al proyecto. Fue en este punto cuando se tomó la decisión de
explorar alternativas, y se descubrió la utilidad de MicroCode como un entorno de
programación para PICs.

La transición al nuevo software, si bien prometía una mayor facilidad en el


desarrollo del código, no estuvo exenta de dificultades. Hubo algunos obstáculos y
errores de compilación que tuvieron que ser superados durante una sesión de
programación prolongada. Sin embargo, eventualmente se logró configurar con
éxito el LCD para que mostrara los dígitos ingresados al introducir la contraseña,
lo que marcó un hito importante en el progreso del proyecto.

Después de resolver los problemas iniciales, el enfoque se centró en programar el


"seguro" del sistema. Este componente crucial implicaba el uso de un servomotor
que se activaría al ingresar la contraseña correcta, realizando un movimiento
predefinido de 90°. La lógica de programación detrás de esta funcionalidad fue
cuidadosamente diseñada para garantizar la seguridad del sistema.

Sin embargo, implementar un sistema de seguridad completo requería más que


simplemente abrir una cerradura. Era necesario incorporar una función de cierre
que permitiera al usuario cerrar el servomotor, simbolizando el cierre de una
puerta. Esto implicaba la configuración de un botón adicional y la programación
correspondiente para controlar el movimiento inverso del servomotor,
retrocediendo otros 90°.

Además de la funcionalidad básica, se prestó especial atención a la seguridad del


usuario durante todo el proceso de desarrollo. Se consideraron aspectos como la
velocidad del movimiento del servomotor para garantizar un funcionamiento
seguro y confiable del sistema en su conjunto. Esta medida adicional de seguridad
fue implementada para mitigar cualquier riesgo potencial asociado con el uso del
dispositivo.

(INSERTAR CODIGO LDMICRO)

También podría gustarte