Despues de estar trasteando con la libreria del teclado y hacerla conseguir andar mediante "poleo", quise probar con interrupción, pero al ver que no iba me puse a probar la interrupción y lo que ocurre es bastante estraño. Sin haber nada externo, salta a la interrupcion una y otra vez sin parar. No soi capaz de encontrarle explicacion puesto que hice el programa anteriormente en ASM y no tube problemas.
Codigo:
unsigned int k=1;
#int_rb // Interupcion cambio de estado RB4:7
void control_rb() {
printf(lcd_putc, "%d
", k);
k=++k;
delay_ms(1000); }
void main() {
lcd_init();
port_b_pullups(TRUE);
//kbd_init();
printf(lcd_putc, "fPreparado (int_RB)
"
;
delay_ms(1500);
printf(lcd_putc, "f"
;
enable_interrupts(int_rb);
enable_interrupts(global);
sleep(); }
Cambia la subrutina de interrupción como te indico a continuación.
Codigo:
#int_rb // Interupcion cambio de estado RB4:7
void control_rb()
{
char auxiliar;
printf(lcd_putc, "%d
", k);
k=++k;
delay_ms(1000);
auxiliar = input_B();
output_B(auxiliar);
}
Pruebalo, y cuentame como te ha ido.
Salu2
Adrian.