Hola amigos,
Es la primera vez que participo en este foro y necesito de sus experiencias
en PICBASIC PRO ya que hasta ahora comienzo y me ha parecido fabuloso este
programa. Bueno estoy intentando hacer una pequeña alarma con un pic16f84
y les describo lo que hasta el momento hace.
Tengo tres leds PORTB.0, PORTB.1, PORTB.2 y cada uno tiene asignado un tiempo
de temporización para PORTB.0 (3 SEGUNDOS), PORTB.1 (6 SEGUNDOS), PORTB.2 (6 SEGUNDOS).
La temporizacion de cada uno depende de si los SW estan en 1, cuando el circuito se
energiza pasa directamente a LOOP, pero si detecta que alguno de los puertos anteriores
se encuentra en 1 lo indica y el led parpadea cada 200 ms, aca esta el primer problema ya que
si SW1 esta en 1 comienza a parpadear LED1 pero si SW1 y SW2 estan en 1 el segundo ni
el tercer LED se encienden y la idea es que cada uno funcione por separado.
Bueno esto es lo que he hecho hasta el momento, pero quiero lo siguiente:
Un led en PORTB.7 que se encienda cuando termine la temporizacion de cualquier led, si al
encender el circuito estan todos los SW a l a medida que se pongan en cero cada uno se vaya
apagando.
Lo que pretendo es que los leds muestren el estado abierto o cerrado de forma independiente
al energizar el circuito.
Si alguien puede darme una guia de como hacerlo se lo agradecería.
Saludos
Morfeus
Este es el código
"****************************************************************
"* Name : ALARMA.BAS *
"* Author : [select VIEW...EDITOR OPTIONS] *
"* Notice : Copyright (c) 2005 [select VIEW...EDITOR OPTIONS] *
"* : All Rights Reserved *
"* Date : 16/08/05 *
"* Version : 1.0 *
"* Notes : UTILIZA EL PIC16F84 *
"* : *
"****************************************************************
LED1 var PortB.0 "PIN 6
LED2 var PortB.1 "PIN 7
LED3 var PortB.2 "PIN 8
SW1 var PortA.0 "PIN 17
SW2 var PortA.1 "PIN 18
SW3 var PortA.2 "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
LOOP0:
IF SW1 = 0 AND SW2 = 0 AND SW3 = 0 THEN LOOP
IF SW1 = 1 AND SW2 = 0 AND SW3 = 0 THEN LOOP1
IF SW1 = 1 AND SW2 = 1 AND SW3 = 0 THEN LOOP2
IF SW1 = 1 AND SW2 = 1 AND SW3 = 1 THEN LOOP3
LOOP:
IF SW1 = 1 THEN
PAUSE 3000
high led1 "PERIMETRO 1
ENDif
IF SW2 = 1 THEN
PAUSE 6000
high led2 "PERIMETRO 2
ENDIF
IF SW3 = 1 THEN
PAUSE 8000
high led3 "PERIMETRO 3
ENDIF
GOTO LOOP
LOOP1:
high led1
PAUSE 200
LOW led1 "PARPADEA LED1
pause 200
GOTO LOOP0
LOOP2:
high led2
pause 200
low led2
pause 200 "PARPADEA LED2
goto LOOP0
LOOP3:
high led3
pause 200
low led3
pause 200 "PARPADEA LED3
GOTO LOOP0