SPI problem with PIC18LF27K42
I found it. 

unsigned char SPI_Read (void){
    SPI1STATUSbits.CLRBF = 1;   // clearing the RXFIFO and TXFIFO buffers, related to
                                // SPI1RXB and SPI1TXB registers respectively
    SPI1TCNTH = 0;
    SPI1TCNTL = 1;         // One byte transfert counter
    SPI1CON0bits.EN = 1;   // enable SPI1 peripheral
    SPI1TXB = 0xFF;        // write the data into the output buffer
    while (SPI1CON2bits.BUSY); // wait until Reception is completed
    SPI1CON0bits.EN = 0;    // disable SPI1 peripheral

    return (SPI1RXB);       // return with byte read 
}


Needs to change to this.

unsigned char SPI_Read (void){
    SPI1STATUSbits.CLRBF = 1;   // clearing the RXFIFO and TXFIFO buffers, related to
                                // SPI1RXB and SPI1TXB registers respectively
    SPI1TCNTH = 0;
    SPI1TCNTL = 1;         // One byte transfert counter
    SPI1CON0bits.EN = 1;   // enable SPI1 peripheral
    SPI1TXB = 0xFF;        // write the data into the output buffer
    while (SPI1CON2bits.BUSY); // wait until Reception is completed
    unsigned char buff = SPI1RXB; //Store the buffer value before disabling the module. 
    SPI1CON0bits.EN = 0;    // disable SPI1 peripheral

    return (buff);       // return with byte read 
}


When you disable the SPI module the buffers are cleared. So you have to store the buffer value before disabling the module. From the data sheet. 


  Setting the CLRBF bit of
  SPIxSTATUS resets the occupancy for both FIFOs,
  emptying both buffers. The FIFOs are also reset by disabling the SPI module.