Hola Chicos,
Necesito una ayudita por favor, este còdigo lo realicè para una pequeña
alarma y funciona de la siguiente manera:
Tengo 3 zonas a controlar mediante 3 SW cuando es abierto cada uno de ellos
temporizan 1 seg, 2 seg y 3 seg, antes de esto verifico que todos esten normalmente abiertos
de lo contrario el led correspondiente parpadeara indicando que la puerta de esa
zona se encuentra normalmente cerrada,(esta es la logica que estoy aplicando aunque la puedo variar)
una vez cerrada se enciende el led de armado y la alarmita esta lista para trabajar.
Pero tengo un problema, no he logrado que cuando tenga mas de 1 puerta cerrada lo
muestre, es decir, por ejemplo si la puerta 1 y 2 estan cerradas los leds correspondientes
parpadearan y si abro la numero 2 se apague el led correspondiente.
En fin lo que quiero es que si los tres SW estan cerrados parpadeen los tres leds y si voy
abriendo uno a uno se apague el led en su caso y luego me muestre el led de armado encendido.
Alguna sugerencia chicos.
Besos
Helena
'"*******************************************************
'"* Name : ALARMA.BAS *
'"* Author : [select VIEW...EDITOR OPTIONS] *
'"* Notice : Copyright (c) 2005 [select VIEW...EDITOR OPTIONS] *
'"* : All Rights Reserved *
'"* Date : 11/06/06 *
'"* Version : 1.0 *
'"* Notes : UTILIZA EL PIC16F84 *
'"* : ALARMITA, HELENA *
'"********************************************************
ASM
device pic16F84A, pwrt_on, xt_osc, wdt_off, protect_off
ENDASM
LED1 var PortB.0 '"PIN 6
LED2 var PortB.1 '"PIN 7
LED3 var PortB.2 '"PIN 8
Arm VAR PortB.3
SW1 var PortB.5 '"PIN 17
SW2 var PortB.6 '"PIN 18
SW3 var PortB.7 '"PIN 1
low LED1
LOW LED2
LOW LED3
LOW SW1
LOW SW2
LOW SW3
TRISA = %11111111 '"PUERTO A COMO ENTRADAS
TRISB = %00000000 '"PUERTO B COMO SALIDAS
PORTB = 0
loop:
IF SW1 = 0 AND SW2 = 0 AND SW3 = 0 THEN inicio 'SI TODOS LOS SW ESTAN EN 0 VOY A INICIO
IF SW1 = 1 AND SW2 = 0 AND SW3 = 0 THEN pa1 'SI ALGUNO ESTA CERRADO ME ENVIA A LA RUTINA
IF SW1 = 0 AND SW2 = 1 AND SW3 = 0 THEN pa2 'PARA INDICAR QUE DEBO DEJAR ABIERTO TODOS LOS
IF SW1 = 0 AND SW2 = 0 AND SW3 = 1 THEN pa3 'SW
GOTO LOOP
pa1:
high led1 'PARPADEA SI SW1 ESTA CERRADO
pause 300
low led1
pause 300
goto loop
pa2:
high led2 'PARPADEA SI SW2 ESTA CERRADO
pause 300
low led2
pause 300
goto loop
pa3:
high led3 'PARPADEA SI SW3 ESTA CERRADO
pause 300
low led3
pause 300
goto loop
inicio:
PAUSE 300
HIGH ARM 'ENCIENDO LED EN PORTB.3 PARA INDICAR CIRCUITO ACTIVO
Pause 200
IF SW1 = 1 THEN
PAUSE 1000 'CUENTO 1 SEGUNDO
high led1 '"PERIMETRO 1
endif
IF SW2 = 1 THEN
PAUSE 2000 'CUENTO 2 SEGUNDOS
high led2 '"PERIMETRO 2
endif
IF SW3 = 1 THEN
PAUSE 3000 'CUENTO 3 SEGUNDOS
high led3 '"PERIMETRO 3
endif
goto inicio
goto loop