Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
;DIRECTIVAS DEL PROGRAMA
LIST P=16F84 ;Se emplea el PIC16F84
RADIX HEX ;Sistema de numeración hexadecimal
#include "p16f84a.inc"
;ETIQUETAS DEL PROGRAMA
W EQU 0x00 ;Registro de destino W : d=0
F EQU 0x01 ;Registro de destino F : d=1
Z EQU 0x02 ;Bit 2 del registro ESTADO
ESTADO EQU 0x03 ;El registro ESTAdo OCUPA LA DIRECCIÓN
;3 de los dos bancos
PUERTAA EQU 0x05 ;La PUERTAA ocupa la dirección 5 del
;banco 0 y su registro de configuración
;la dirección 5 del banco 1
PUERTAB EQU 0x06 ;La PUERTAB ocupa la dirección 6 del
;banco 0 y su registro de configuración
;la dirección 6 del banco 1
;PROGRAMA PRINCIPAL
ORG 0 ;El programa comienza en la dirección 0 y
goto INICIO ;salta a la dirección 5 para sobrepasar el
ORG 5 ;vector de interrupción
INICIO bsf ESTADO,5 ;Selección del banco 1
movlw 0xFF ;Se configura la PUERTAA como
movwf PUERTAA ;entrada
clrf PUERTAB ;Se configura la PUERTAB como salida
bcf ESTADO,5 ;Selección del banco 0
clrf PUERTAA ;Se inicializan las dos puertas a
clrf PUERTAB ;ceros
BUCLE btfss PUERTAA,0 ;Se explora el valor del microrruptor que indica si la
;alarma está o no conectada
goto DESCON ;Si esta desconectada, habrá que desactivar los LED
;y el zumbador por si estaban activados de una
;anterior pasada por el bucle
call SENS1 ;Se comprueba el estado de los tres sensores y se
;hace el tratamiento que corresponda con los LED
call SENS2
call SENS3
call ZUMB ;Si alguno de los sensores está activado, el
;zumbador deberá pitar; si no, no
goto BUCLE
DESCON clrf PUERTAB
goto BUCLE
;RUTINA DE TRATAMIENTO DEL SENSOR 1
SENS1 btfss PUERTAA,1 ;Si está a 1, hay que activar el LED
;correspondiente
goto DESACT1 ;Si no, hay que desactivarlo
goto ACT1
DESACT1 bcf PUERTAB,1
goto VOLVER1
ACT1 bsf PUERTAB,1
goto VOLVER1
VOLVER1 return
;RUTINA DE TRATAMIENTO DEL SENSOR 2
SENS2 btfss PUERTAA,2 ;Si está a 1, hay que activar el LED
;correspondiente
goto DESACT2 ;Si no, hay que desactivarlo
goto ACT2
DESACT2 bcf PUERTAB,3
goto VOLVER2
ACT2 bsf PUERTAB,3
goto VOLVER2
VOLVER2 return
;RUTINA DE TRATAMIENTO DEL SENSOR 3
SENS3 btfss PUERTAA,3 ;Si está a 1, hay que activar el LED
;correspondiente
goto DESACT3 ;Si no, hay que desactivarlo
goto ACT3
DESACT3 bcf PUERTAB,5
goto VOLVER3
ACT3 bsf PUERTAB,5
goto VOLVER3
VOLVER3 return
;RUTINA DE TRATAMIENTO DEL ZUMBADOR
ZUMB movf PUERTAA,W
andlw b'00001110' ;Con esta mascara, se consigue que sobre W quede
;sólo el valor de los sensores. Si ninguno está
;activo, W contendrá 0 y el flag Z se pondrá a 1.
btfss ESTADO,Z ;Si está a 1, hay que desactivar el zumbador
goto ACTZ ;Si no, hay que activarlo
goto DESACTZ
DESACTZ bcf PUERTAB,0
goto VOLVERZ
ACTZ bsf PUERTAB,0
goto VOLVERZ
VOLVERZ return
END