Si declaras "pin" como constante (const), declaras esa variable como inalterable, además en C, si pasas un nombre de campo en vez de un puntero, en realidad se está pasando una copia de ese campo, por lo tanto tampoco te va a cambiar (como tú esperas) en la función wait_to_high.
Pasa PORT_B5 como la dirección que almacena ese campo (&PORT_B5), y recíbela en la función como un puntero (int16 *pin).