Entradas condicionadas con pic16f84

#1
DISCULPEN
LO QUE TRATO DE HACER CON ESTE CODIGO Y NO SE QUE MAS HACERLE...PARA QUE AL COMBINAR LAS ENTRADAS ME DEN LOS "N" DESTELLOS Y NO VUELVA A PRENDER EL LED... ASI SUCESIVAMENTE...

¿que le agrego?
PROGRAMA:

Código:
G VAR BYTE
DIODO VAR PORTB.4
X1 VAR PORTB.2
X2 VAR PORTB.3  
INICIO:
    IF X1=0 AND X2=0 THEN INICIO
    IF X1=0 AND X2=1 THEN COMB1
    IF X1=1 AND X2=0 THEN COMB2
    IF X1=1 AND X2=1 THEN COMB3
COMB1:                   
    FOR G= 1 TO 4
    HIGH DIODO
    PAUSE 500
    LOW DIODO
    PAUSE 500
    NEXT G
COMB2:
    FOR G= 1 TO 6
    HIGH DIODO
    PAUSE 500
    LOW DIODO
    PAUSE 500
    NEXT G
COMB3:
    FOR G= 1 TO 8
    HIGH DIODO
    PAUSE 500
    LOW DIODO
    PAUSE 500
    NEXT G
END
 
Última edición por un moderador:
#2
si tiras un diseño del circuito te podria ayudar.. no entiendo ni pisca lo que quieres hacer-..
 
#3
si puedes adjunta el circuito pero creo que lo primero a descartar es k estes usando interuprores que los dejes precionados y por eso no queda colgado en el bucle INICIO:
IF X1=0 AND X2=0 THEN INICIO. porfavor trata de ser mas explicito en la funcion de tu circuito y con gusto te ayudaremos adios
 
#4
Hola, no sé lo que quieres hacer, pero lo que veo que en el caso de que X1=0 y X2=1 ejecutará las instrucciones de Comb1, pero cuando termines éstas, se ejecutarán el restos de ellas, ya que no hay ningún salto para que no se cumplan las demás, salvo que tú quieras que se ejecuten todas. Igual que la primera etiqueta Inicio, por precaución, aunque no debe haber problemas, también le pondría una sentencia de salto al terminar el último If...Then. Pero lo dicho, no sabemos exactamente que quieres hacer.
Gracias y saludos.
 
#5
Gracias a los que responideron
tratare de explicarme

lo que quiero hacer con el codigo, en un pic16f84 tengo dos entradas y una salida.
Sabemos que hay 4 posibles combinaciones que son:
0 0
0 1
1 0
1 1

x1 representa entrada 1
x2 representa entrada 2

al combinar x1=0 and x2=0 que se vaya a inicio eso si esta bien
posteriormente al combinar x1=0 and x2=1 deberia ejecutar lo que esta en comb1.
Luego debo hacer las otras combinaciones x1=1 and x2=0 deberia ejecutar comb2.
Y asi mismo con la combinacion x1=1 and x2=1 deberia ejecutar lo que esta en comb3.

Eso es lo que quiero hacer con este codigo!!!

Código:
G var byte
diodo var portb.4
x1 var portb.1
x2 var portb.2  
inicio
    if x1=0 and x2=0 then inicio
    if x1=0 and x2=1 then comb1
    if x1=1 and x2=0 then comb2
    if x1=1 and x2=1 then comb3
comb1                   
    for g= 1 to 4
    high diodo
    pause 500
    low diodo
    pause 500
    next g
    goto inicio
comb2
    for g= 1 to 6
    high diodo
    pause 500
    low diodo
    pause 500
    next g
    goto inicio
comb3
    for g= 1 to 8
    high diodo
    pause 500
    low diodo
    pause 500
    next g
    goto inicio
end

espero sus respuestas
gracias:)
 
Última edición por un moderador:
#6
lo que te pasa en tu programa es que tus subrutinas no tienen el finel endif tienes que agregarlas para que tu pic vuelva a escanear las entradas:)
 
#7
Hola, en la forma que ha puesto lo if...Then, no hace falta poner lo Endif.

PHP:
G var byte
diodo var portb.4
x1 var portb.1
x2 var portb.2
 
inicio:
    if x1=0 and x2=0 then inicio
    if x1=0 and x2=1 then comb1
    if x1=1 and x2=0 then comb2
    if x1=1 and x2=1 then comb3

comb1:
    for g= 1 to 4
    high diodo
    pause 500
    low diodo
    pause 500
    next g
Comprobacion1:
if x1=0 and x2=0 then inicio
    goto Comprobacion1

comb2:
    for g= 1 to 6
    high diodo
    pause 500
    low diodo
    pause 500
    next g
Comprobacion2:
if x1=0 and x2=0 then inicio
    goto Comprobacion2

comb3:
    for g= 1 to 8
    high diodo
    pause 500
    low diodo
    pause 500
    next g
Comprobacion3:
if x1=0 and x2=0 then inicio
    goto Comprobacion3

end
Las etiquetas van seguidas de dos puntos, sino, no la reconocerá. Si lo que utilizas son pulsadores, te debe valer lo que has escrito, ya que con los retrasos que tienes, te deben dar tiempo a soltar los pulsadores, pero si utilizas interruptores, debes poner el programa como te lo he puesto, ya que sino, se seguirá repitiendo continuamente la opción elegida, aunque también te valen para pulsadores. Lo dicho, las etiquetas seguida de dos puntos, pero no cuando se llaman con un goto.
Gracias y saludos.
 
Última edición por un moderador:

Temas similares

Arriba