a ver... una interrupcion es lo que la palabra indica... interrupcion...
imagina que esta en una funcion... por ejemplo esta...
___________________________________esto es la funcion de interrupcion por el puerto b4,7____________________________________________________
#int_rb
void cuenta_isr(){
if(comparacion==0x00)valor_puerto[0]=portb;else valor_puerto[1]=portb;
for(cuenta=4;cuenta<=7;++cuenta){
if((bit_test(valor_puerto[0],cuenta))!=(bit_test(valor_puerto[1],cuenta)))++resultado[cuenta-4];
}
comparacion=~comparacion;
if(flag_cambio==0xFF){printf(lcd_putc "\f1 %lu 2 %lu \n3 %lu 4 %lu " resultado[0],resultado[1],resultado[2],resultado[3]);
flag_cambio=0x00;
for(borrado=0;borrado<=3;++borrado){
resultado[borrado]=0;
}
}
}
______________________________________funcion interrumpida________________________________________________________
void ejemplo(){
for(;
{
delay_ms(10);
porta= efecto_luces;
efecto_luces=efecto_luces+1;
}
}
si hay una interrupcion... deja lo que estaba haciendo el pic en ese momento y atiende la funcion de la interrupcion, osea imagina que hay una interrupcion justo despues de la linea porta= efecto_luces; entonces dejaria de momento lo que esta haciendo y ejecutaria la funcion void cuenta_isr(), una vez acabada esta retomaria lo que estaba haciendo...
int j=0;
int i=0;
while(j==0) //mientras ningun interruptor sea pulsado
{
for (i=0;i<9;i++) //chequeo de todos los inerruptores
{
if(!(input(Interruptor[i]))) //interruptor contiene todos los interruptores y es de tamaño 9
{
qué hacer....;
j=1; //salgo del while
}
}
}
lo que haces en tu codigo es un bucle infinito....