Este es el codigo, a parte de que el led no parpadea, en la funcion menu_config solo me hace el primer if por mas veces que pulso el boton. Alguien sabe decirme porque?
Codigo:
#include <16f876.h>
#org 0x1F00, 0x1FFF void loader16F876(void) {}
#use delay (clock=4000000)
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD
#byte port_b=6
#byte port_a=5
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
static int tecla;
void menu_config (void)
{
int var=2;
///////////////boton abajo////////////////////
if (tecla==1 && var==2)
{
tecla=0;
var=3;
output_high(pin_a1);
}
if (tecla==1 && var==3)
{
tecla=0;
var=4;
output_low(pin_a1);
}
if (tecla==1 && var==4)
{
tecla=0;
var=5;
output_high(pin_a2);
}
if (tecla==1 && var==5)
{
tecla=0;
var=6;
output_low(pin_a2);
}
if (tecla==1 && var==6)
{
tecla=0;
var=7;
output_high(pin_a3);
}
if (tecla==1 && var==7)
{
tecla=0;
var=8;
output_low(pin_a3);
}
if (tecla==1 && var==8)
{
tecla=0;
var=9;
}
////////////////////////// tecla arriba /////////////////////////////
if (tecla==2)
{
tecla=1;
var=var-2;
}
return;
}
#int_rb
void rb (void)
{
delay_ms(100);
if(!(port_b^0xF0))
return;
if (!input(pin_b4))
{
tecla=1;
return;
}
if (!input(pin_b5))
{
tecla=2;
return;
}
if (!input(pin_b6))
{
tecla=3;
return;
}
if (!input(pin_b7))
{
tecla=4;
return;
}
}
void main()
{
set_tris_a(0);
set_tris_b(0xF0);
set_tris_c(0);
enable_interrupts(global);
enable_interrupts(int_rb);
while(1)
{
output_high (pin_a0);
delay_ms(1000);
output_low (pin_a0);
menu_config();
}
}