Problem with my program with libraries adafruit_gps.h and SD.h

(My message was too long ...)

But this program doesn't work's :

#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>
#include <math.h>
#include <SD.h>

//-------------------------------VARIABLES------------------------------------------------

     double vitesseTemp = 0;
     double vitesseMax = 0;
     double vitesseTotale = 0;
     double vitesseMoyenne = 0; 
     double distance = 0;
     double temps = 0;
     double heures1 = 0;
     double minutes1 = 0;
     double secondes1 = 0;
     double heuresTot1 = 0;
     double heures2 = 0;
     double minutes2 = 0;
     double secondes2 = 0;
     double heuresTot2 = 0;
     double m = 0;
     double s = 0;
     double lat = 0;
     double latDm = 0;
     double lon = 0;
     double lonDm = 0;
     
     int p = 1;
     int H = 0;
     int M = 0;
     int S = 0;
     int k = 0;
     int startMap = 0;
     int latEnt = 0;
     int lonEnt = 0;  
    
//--------------------------------------------------------------------------------------     
     
const int chipSelect = 4;     
SoftwareSerial mySerial(8, 7);

Adafruit_GPS GPS(&mySerial);
 
#define GPSECHO  false     

boolean usingInterrupt = false;
void useInterrupt(boolean);

void setup()//---------------------------VOID-SETUP-------------------------------------  
{
  Serial.begin(115200);

  GPS.begin(9600);
  pinMode(10, OUTPUT);
  
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ);
  GPS.sendCommand(PGCMD_ANTENNA);

  useInterrupt(true);

  delay(1000);
  
  mySerial.println(PMTK_Q_RELEASE);
}

SIGNAL(TIMER0_COMPA_vect) {
  char c = GPS.read();
#ifdef UDR0
  if (GPSECHO)
    if (c) UDR0 = c;  
#endif
}

void useInterrupt(boolean v) {
  if (v) {
    OCR0A = 0xAF;
    TIMSK0 |= _BV(OCIE0A);
    usingInterrupt = true;
  } else {
    TIMSK0 &= ~_BV(OCIE0A);
    usingInterrupt = false;
  }
  
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}

uint32_t timer = millis();
void loop()//-------------------------------VOID-LOOP--------------------------------------
{  
  if (! usingInterrupt) {
    char c = GPS.read();
    if (GPSECHO)
      if (c) Serial.print(c);
  }
  
  if (GPS.newNMEAreceived()) {
    if (!GPS.parse(GPS.lastNMEA()))   
      return; 
  }
  if (timer > millis())  timer = millis();
  if (millis() - timer > 3000) { 
    timer = millis();
 
//------------------------IF-FIX-------------------------------------------------------------
    if (GPS.fix) {
//-------------------------DDD---------------------------------------------------------------     
    lat = GPS.latitude;
    lat = lat/100;
    latEnt = floor(lat);
    latDm = lat - latEnt;
    latDm = latDm * 1000;
    latDm = latDm/6;
    latDm = latDm/100;
    lat = latEnt + latDm;

    lon = GPS.longitude;
    lon = lon/100;
    lonEnt = floor(lon);
    lonDm = lon - lonEnt;
    lonDm = lonDm * 1000;
    lonDm = lonDm/6;
    lonDm = lonDm/100;
    lon = lonEnt + lonDm;

//---------------------------VITESSE---------------------------------------------------------------------    
    vitesseTemp = GPS.speed*1.85;
    if(vitesseMax < vitesseTemp)
      {
        vitesseMax = vitesseTemp;
      }
     
    vitesseTotale = vitesseTotale + vitesseTemp;
    vitesseMoyenne = vitesseTotale / p;
    p++;
    
    //---------------------------HEURES----------------------------------------------------------------------
    if(heuresTot1 == 0)
    {
    heures1 = GPS.hour;
    minutes1 = GPS.minute;
    secondes1 = GPS.seconds;
    heuresTot1 = heures1 + minutes1/60 + secondes1/3600;
    }
   
    heures2 = GPS.hour;
    minutes2 = GPS.minute;
    secondes2 = GPS.seconds;
    heuresTot2 = heures2 + minutes2/60 + secondes2/3600;
   
//-----------------------------------DUREE----------------------------------------------------------------
    
    temps = heuresTot2 - heuresTot1;
 
    H = floor(temps);
    m = temps - H;
    m = m * 60;
    M = floor(m);
    s = m - M;
    s = s * 60;
    S = floor(s); 
    
//----------------------------------DISTANCE--------------------------------------------------------------
    distance = vitesseMoyenne * temps;
    }
  }
} 
      
  File dataFile = SD.open("map.htm", FILE_WRITE); 
      dataFile.print("var myLatlng");dataFile.print(k); dataFile.print("= new google.maps.LatLng("); dataFile.print(lat, 6);dataFile.print(" , "); dataFile.print(lon, 6); dataFile.println(");");
      dataFile.print("var marker"); dataFile.print(k); dataFile.println("= new google.maps.Marker({");
      dataFile.print("position: myLatlng"); dataFile.print(k); dataFile.println(',');
      dataFile.println("map: map,");
      dataFile.print("title:"); dataFile.print("\""); dataFile.print(vitesseTemp); dataFile.println("\"});");
      k++;
      dataFile.close();
    }
  }
}

Library Adafruit_GPS : GitHub - adafruit/Adafruit_GPS: An interrupt-based GPS Arduino library for no-parsing-required use

Please help me, i have a big project tommorrow ...
Thank's for read my post !