Si en la simulacion funciona, si es que estas usando alguna, entonces puede ser los FUSES o bits de configuracion.
Si no lo probaste en la simulacion, entonces puede ser el WDT, o MCLR, deberias tratar de anularlos. Proba mas que nada deshabilitar toda proteccion en los bits de configuracion. Y de ahi ver si funciona. Tambien puede ser que se ejecute el While, pero no tengas configuradas correctamente los puertos, si es que te basas en ellos como para saber si funcionan o no.