No es necesario usar otro pic.
En vez de usar delay_ms(xxxx), haz una funcion que llame a delay_ms(100) tantas veces como necesites y en medio de esa funcion comprueba el estado del boton, de paso ya tiene el antirrebotes armado y todo.
Cuando detectas el boton pulsado marcas un bit que utilizas como bandera, y esa bandera es la que compruebas en el While.
Cada vez que pases por el while reseteas esa bandera y ya deberia funcionar como quieres...
Es facil !! ... escribirlo!!
Esa funcion seria algo asi:
int1 bandera_puls; //variable tipo bit, va declaracion como global, antes del main...
//esta funcion permite temporizar segundos y a la vez detectar un boton en tiempos iguales siempre.
void delay_cent_sec (int secyfrac)
{
int loops;
for (loops=0;loops<=secyfrac;loops++)
{
delay_ms(100);
bandera_puls=input(pin_B3);
}
}
Aqui se llama a la funcion:
delay_cent_sec (65); // temporiza 6,5 segundos (el maximo de delay_ms es 65535, por eso no pasar de 65
de la ayuda de CCS
Syntax:
delay_ms (time)
Parameters:
time - a variable 0-65535(int16) or a constant 0-65535