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 
  