A ver si podeis echarme una mano, no se porque no me funciona una seleccion con dos entradas A5 y A4
Os subo el programa y el ISIS
Mil gracias
#include <16F628.h>
#use delay(clock=20000000)
#fuses HS,NOWDT,MCLR,NOPROTECT,BROWNOUT,NOLVP
static int16 timer_count=0; // timer1 sobrecarga del contador
byte valor; //valor de seleccion de los dos pines, va del 0 al 3, es decir 4 posibilidades
#INT_EXT
void ext_isr()
{
timer_count=0; //resetea el contador del timer1
}
#int_timer1 //Esta funcion es llamada cada vez que
void timer_isr() { //timer1 sobrepasa (2^16).
timer_count++;
}
void main() {
setup_timer_1( T1_INTERNAL | T1_DIV_BY_8 ); //inicializa timer1
enable_interrupts(INT_TIMER1); //activa la interrupcion de timer1
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
ext_int_edge(H_TO_L); //inicializa la interrupcion por cambio de estado de B0, Activa a nivel bajo
enable_interrupts(INT_EXT); //activa la interrupcion externa de B0
enable_interrupts(GLOBAL);
#use fast_io (A)
#use fast_io (B)
loop:
{
valor =(input(PIN_A4))+(input(PIN_A5)*2);
switch(valor)
{
case 0:
{
output_high(PIN_B0);
output_low(PIN_B1);
output_low(PIN_B2);
output_low(PIN_B3);
}
break;
case 1:
{
{
output_high(PIN_B1);
output_low(PIN_B0);
output_low(PIN_B2);
output_low(PIN_B3);
}
}
break;
case 2:
{
output_high(PIN_B2);
output_low(PIN_B0);
output_low(PIN_B1);
output_low(PIN_B3);
}
break;
case 3:
{
{
output_high(PIN_B3);
output_low(PIN_B0);
output_low(PIN_B1);
output_low(PIN_B2);
}
break;
}
}
}
goto loop; //bucle de vuelta, espera a que se requiera una interrupcion
}