Establish SPI communication between PIC24FV32KA301 & MS5611

I am new to microcontrollers programming and I am trying to establish SPI communication between PIC24FV32KA301 and MS5611.
After a week of searching and learning about SPI I am still not able to communicate between those two and I would appreciate if someone could help me.
Am I missing something?

[code]/* Device header file /#if defined(XC16)
#include <xc.h>#elif defined(C30)
#if defined(PIC24E)
#include <p24Exxxx.h>
#elif defined (PIC24F)||defined (PIC24FK)
#include <p24Fxxxx.h>
#elif defined(PIC24H)
#include <p24Hxxxx.h>
#endif#endif
#include <stdint.h> /
Includes uint16_t definition /#include <stdbool.h> / Includes true/false definition /
#include “system.h” /
System funct/params, like osc/peripheral config /#include “user.h” / User funct/params, such as InitApp /
#include “uart1.h”
#include <libpic30.h> // __delayXXX() functions macros defined here
/
****************************************************************************// Global Variable Declaration //****************************************************************************/
/
i.e. uint16_t <variable_name>; /
/
****************************************************************************// Main Program //*****************************************************************************/
void SPIinit(){
//Master mode, 8bits
SPI1CON1bits.MSTEN = 1;
SPI1CON1bits.MODE16 = 0; //8bit
SPI1CON1bits.DISSCK = 0;

//SPI mode 0
SPI1CON1bits.CKP = 0;
SPI1CON1bits.CKE = 1;

//1:1 prescale
//SPI1CON1bits.SPRE = 0b111;
//SPI1CON1bits.PPRE = 0b11;

//Enable SPI operation
SPI1STATbits.SPIROV = 0;
SPI1STATbits.SPIEN = 1;}

char SPIsend(char command){

unsigned int buffer;

//wait until the device is available
while( SPI1STATbits.SPITBF);
// Initiate the exchange
SPI1BUF = command;

// Wait for the exchange to complete (or handle things via an ISR)
while( !SPI1STATbits.SPIRBF);

//Read from buffer
buffer = SPI1BUF;

//return first byte
return buffer & 0xff;}

int16_t main(void){

/* Configure the oscillator for the device */
ConfigureOscillator();

/* Initialize IO ports and peripherals */
InitApp();



//OSCCON = 0x11C0;   //Use primary, no divide FCY = 10Mhz/2 = 5Mhz
OSCCON = 0x11C0;
CLKDIV = 0x0000;     //do not divide


ANSELA = 0x0000;
ANSELB = 0x0000;

//UART
TRISBbits.TRISB2 = 1;
TRISBbits.TRISB7 = 0;

//SPI
TRISBbits.TRISB12 = 0; //SCK
TRISBbits.TRISB13 = 0; //SDO
TRISBbits.TRISB14 = 1; //SDI
TRISBbits.TRISB15 = 0; //CSB

LATBbits.LATB15 = 0; //CSB

//Disable Watch Dog Timer
RCONbits.SWDTEN = 0;

UART1Init(12);   //Initiate UART1 to 19200 at 8MHz OSCI
SPIinit();
__delay_ms(1000);

SPIsend(0x1E);
__delay_ms(3);


//pressure command
SPIsend(0x40);
__delay_ms(9);

//read
UART1PutChar(SPIsend(0x00));
UART1PutChar(SPIsend(0x00));
UART1PutChar(SPIsend(0x00));

while(1){

}}[/code]

I am using UART1PutChar to send results back to my computer and I am always getting the response 0xFF from MS5611, but if I connect SDO and SDI on board I get back the same data I am sending to MS5611 which means my code works but sensor(MS5611) is dead?