Bueno parece que ya empieza a funcionar. El programa ha quedado asi:
#include <16f84a.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(A)
#use fast_io(B)
#byte port_a=5
#byte port_b=6
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
port_b=0; //ponemos el puerto B a cero
while (true) //bucle infinito
{
if (input(PIN_A0)) output_high(PIN_B0); //si RA0=1, activamos relé por la salida RB0
{
if (input(!PIN_A0)) output_low(PIN_B0); //si RA0=0, desactivamos 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
{
if (!V1&&V2) output_low(PIN_B0); //si RB1=0 y RB2=1, desactivamos relé por RB0
{
if (V1&&!V2) output_low(PIN_B0); // si RB1=1 y RB2=0, desactivamos rele´por RB0
{
if (!V1&&!V2) output_low(PIN_B0); //si RB1 y RB2=0, desactivamos relé por RB0
}
}
}
}
}
Vereis que he añadido algunas lineas mas porqué el led no se apagaba cuando no se cumplian las condiciones.
El esquema que utilizo es el que hay mas arriba.
Sólo hay un problema, y es que al cerrar el interruptor de RA0 el led se enciende pero parpadea indiscriminadamente, es decir no con una frecuencia estable.
Que puede ser?
Saludos