Autor Tema: Alarma  (Leído 1669 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado morfeus

  • PIC12
  • **
  • Mensajes: 78
Alarma
« en: 19 de Agosto de 2005, 20:58:00 »
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
   
   
     
   
   
   
 
       
   
   


   
   

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Alarma
« Respuesta #1 en: 27 de Agosto de 2005, 08:41:00 »
Hola:

Espero haberte entendido bien... trata haciendo esto:

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
goto loop0

tu no tienes esto  goto loop0 esto es para que te este preguntando siempre por las condiciones que tu describes o sino continua a la siguiente linea que es esta:

LOOP:
IF SW1 = 1 THEN
PAUSE 3000
high led1 "PERIMETRO 1
ENDif

y basta que sw1 este en uno para que ejecute esa accion.... a lo que me refiero o mejor dicho a lo que entendi lo que deverias hacer es que vaya al loop determinado solamente cuando se te den las condiciones que estarian dentro del LOOP0....

Espero hacerme entender...

Desconectado morfeus

  • PIC12
  • **
  • Mensajes: 78
RE: Alarma
« Respuesta #2 en: 28 de Agosto de 2005, 09:28:00 »
RebotadoHola,

Gracias por tu ayuda, voy a hacer el cambio para ver como funciona.

Saludos

Morfeus


 

anything