Tenía un procedimiento que machacaba el option_reg sin querer, y por eso el error. Con el osciloscopio pude perseguir el problema.
Me entro la neura porque iba ya un par de temas con el PIC16F88 que me habían desmoralizado. Primero, hay un pin con varias funciones que no puede ser entrada, sino únicamente salida, y darte cuenta de eso con la pcb montada jode un poco. El proteus modeliza mal ese pin. Segundo, al ver que no funcionaba lo de las pullup, fui a la datasheet y ví que estaban asociadas a una puerta lógica "con mogollon de pines" y me asusté. Al final he conseguido minimizar los problemas y tengo el prototipo a punto de pasar a la 1.0.
Por cierto, muy interesante lo que habéis comentado en este hilo. Gracias a todos.