ok, todo solucionado, una vez mas los programas y los datasheets demuestran no tener erratas y ser yo quien se equivoca. Cuando escribimos con el MPLAB la intruccion MOVWF o MOVFW parece que son dos variantes de la misma instruccion y que ninguna de las dos afecta al bit Z. La instruccion MOVFW, es transformada por el MPLAB en MOVF, y por eso el codigo funciona perfectamente salvo esta pequña variacion. En fin, tendre que hacer algun apaño en mi codigo.