No me refería exactamente a eso. Mira, mejor lo pego aquí:
Codigo:
#include <16f84a.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(A)
#use fast_io(B)
void main()
{
int V1;
int V2;
set_tris_a(0b11111); //asignamos el puerto A como entrada
set_tris_b(0b00000000); //asignamos el puerto B como salida
while (true) //bucle infinito
{
if (input(PIN_A0)) output_high(PIN_B0); //si RA0=1, activamos relé por la salida RB0
if (input(PIN_A1))
{
V1=1; //si RA1=1, aparece 1 en RB1
output_high(PIN_B1);
}
if (input(PIN_A2))
{
V1=0; //si RA2=1, aparece 0 en RB1
output_low(PIN_B1);
}
if (input(PIN_A3))
{
V2=1; //si RA3=1, aparece 1 en RB2
output_high(PIN_B2);
}
if (input(PIN_A4))
{
V2=0; //si RA4=1, aparece 0 en RB2
output_low(PIN_B2);
}
if (V1&&V2) output_high(PIN_B0); //si RB1 y RB2=1, activamos relé por RB0
}
}
Observa que V1 y V2 son variables declaradas como int, y que cada vez que hay un comando output_xxx también asigno el valor a la variable que corresponda.
Además, observa que no es lo mismo = que ==. Mientras que el primero asigna, el segundo chequea.
Por último, te recomiendo que utilices sangrías en el programa, y lo harás más fácil de entender.
A ver, dejando el codigo, lo que veo es que los pulsadores estan mal conectados. Se tienen que conectar a traves de una resistencia de pull-un de 10k.
Codigo:
+5
|
|
<
< 10K
<
|
| - ------ pic
* pulsador
*
|
|
GND
UPS!!!! donde esta el post con la pregunta y esquema???