también puedes comparar, primero lees el puerto y si es mayor a 0x1f lo descartas si es menor o igual pues sigues con tu programa.
No estoy seguro de eso. Suponiendo que deseo conocer, digamos el estado del bit 0, y el instante que realice la lectura, el bit 7 esté en 1 lógico, eso me daría un valor mayor a 0x1F, y por esa razón desecharía una lectura válida.
Es más, como menciona que usa el UART, y dicho módulo este en espera de lectura o escritura de datos, los bit 7 y 6 estarían permanentemente en 1 lógico y por lo tanto el valor siempre sería mayor que 0x1F y nunca podría obtener el valor de los otros bits.