bueno,perdon por responder tan tarde,pero tenia bastantes cosas que hacer; ya resolvi el problema como me lo habian planteado, quedo asi:
////////////////////////
#int_rb
interrup_isr_b(){
output_high(PIN_C0);
if(input(PIN_B4)){
flag_rb4=1;
printf("rb4");
}else{
flag_rb4=0;
}
if(input(PIN_B5)){
flag_rb5=1;
printf("rb5");
}else{
flag_rb5=0;
}
if(input(PIN_B6)){
flag_rb6=1;
printf("rb6");
}else{
flag_rb6=0;
}
if(input(PIN_B7)){
flag_rb7=1;
printf("rb7");
}else{
flag_rb7=0;
}
}
/////////////////
void main() {
enable_interrupts(int_rb);
enable_interrupts(global);
set_tris_b(0xFF);
set_tris_a(0x00);
set_tris_c(0xFE);
printf("probando el programa Scientist");
do {
if (flag_rb4==1){
output_high(pin_a0);
}else{
output_low(pin_a0);
}
if (flag_rb5==1){
output_high(pin_a1);
}else{
output_low(pin_a1);
}
if (flag_rb6==1){
output_high(pin_a2);
}else{
output_low(pin_a2);
}
if (flag_rb7==1){
output_high(pin_a3);
}else{
output_low(pin_a3);
}
} while (TRUE);
}
la verdad bastante mas facil,a como lo venia haciendo, bueno,gracias amigos,una pregunta,como es mas eficiente,asi,o como en el ejemplo que habia puesto anteriormente con la operacion xor?