Ok veo lo siguiente, a ver si por alli van los tiros
Cuando el switch esta abierto el pin_b0 esta en cero.
Luego al presionar el switch se entra a una rutina de retardo donde se espera 30 segundos y luego se activa el pin_b0, hasta alli deberia funcionar todo bien
Despues si dejas de presionar el switch el pin_b0 no se desactivara de inmediato, porque?
porque si en el momento en que tu dejes de presionar el switch el programa esta en la rutina de retardo de 30 segundos el programa no revisara el estado del switch hasta que termine de ejecutar la rutina de retardo, la duracion de esta dependera del momento en que liberastes el switch.
Otra cocita que se me paso decirte, si el switch estando abierto inicialmente lo presionas y sueltas, el led encendera luego de 30 segundos, pero como el tiempo que durara encendido estan corto que posible no lo veas por lo que te recomiendo colocar luego de on(pin_b0), un retardo de digamos 200 ms. y veras como parpadea el led.
Revisa eso y nos comentas si es asi.
Con respecto a la configuracion de las entradas como digitales eso el ccs lo hace de forma automatica por lo que no se requiere configurar el registro CMCON
Y problema resuelto!
Saludos